Rename "master" branch to "main"
mboersma opened this issue ยท 10 comments
There has been an effort to use a friendlier name for the main branch of Kubernetes projects (and others), but image-builder doesn't yet. We should investigate the steps involved and the possible problems this creates, then make a plan to do it. We should also think about how to coordinate this with the "cruft removal" work in #1143.
See discussion at #1160 (comment).
There is some guidance in https://www.kubernetes.dev/resources/rename/
Collecting some things we'll need to update based on the docs link @jsturtevant shared:
- References to
master
branch when image-builder defined as anextra_ref
- https://github.com/search?q=repo%3Akubernetes%2Ftest-infra%20sigs.k8s.io%2Fimage-builder&type=code - Update cron trigger to also include
main
branch - https://github.com/kubernetes-sigs/image-builder/blob/ab5746d83266863140e9974f20e0509f4d38ce82/images/capi/packer/azure/.pipelines/smoke-test.yaml#LL21C1-L21C1
So far, besides those two, I can't find any more references specifically to the master
branch.
We will need to update test-infra CI references as well:
@jsturtevant where do those reference the master branch?
looking closer, it does appear to have branch names in those files. so we should be ok ๐
This is copied from https://www.kubernetes.dev/resources/rename/ so we can track progress in here. :) @mboersma Not sure if you want to copy this into the main body of the issue or not.
Prerequisites
-
Create an issue in your repo to track the branch rename.
You can paste this checklist in the issue body. -
If you are not a root approver for the repo, assign a root
approver for approval. -
Once the issue has been approved, send a notice to your SIG's
mailing list about the potential branch rename.
Changes pre-rename
Make the following changes before renaming the branch the master
branch.
Note: There might be additional changes required that have not been
covered in this checklist.
Note: There might be additional information available in the umbrella issue via [kubernetes/org#2222].
Anytime
These changes are non-disruptive and can be made anytime before renaming
the branch.
-
If a presubmit or postsubmit prowjob triggers on the
master
branch
(branches
field of the prowjob), add themain
branch to the list
(see kubernetes/test-infra#20665 for an example). -
If the
milestone_applier
prow config references themaster
branch,
add themain
branch to the config (see kubernetes/test-infra#20675 for an example). -
If the
branch_protection
prow config references themaster
branch,
add themain
branch to the config.
Just before rename
These changes are disruptive and should be made just before renaming the
branch.
-
For periodic prowjobs, or any prowjob that mentions the
master
branch
inbase_ref
, update them to themain
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.
- For bootstrap-based jobs, ensure the branch is explicitly specified,
-
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.
- NOTE: our infrastructure doesn't understand the concept of job renames, so
-
If a prowjob calls scripts or code in your repo that explicitly
referencemaster
, update all references to usemain
, or auto-detect the
remote branch- e.g. using git to auto-detect
# 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
# 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 themaster
branch tomain
in the netlify site config.
It can't be controlled through the netlify config in the repo.
Approval
- Once all non-disruptive tasks have been completed and disruptive tasks
have been identified, assign the GitHub Management team (@kubernetes/owners)
for approval.
Rename the default branch
- Rename the default branch from
master
tomain
using the GitHub UI
by following the official instructions.
Changes post-rename
After the default branch has been renamed to main
, make the following
changes.
Note: There might be additional changes required that have not been
covered in this checklist.
Prowjobs
- If a prowjob still references the
master
branch in thebranches
field,
remove themaster
branch (see kubernetes/test-infra#20669 for an example).
Prow config
-
If the
milestone_applier
prow config references themaster
branch,
remove it from the config. -
If the
branch_protection
prow config references themaster
branch,
remove it from the config.
Other
-
If any docs reference the
master
branch, update tomain
(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
- If there are any outstanding PRs you can /approve to merge, do so to verify
-
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, typingma<tab>
will autocomplete tomain
-
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.
(I've pulled out the outstanding tasks from above so its more easily readable)
ToDo
Before Rename
- kubernetes/test-infra#29671 (currently waiting on approval from CAPI provider maintainers)
- Post message to SIG mailing list about - an initial message was sent along with the "cruft removal" but it might be good to have a standalone post
- Ask a member of the GitHub Management Team to rename the master branch to main in the netlify site config.
During Rename
- Post a message in #image-builder slack channel announcing the rename is underway
- Rename the default branch from master to main using the GitHub UI by following the official instructions.
After Rename
-
/unhold
kubernetes/test-infra#29671 -
/unhold
#1203 - Check CI jobs still work
- Announce completion of rename to SIG mailing list and #image-builder Slack channel
All complete and everything looks to be working. Thanks everyone! ๐
/close
@AverageMarcus: Closing this issue.
In response to this:
All complete and everything looks to be working. Thanks everyone! ๐
/close
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.