Skip to content

Commit 5f6d6b3

Browse files
authored
docs: update release manager docs (#17450)
1 parent 86e5d7d commit 5f6d6b3

File tree

1 file changed

+65
-61
lines changed

1 file changed

+65
-61
lines changed

dev_docs/RELEASES.md

Lines changed: 65 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,82 +1,86 @@
1-
# APM Server release checklist
1+
# APM Server Release Checklist
22

3-
The APM Server follows the Elastic Stack release schedule and versions.
4-
A release starts with a Feature Freeze period, during which only bug fixes
5-
are allowed to be merged into the specific release branch.
6-
We generally follow [semver](https://semver.org/) for release versions.
7-
For major and minor releases a new branch is cut off the main branch.
8-
For patch releases, only the version on the existing major and minor version branch is updated.
3+
The APM Server follows the Elastic Stack release schedule and versions. A release starts with a Feature Freeze period, during which only bug fixes are allowed to be merged into the specific release branch. We generally follow [semver](https://semver.org/) for release versions. For major and minor releases, a new branch is cut from the main branch. For patch releases, only the version on the existing major and minor version branch gets updated. All release workflows (patch, minor, major) has to be triggered manually. The Release Manager will ping the team to align the release process.
94

10-
## Feature Freeze
5+
## Patch Release
116

12-
* For **patch releases**:
13-
* ensure all relevant backport PRs are merged. We use backport labels on PRs and automation to ensure labels are set.
7+
1. Create a *Test Plan*.
8+
2. Ensure all relevant backport PRs are merged. We use backport labels on PRs and automation to ensure labels are set.
9+
3. Run the [`run-patch-release`](https://github.com/elastic/apm-server/actions/workflows/run-patch-release.yml) workflow
10+
- In "Use workflow from", select `main` branch.
11+
- Then in "The version", specify the **upcoming** patch release version - es: on `8.14.2` feature freeze you will use `8.14.2`).
12+
- This workflow will:
13+
- Create the `update-<VERSION>` branch.
14+
- Update version constants across the codebase and create a PR targeting the release branch.
15+
4. Release notes for patch releases **must be manually added** at least one day before release.
16+
5. Create a PR targeting the `main` branch and add the backport label for the release branch. To add release notes:
17+
- Add a new section to the existing release notes file ([Sample PR](https://github.com/elastic/apm-server/pull/12680)).
18+
- Review the [changelogs/head](https://github.com/elastic/apm-server/tree/main/changelogs/head.asciidoc) file and move relevant changelog entries from `head.asciidoc` to `release_version.asciidoc` if the change is backported to release_version. If changes do not apply to the version being released, keep them in the `head.asciidoc` file.
19+
- Review the commits in the release to ensure all changes are reflected in the release notes. Check for backported changes without release notes in `release_version.asciidoc`.
20+
- Add your PR to the documentation release issue in the [`elastic/dev`](https://github.com/elastic/dev/issues?q=is%3Aissue%20state%3Aopen%20label%3Adocs) repo ([Sample Issue](https://github.com/elastic/dev/issues/2485)).
21+
- The PR should be merged the day before release.
1422

23+
## Minor Release
1524

16-
## Day after Feature Freeze
25+
1. Create a *Test Plan*.
26+
2. Run the [`run-minor-release`](https://github.com/elastic/apm-server/actions/workflows/run-minor-release.yml) workflow (In "Use workflow from", select `main` branch. Then in "The version", specify the minor release version the release is for). This workflow will:
27+
- Create a new release branch using the stack version (X.Y).
28+
- Update the changelog for the release branch and open a PR targeting the release branch titled `<major>.<minor>: update docs`.
29+
- Create a PR on `main` titled `<major>.<minor>: update docs, mergify, versions and changelogs`.
1730

18-
* Trigger release workflow manually
19-
* For **patch releases**: run the [`run-patch-release`](https://github.com/elastic/apm-server/actions/workflows/run-patch-release.yml) workflow (In "Use workflow from", select `main` branch. Then in "The version", specify the **upcoming** patch release version - es: on `8.14.2` feature freeze you will use `8.14.2`).
20-
This workflow will: create the `update-<VERSION>` branch, update version constants across the codebase and create a PR targeting the release branch.
21-
Release notes for patch releases **must be manually added** at least one day before release.
22-
Create a PR targeting the `main` branch and add the backport label for the release branch.
23-
To add release notes:
24-
* Add a new section to the existing release notes file ([Sample PR](https://github.com/elastic/apm-server/pull/12680)).
25-
* Review the [changelogs/head](https://github.com/elastic/apm-server/tree/main/changelogs/head.asciidoc) file and move relevant changelog entries from `head.asciidoc` to `release_version.asciidoc` if the change is backported to release_version. If changes do not apply to the version being released, keep them in the `head.asciidoc` file.
26-
* Review the commits in the release to ensure all changes are reflected in the release notes. Check for backported changes without release notes in `release_version.asciidoc`.
27-
* Add your PR to the documentation release issue in the [`elastic/dev`](https://github.com/elastic/dev/issues?q=is%3Aissue%20state%3Aopen%20label%3Adocs) repo ([Sample Issue](https://github.com/elastic/dev/issues/2485)).
28-
* The PR should be merged the day before release.
29-
* For **minor releases**: run the [`run-minor-release`](https://github.com/elastic/apm-server/actions/workflows/run-minor-release.yml) workflow (In "Use workflow from", select `main` branch. Then in "The version", specify the minor release version the release is for).
30-
This workflow will: create a new release branch using the stack version (X.Y); update the changelog for the release branch and open a PR targeting the release branch titled `<major>.<minor>: update docs`; create a PR on `main` titled `<major>.<minor>: update docs, mergify, versions and changelogs`. Before merging them compare commits between latest minor and the new minor versions and ensure all relevant PRs have been included in the Changelog. If not, amend it in both PRs. Request and wait a PR review from the team before merging. After it's merged add your PR to the documentation release issue in the [`elastic/dev`](https://github.com/elastic/dev/issues?q=is%3Aissue%20state%3Aopen%20label%3Adocs) repo ([Sample Issue](https://github.com/elastic/dev/issues/2895)).
31-
* For **major releases**: run the [`run-major-release`](https://github.com/elastic/apm-server/actions/workflows/run-major-release.yml) workflow (In "Use workflow from", select `main` branch. Then in "The version", specify the major release version the release is for).
32-
This workflow will: create a new release branch using the stack version (X.Y); update the changelog for the release branch and open a PR targeting the release branch titled `<major>.<minor>: update docs`; create a PR on `main` titled `<major>.0: update docs, mergify, versions and changelogs`. Before merging them compare commits between latest minor and the new major versions and ensure all relevant PRs have been included in the Changelog. If not, amend it in both PRs. Request and wait a PR review from the team before merging. After it's merged add your PR to the documentation release issue in the [`elastic/dev`](https://github.com/elastic/dev/issues?q=is%3Aissue%20state%3Aopen%20label%3Adocs) repo ([Sample Issue](https://github.com/elastic/dev/issues/2895)).
33-
* The Release Manager will ping the team to align the release process
31+
Before merging them compare commits between latest minor and the new minor versions and ensure all relevant PRs have been included in the Changelog. If not, amend it in both PRs. Request and wait a PR review from the team before merging. After it's merged add your PR to the documentation release issue in the [`elastic/dev`](https://github.com/elastic/dev/issues?q=is%3Aissue%20state%3Aopen%20label%3Adocs) repo ([Sample Issue](https://github.com/elastic/dev/issues/2895)).
3432

35-
* Update dependencies
33+
## Major Release
3634

37-
* libbeat:
38-
Updates are automatically created for the release branch, multiple times per week.
39-
If there is a need for a manual update, you can run `make update-beats` on the release branch.
40-
This might be the case when waiting for an urgent bug fix from beats, or after branching out the release branch.
35+
1. Create a *Test Plan*.
36+
2. Run the [`run-major-release`](https://github.com/elastic/apm-server/actions/workflows/run-major-release.yml) workflow (In "Use workflow from", select `main` branch. Then in "The version", specify the major release version the release is for). This workflow will:
37+
- Create a new release branch using the stack version (X.Y).
38+
- Update the changelog for the release branch and open a PR targeting the release branch titled `<major>.<minor>: update docs`.
39+
- Create a PR on `main` titled `<major>.0: update docs, mergify, versions and changelogs`.
4140

42-
For patch releases, the updates are supposed to only contain bug fixes. Take a quick look at the libbeat changes
43-
and raise it with the APM Server team if any larger features or changes are introduced.
41+
Before merging them compare commits between latest minor and the new major versions and ensure all relevant PRs have been included in the Changelog. If not, amend it in both PRs. Request and wait a PR review from the team before merging. After it's merged add your PR to the documentation release issue in the [`elastic/dev`](https://github.com/elastic/dev/issues?q=is%3Aissue%20state%3Aopen%20label%3Adocs) repo ([Sample Issue](https://github.com/elastic/dev/issues/2895)).
4442

45-
* [go-elasticsearch](https://github.com/elastic/go-elasticsearch):
46-
If no branch or tag is available, ping the go-elasticsearch team.
43+
## Update Dependencies
4744

48-
`go get github.com/elastic/go-elasticsearch/v$major@$major.$minor`
45+
- libbeat:
46+
- Updates are automatically created for the release branch, multiple times per week.
47+
- If there is a need for a manual update, you can run `make update-beats` on the release branch.
48+
- This might be the case when waiting for an urgent bug fix from beats, or after branching out the release branch.
49+
- For patch releases, the updates are supposed to only contain bug fixes. Take a quick look at the libbeat changes and raise it with the APM Server team if any larger features or changes are introduced.
4950

50-
* Test plan
51+
- [go-elasticsearch](https://github.com/elastic/go-elasticsearch):
52+
- If no branch or tag is available, ping the go-elasticsearch team, `go get github.com/elastic/go-elasticsearch/v$major@$major.$minor`.
5153

52-
Create a github issue for testing the release branch ([use the GitHub issue `test plan` template](https://github.com/elastic/apm-server/issues/new?assignees=&labels=test-plan&projects=&template=test-plan.md)), It should contain:
53-
* A link to all PRs in the APM Server repository that need to be tested manually to create an overview over the PRs that need testing.
54-
Use the `test-plan` label and the version label (create it if it does not exist). For example, [this was 8.13.0 test plan](https://github.com/elastic/apm-server/issues/12822)
55-
and here you can find [all previous test plans](https://github.com/elastic/apm-server/issues?q=label%3Atest-plan+is%3Aclosed).
56-
What we aim for is testing all functional changes applied to the new version. Review any PR updating `elastic/go-docappender` and `elastic/apm-data` dependencies, as some functional changes happens through these dependencies.
57-
Any non-functional change or any change already covered by automated tests must not be included.
58-
* Add other test cases that require manual testing, such as test scenarios on ESS, that are not covered by automated tests or OS compatibility smoke tests for supporting new operating systems.
54+
## Create a Test Plan
5955

60-
## Between feature freeze and release
61-
62-
* Test the release branch
56+
Create a [GitHub Issue](https://github.com/elastic/apm-server/issues/new?assignees=&labels=test-plan&projects=&template=test-plan.md) to track testing of the release branch. The issue should include:
6357

64-
* Always use a build candidate (BC) when testing, to ensure we test with the distributed artifacts. The first BC is usually available the day after Feature Freeze.
65-
* Identify which changes require testing via the created test labels, e.g. for [8.3.0](https://github.com/elastic/apm-server/issues?q=label%3Atest-plan+is%3Aclosed+label%3Av8.3.0+-label%3Atest-plan-ok).
66-
* Grab a PR that hasn't been verified and assign yourself to prevent other devs from re-testing the same change.
67-
* Test the PR following the Author's how to test this section.
68-
* Post your testing scenarios on the PR as a comment (for tracking down details in case we run into regressions).
69-
* Add the `test-plan-ok` or the `test-plan-regression` label to the PR. In case of regression, either open a PR with a fix or open an issue with the details.
58+
- Test all functional changes applied to the new version.
59+
- Any non-functional change or any change already covered by automated tests must not be included.
60+
- Review any PRs updating dependencies, as some functional changes happens through these dependencies.
61+
- Link to PRs in the APM Server repository that need to be tested *manually*.
62+
- Apply both the `test-plan` label and the appropriate *version label* to the issue - create the version label if it does not already exist.
63+
- For reference, see the [9.1 Test Plan](https://github.com/elastic/apm-server/issues/17263).
64+
- For additional examples, you can also view all [previous](https://github.com/elastic/apm-server/issues?q=label%3Atest-plan+is%3Aclosed) test plans.
65+
- Add other test cases that require manual testing, such as test scenarios on ESS, that are not covered by automated tests or OS compatibility smoke tests for supporting new operating systems.
7066

71-
* Collaborate with the docs team on any release highlights or breaking changes that should be included in the APM Server guide.
67+
## Between feature freeze and release
7268

73-
* Run DRA for a given qualifier. The Release Team will say what qualifier to use in the the #mission-control channel.
74-
* Go to https://buildkite.com/elastic/apm-server-package
69+
- Test the release branch by completing items in the *Test Plan*:
70+
- Always use a build candidate (BC) when testing, to ensure we test with the distributed artifacts. The first BC is usually available the day after Feature Freeze.
71+
- Identify which changes require testing via the created test labels, e.g. for [8.3.0](https://github.com/elastic/apm-server/issues?q=label%3Atest-plan+is%3Aclosed+label%3Av8.3.0+-label%3Atest-plan-ok).
72+
- Grab a PR that hasn't been verified and assign yourself to prevent other devs from re-testing the same change.
73+
- Test the PR following the Author's how to test this section.
74+
- Post your testing scenarios on the PR as a comment (for tracking down details in case we run into regressions).
75+
- Add the `test-plan-ok` or the `test-plan-regression` label to the PR. In case of regression, either open a PR with a fix or open an issue with the details.
76+
- Collaborate with the docs team on any release highlights or breaking changes that should be included in the APM Server guide.
77+
- Run DRA for a given qualifier. The Release Team will say what qualifier to use in the the #mission-control channel.
78+
- Go to https://buildkite.com/elastic/apm-server-package
7579
* Click on `New Build`.
76-
* Choose the `Branch` where the release should come from (either `main`, `8.x` or `[0-9].[0-9]+)`_
77-
* Click on `options`
78-
* Add `ELASTIC_QUALIFIER=<qualifier>` (`<qualifier` should be replaced with the given qualifier)
79-
* Click on `Create Build`.
80+
- Choose the `Branch` where the release should come from (either `main`, `8.x` or `[0-9].[0-9]+)`_
81+
- Click on `options`
82+
- Add `ELASTIC_QUALIFIER=<qualifier>` (`<qualifier` should be replaced with the given qualifier)
83+
- Click on `Create Build`.
8084

8185
## On release day
8286

0 commit comments

Comments
 (0)