## Flutter Self Service Index

Flutter provides multiple functionality through self-service services. Most of these services are available to any member of the Flutter GitHub organization.


### Audiences


<table>
  <tr>
   <td><strong>Name</strong>
   </td>
   <td><strong>Description</strong>
   </td>
  </tr>
  <tr>
   <td>Flutter contributors
   </td>
   <td>Anyone contributing to the flutter organization independently of membership to the organization.
   </td>
  </tr>
  <tr>
   <td>Flutter organization members
   </td>
   <td>[Anyone with write access to the flutter organization resources.](./contributing/Contributor-access.md)
   </td>
  </tr>
  <tr>
   <td>Googlers
   </td>
   <td>Members of the Flutter Organization that are also Googlers.
   </td>
  </tr>
  <tr>
   <td>Flutter organization administrators
   </td>
   <td>Members of the Flutter organization that have write access to the organization's settings.
   </td>
  </tr>
</table>



### Infrastructure


<table>
  <tr>
   <td><strong>Service</strong>
   </td>
   <td><strong>Description</strong>
   </td>
   <td><strong>Audience</strong>
   </td>
   <td><strong>Documentation</strong>
   </td>
   <td><strong>Location</strong>
   </td>
  </tr>
  <tr>
   <td>.ci.yaml
   </td>
   <td>Configuration file to instruct the Flutter Infrastructure which tasks to use to validate commits in a given repository. ".ci.yaml" is read from the top level folder of every supported repository.
   </td>
   <td>Flutter contributors
   </td>
   <td><a href="https://github.com/flutter/cocoon/blob/main/CI_YAML.md">Link</a>
   </td>
   <td>Top level folder of the GitHub repositories. E.g. <a href="https://github.com/flutter/flutter/blob/main/.ci.yaml">flutter/flutter</a>.
   </td>
  </tr>
  <tr>
   <td>Engine build configurations
   </td>
   <td>Configuration files to describe Flutter Engine builds and tests.
   </td>
   <td>Flutter contributors
   </td>
   <td><a href="https://github.com/flutter/flutter/blob/main/engine/src/flutter/ci/builders/README.md">Link</a>
   </td>
   <td><a href="https://github.com/flutter/flutter/tree/main/engine/src/flutter/ci/builders">engine/src/flutter/ci/builders</a> in the <a href="https://github.com/flutter/flutter/tree/main/engine">flutter engine</a> folder contains all the current configuration files.
   </td>
  </tr>
  <tr>
   <td>Autosubmit
   </td>
   <td>GitHub application that auto-submits pull requests that meet the approval criteria.
   </td>
   <td>Flutter organization administrators
   </td>
   <td><a href="go/enabling_autosubmit">Link</a>
   </td>
   <td>The application code is available in the <a href="https://github.com/flutter/cocoon/tree/main/auto_submit">flutter/cocoon</a> repository.
   </td>
  </tr>
  <tr>
   <td>FirebaseLab tests
   </td>
   <td>Special type of tests configured through .ci.yaml that use resources from FirebaseLab
   </td>
   <td>Flutter contributors
   </td>
   <td>[Link](./infra/Flutter-FirebaseLab-Tests.md)
   </td>
   <td>These configurations go directly in the .ci.yaml file of <a href="https://github.com/flutter/flutter">flutter/flutter</a> repository.
   </td>
  </tr>
  <tr>
   <td>Codesigning
   </td>
   <td>Add metadata to engine artifacts for code signing infrastructure to sign them.
   </td>
   <td>Flutter contributors
   </td>
   <td>[Link](./engine/release/Code-signing-metadata.md)
   </td>
   <td>GN files and global generator scripts in the <a href="https://github.com/flutter/flutter/tree/main/engine">flutter engine</a> folder.
   </td>
  </tr>
  <tr>
   <td>Emulators support
   </td>
   <td>Using android emulators from tests.
   </td>
   <td>Flutter contributors
   </td>
   <td>[Link](./platforms/android/Testing-Android-Changes-in-the-Devicelab-on-an-Emulator.md)
   </td>
   <td>Flutter GitHub Wiki page under the “Android Development” Section.
   </td>
  </tr>
  <tr>
   <td>Rerun GitHub presubmit test using command line
   </td>
   <td>Run presubmit tasks using `reset-try-task` end point and gcloud CLI.
   </td>
   <td> Googlers
   </td>
   <td><a href="https://g3doc.corp.google.com/company/teams/flutter/infrastructure/playbook.md?cl=head#manually-trigger-try-pre-submit-builds">Link</a>
   </td>
   <td>Source code is available <a href="https://github.com/flutter/cocoon/blob/main/app_dart/lib/src/request_handlers/reset_try_task.dart">here</a>
   </td>
  </tr>
  <tr>
   <td>Rerun postsubmit test from Flutter build dashboard
   </td>
   <td>Re-run postsubmit tasks from the go/flutter-dashboard.
   </td>
   <td> Googlers
   </td>
   <td><a href="https://screenshot.googleplex.com/3CgvqjbPEuoLzXs">Link</a>
   </td>
   <td>Source code is available <a href="https://g3doc.corp.google.com/company/teams/flutter/go/flutter-dashboard">go/flutter-dashboard</a>
   </td>
  </tr>
  <tr>
   <td>Run a test multiple times in parallel via LED
   </td>
   <td>Run a shard test against a pull request to validate changes/fixes in parallel.
   </td>
   <td> Googlers
   </td>
   <td><a href="https://g3doc.corp.google.com/company/teams/flutter/infrastructure/playbook.md?cl=head#run-a-shard-multiple-times-in-parallel-via-led">Link</a>
   </td>
   <td>N/A
   </td>
  </tr>
  <tr>
   <td>Create a CIPD package
   </td>
   <td>Create and add the package build scripts to cocoon to enable auto building and uploading to flutter CIPD namespaces.
   </td>
   <td> Flutter contributors
   </td>
   <td><a href="https://github.com/flutter/cocoon/tree/main/cipd_packages">Link</a>
   </td>
   <td>Flutter public CIPD namespace: <a href="https://chrome-infra-packages.appspot.com/p/flutter">flutter</a>
   </td>
  </tr>
  <tr>
   <td>View Infra SLO metrics
   </td>
   <td>DataSite with links to a collection of Engineering Productivity dashboards including infrastructure, release and rolls.
   </td>
   <td> Googlers
   </td>
   <td><a href="https://data.corp.google.com/sites/dash_infra_metrics_datasite/infra_slo_metrics/">Link</a>
   </td>
   <td>N/A
   </td>
  </tr>
