* Initial plan * chore: commit backport.yml pre-merge labeling enhancement Co-authored-by: kaovilai <11228024+kaovilai@users.noreply.github.com> * chore: auto-label kind/changelog-not-required for non-shipping PRs; add copilot-instructions.md Co-authored-by: kaovilai <11228024+kaovilai@users.noreply.github.com> * chore: add changelog naming convention to copilot-instructions; tighten labeler exclusions Co-authored-by: kaovilai <11228024+kaovilai@users.noreply.github.com> * fix: use # as sed delimiter to avoid conflict with | in alternation group Co-authored-by: kaovilai <11228024+kaovilai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: kaovilai <11228024+kaovilai@users.noreply.github.com>
2.7 KiB
GitHub Copilot instructions for velero-io/velero
Changelog requirement
Velero uses per-PR changelog fragments that are assembled into release notes.
File naming convention
Every shipping PR must add exactly one file at:
changelogs/unreleased/<PR_NUMBER>-<github_username>
<PR_NUMBER>is the pull request number (e.g.10200).<github_username>is the GitHub login of the PR author (e.g.jdoe).- The file has no extension.
- The file content is a single line describing the change (the PR title is a sensible default).
Example: PR #10200 by jdoe → changelogs/unreleased/10200-jdoe
The easiest way to create this file is:
make new-changelog CHANGELOG_BODY="Brief description of the change"
make new-changelog reads the PR number and author from gh pr view; the file
is written automatically to the correct path with the correct name.
The CI check (hack/changelog-check.sh) looks for
changelogs/unreleased/<PR_NUMBER>-* and fails if no file is found.
When a changelog is NOT required
A changelog entry is not required when a PR exclusively changes non-shipping content, i.e. the only files touched belong to one or more of these categories:
| Category | Paths |
|---|---|
| GitHub Actions / CI workflows | .github/** |
| Documentation | site/content/docs/**, site/**, docs/**, *.md |
| Website (non-docs) | site/** (excluding site/content/docs/**) |
When you open or review a PR that falls into one of the above categories (and does
not modify pkg/, internal/, cmd/, vendor/, hack/, Makefile,
go.mod, go.sum, or changelogs/**), apply the label
kind/changelog-not-required instead of requesting a changelog entry. The
labeler.yml auto-labeler handles this automatically for most cases; apply the
label manually if the auto-labeler did not.
Backport / cherry-pick workflow
Velero uses .github/workflows/backport.yml to automate cherry-picks onto release
branches.
- Before merge: comment
/backport release-1.17(or/cherrypick release-1.17) to add the labelbackport release-1.17to the PR. Multiple branches can be space-delimited:/backport release-1.17 release-1.18. The label causes the backport to run automatically when the PR merges. - After merge: the same comment immediately creates the backport PR.
- Only repository owners, members, and collaborators may trigger these commands.
General coding guidelines
- Follow the existing code style of the file being edited.
- Add unit tests for new exported functions in
pkg/. - Do not commit secrets, credentials, or API tokens.
- Keep PRs focused; prefer small, reviewable changes over large omnibus PRs.