From 90aa59f6c32fd522e6f45a169637a9f0419dbdc6 Mon Sep 17 00:00:00 2001 From: Reid Baker Date: Thu, 12 Sep 2024 13:14:53 -0400 Subject: [PATCH] Externalize and update onboarding instructions (#154730) Part 1/n #154724 ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [ ] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. --------- Co-authored-by: Tirth Co-authored-by: Navaron Bracke --- dev/conductor/README.md | 30 +++----------- dev/conductor/RELEASE_ONBOARDING.md | 62 +++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 25 deletions(-) create mode 100644 dev/conductor/RELEASE_ONBOARDING.md diff --git a/dev/conductor/README.md b/dev/conductor/README.md index 2f7e293ecd..f7fc1e9c41 100644 --- a/dev/conductor/README.md +++ b/dev/conductor/README.md @@ -4,14 +4,14 @@ Command-line tool for managing a release of the Flutter SDK. Also see [Release Process](../../docs/releases/Release-process.md) for more information on the release process. -## Requirements +## Conductor Requirements -Some basic requirements to conduct a release are: +Some basic requirements to run conductor are: - a Linux or macOS computer set up for Flutter development. The conductor does not support Windows. - git -- Mirrors on GitHub of the Flutter +- Mirrors on GitHub of the Flutter ** [framework](https://github.com/flutter/flutter) and [engine](https://github.com/flutter/engine) repositories. @@ -23,6 +23,8 @@ unlock your ssh key for the session; if you do not, each time the conductor attempts to interact with a remote, the user will be prompted to enter their ssh key password. +** Confirm that your personal github clone of flutter/flutter is named flutter and flutter/engine is named engine. If not you will need to use flags to override the defaults. + ## Usage The main entrypoint for the conductor is [bin/conductor](bin/conductor). For @@ -40,8 +42,6 @@ conductor start \ --candidate-branch=flutter-2.2-candidate.10 \ --release-channel=beta \ --github-username=kingOfDevelopers \ - --engine-cherrypicks=72114dafe28c8700f1d5d629c6ae9d34172ba395 \ - --framework-cherrypicks=a3e66b396746f6581b2b7efd1b0d0f0074215128,d8d853436206e86f416236b930e97779b143a100 \ --dart-revision=4511eb2a779a612d9d6b2012123575013e0aef12 \ ``` @@ -77,26 +77,6 @@ step with the command: `conductor next` -### Apply Engine Cherrypicks - -The tool will attempt to auto-apply all engine cherrypicks. However, any -cherrypicks that result in a merge conflict will be reverted and it is left to -the user to manually cherry-pick them (with the command `git cherry-pick -$REVISION`) and resolve the merge conflict in their checkout. - -Once a PR is opened, the user must validate CI builds. If there are regressions -(or if the `licenses_check` fails, then -`//engine/ci/licenses_golden/licenses_third_party` must be updated to match the -output of the failing test), then the user must fix these tests in their local -checkout and push their changes again. - -### Apply Framework Cherrypicks - -The tool will attempt to auto-apply all framework cherrypicks. However, any -cherrypicks that result in a merge conflict will be reverted and it is left to -the user to manually cherry-pick them (with the command `git cherry-pick -$REVISION`) and resolve the merge conflict in their checkout. - ### Publish Version This step will add a version git tag to the final Framework commit and push it diff --git a/dev/conductor/RELEASE_ONBOARDING.md b/dev/conductor/RELEASE_ONBOARDING.md new file mode 100644 index 0000000000..fdd41c429c --- /dev/null +++ b/dev/conductor/RELEASE_ONBOARDING.md @@ -0,0 +1,62 @@ +# Release engineer/manager onboarding + +Googler facing documentation can be found at go/flutter-release-workflow. + +### Responsiblity + +Release engineer is responsible for: +* Branch alignment and/or Sheparding cherry picks +* Decision making related to cherry pick risk +* Verification that pre and post submits pass prior to publishing +* Contributor facing communication +* Some public facing post release comunication + +In the past (and possibly in the future) there was a distinction between a release engineer and release manager. +For now the responsiblitys are the same and we will refer to the person managing the release as a release engineer. + +## Onboarding +One time setup instructions for new or returning relase engineers. + +### Groups/Permissions + +#### Join flutter-hackers on github +https://github.com/orgs/flutter/teams/flutter-hackers/members + +#### [Googler only] Join mdb/flutter-infra +Possibly not required +https://ganpati2.corp.google.com/propose_membership?parent=9147533327&child=$me.prod + +#### Join the flutter-announce google group +Ping any current release engineer to add you as an owner and give you publish access. +https://groups.google.com/g/flutter-announce/members?q=role:owner&pli=1 + +TODO include screenshot + +#### [Googler only] Install tool-proxy-client +From a glinux machine run +`sudo apt install tool-proxy-client` + +`tool-proxy-client` is the tool that enables/enforces 2 party authorization for controlled builds. + +#### [Googler only] Confirm access to release calendar +Public and Beta releases and timelines +go/dash-team-releases + +#### [Googler only] Join release chatroom +Release hotline https://chat.google.com/room/AAAA6RKcK2k?cls=7 + +#### [Googler only] join mdb/flutter-release-team +Controls who can approve 2 party auth requests. +https://ganpati2.corp.google.com/propose_membership?parent=100213927583&child=$me.prod + +#### Setup conductor +Conductor is a dart command line interface for common release tasks. +Its instructions are in README.md. + + +#### [Googler only] Confirm access to Apple signing cert update doc +go/flutter-signing-apple-contracts +Also confirm access to valentine entries listed in that doc. + +#### [Googler only] Access release engineer doc +Confirm access to go/release-eng-retros