</table>



### Release


<table>
  <tr>
   <td><strong>Service</strong>
   </td>
   <td><strong>Description</strong>
   </td>
   <td><strong>Audience</strong>
   </td>
   <td><strong>Documentation</strong>
   </td>
   <td><strong>Location</strong>
   </td>
  </tr>
  <tr>
   <td>Create non flutter release candidate branches
   </td>
   <td>Self service to create release candidate branches used by products different than flutter
   </td>
   <td> Googlers
   </td>
   <td><a href="https://g3doc.corp.google.com/company/teams/flutter/go/flutter-self-service-branches">Link</a>
   </td>
   <td>N/A
   </td>
  </tr>
  <tr>
   <td>Request 1P cherry picks
   </td>
   <td>Request approvals for cherry picks to release candidate branches
   </td>
   <td> Googlers
   </td>
   <td><a href="https://g3doc.corp.google.com/company/teams/flutter/go/flutter-cp">Link</a>
   </td>
   <td><a href="https://g3doc.corp.google.com/company/teams/flutter/github.com/flutter/flutter">flutter/flutter</a>
   </td>
  </tr>
  <tr>
   <td>G3 Fixes
   </td>
   <td>Apply G3 fixes that are automatically applied during the roll process.
   </td>
   <td> Googlers
   </td>
   <td><a href="https://g3doc.corp.google.com/company/teams/flutter/go/flutter-life-of-a-pr#g3fix">Link</a>
   </td>
   <td>N/A
   </td>
  </tr>
  <tr>
   <td>Single command releases
   </td>
   <td>Creating a third party flutter release with multi party approvals.
   </td>
   <td> Release Engineering
   </td>
   <td><a href="https://g3doc.corp.google.com/company/teams/flutter/go/flutter-release-workflow#push">Link</a>
   </td>
   <td>N/A
   </td>
  </tr>
</table>


### Security


<table>
  <tr>
   <td><strong>Service</strong>
   </td>
   <td><strong>Description</strong>
   </td>
   <td><strong>Audience</strong>
   </td>
   <td><strong>Documentation</strong>
   </td>
   <td><strong>Location</strong>
   </td>
  </tr>
  <tr>
   <td>Vulnerability scanning and fixes validation
   </td>
   <td>Automatic scanning of c, c++ third party dependencies and vulnerability. fix validation.
   </td>
   <td>Flutter organization members
   </td>
   <td><a href="https://github.com/flutter/flutter/security/code-scanning">Link</a>
   </td>
   <td><a href="https://github.com/flutter/flutter/security">Flutter GitHub security tab</a>.
   </td>
  </tr>
  <tr>
   <td>Request write access to non-prod GCP projects
   </td>
   <td>
   </td>
   <td> Googlers
   </td>
   <td><a href="https://g3doc.corp.google.com/company/teams/flutter/security/gcp_security/aod_roles_for_dash_projects.md?cl=head#available-groups">Link</a>
   </td>
   <td>N/A
   </td>
  </tr>
  <tr>
   <td>Rolling non-auto-updating 3p mirrored deps
   </td>
   <td>Dependencies on mirrors that do not automatically roll changes from their upstream might need to be manually rolled
   </td>
   <td> Googlers
   </td>
   <td><a href="https://g3doc.corp.google.com/company/teams/flutter/security/third_party_deps/index.md?cl=head#rolling-mirrored-dependencies">Link</a>
   </td>
   <td>N/A
   </td>
  </tr>
</table>


Googlers can access the internal version using [go/flutter-self-service](http://go/flutter-self-service)
