Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: update default-branch-migration.md #5688

Merged
merged 1 commit into from
Apr 8, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 48 additions & 21 deletions github-management/default-branch-migration.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,6 @@ on the [#github-management] channel on slack or open an issue in the [kubernetes

## Prerequisites

- [ ] Ensure that your repo has low PR volume (<20 open PRs) and
less number of periodic jobs. The branch rename will re-trigger
prow on _all_ open PRs, which will cause a huge spike in the CI load.

- [ ] Create an issue in your repo to track the branch rename.
You can paste this checklist in the issue body.

Expand All @@ -42,12 +38,12 @@ covered in this checklist.

### Anytime

These changes are **non-disruptive** and can be made anytime before
renaming the branch.
These changes are **non-disruptive** and can be made anytime before renaming
the branch.

- [ ] If a prowjob triggers on the `master` branch (`branches` field
of the prowjob), add the `main` branch to the list
(see [kubernetes/test-infra#20665] for an example).
- [ ] If a presubmit or postsubmit prowjob triggers on the `master` branch
(`branches` field of the prowjob), add the `main` branch to the list
(see [kubernetes/test-infra#20665] for an example).

- [ ] If the [`milestone_applier`] prow config references the `master` branch,
add the `main` branch to the config (see [kubernetes/test-infra#20675] for an example).
Expand All @@ -57,20 +53,45 @@ add the `main` branch to the config.

### Just before rename

These changes are **disruptive** and should be made just before
renaming the branch.

- [ ] If a prowjob mentions the `master` branch in `base_ref`,
update it to the `main` branch. For a periodic job, ensure that
the branch is renamed between periodic job runs.

- [ ] If a prowjob mentions `master` in its name, rename the job to
to not include the branch name. [`status-reconciler`] should automatically
migrate the PR status contexts to the new job name but this has not been tested yet.
The job with the new name will also appear as a differt job in Testgrid.
These changes are **disruptive** and should be made just before renaming the
branch.

- [ ] For periodic prowjobs, or any prowjob that mentions the `master` branch
in `base_ref`, update them to the `main` branch. Ensure that these changes
happen in lock-step with the branch rename (jobs triggered in between landing
these changes and renaming the branch will fail).
- For bootstrap-based jobs, ensure the branch is explicitly specified,
e.g. `kubernetes/foo=main`. [kubernetes/test-infra#20667] may eventually
allow for non-disruptive changes.
- For pod-utils based jobs, ensure the branch is explicitly specified,
e.g. `base_ref: main`. [kubernetes/test-infra#20672] may eventually allow
for non-disruptive changes.

- [ ] If a prowjob mentions `master` in its name, rename the job to not include
the branch name, e.g. `pull-repo-verify-master` -> `pull-repo-verify`.
[`status-reconciler`] should automatically migrate PR status contexts to the
new job name, and retrigger accordingly, but we have anecdotally found it
sometimes misses changes.
- NOTE: our infrastructure doesn't understand the concept of job renames, so
from the perspective of e.g. https://testgrid.k8s.io the job will appear to
have lost history and start from scratch.

- [ ] If a prowjob calls scripts or code in your repo that explicitly
reference `master`, update all references to use `main`.
reference `master`, update all references to use `main`, or auto-detect the
remote branch
- e.g. using git to auto-detect
```sh
# for existing clones, update their view of the remote
git fetch origin
git remote set-head origin -a
# for new clones, or those updated as above, this prints "main" post-rename
echo $(git symbolic-ref refs/remotes/origin/HEAD)
```
- e.g. using github's api to auto-detect
```sh
# gh is https://github.com/cli/cli, this will print "main" post-rename
gh api /repos/kubernetes-sigs/slack-infra | jq -r .default_branch
```

- [ ] If the repo has netlify configured for it, ask a member of the GitHub
Management Team to rename the `master` branch to `main` in the netlify site config.
Expand Down Expand Up @@ -114,8 +135,13 @@ remove it from the config.
(URLs will be automatically redirected).

- [ ] Ensure that CI and PR tests work fine.
- If there are any outstanding PRs you can /approve to merge, do so to verify
that presubmits and postsubmits work as expected

- [ ] Trial the local development experience with a pre-rename clone.
- ensure [Github instructions to rename your local branch] work
- consider updating your fork's default remote branch name such that if you
have git autocompletion enabled, typing `ma<tab>` will autocomplete to `main`

- [ ] Send a notice about the branch rename to your SIG's mailing list.
Include the link to the [GitHub instructions to rename your local branch].
Expand All @@ -126,6 +152,7 @@ Include the link to the [GitHub instructions to rename your local branch].
[kubernetes/test-infra#20665]: https://github.com/kubernetes/test-infra/pull/20665
[kubernetes/test-infra#20667]: https://github.com/kubernetes/test-infra/issues/20667
[kubernetes/test-infra#20669]: https://github.com/kubernetes/test-infra/pull/20669
[kubernetes/test-infra#20672]: https://github.com/kubernetes/test-infra/issues/20672
[kubernetes/test-infra#20675]: https://github.com/kubernetes/test-infra/pull/20675
[`status-reconciler`]: https://github.com/kubernetes/test-infra/tree/master/prow/cmd/status-reconciler
[`branch_protection`]: https://github.com/kubernetes/test-infra/blob/ca6273046b355d38eade4c4bd435bd13fbb55043/config/prow/config.yaml#L131
Expand Down