Skip to content

Commit

Permalink
Prepare release 1.61.0 / 2.0.0-rc1 (#5985)
Browse files Browse the repository at this point in the history
Signed-off-by: Yuri Shkuro <github@ysh.us>
  • Loading branch information
yurishkuro committed Sep 15, 2024
1 parent 4640518 commit fdb8830
Show file tree
Hide file tree
Showing 3 changed files with 134 additions and 34 deletions.
67 changes: 64 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Changes by Version
<details>
<summary>next release template</summary>

next release (yyyy-mm-dd)
next release v1.x.x / v2.x.x-rcx (yyyy-mm-dd)
-------------------

### Backend Changes
Expand All @@ -17,11 +17,72 @@ run `make changelog` to generate content

### 📊 UI Changes

...
copy from UI changelog

</details>

1.60.0 (2024-08-06)
1.61.0 / 2.0.0-rc1 (2024-09-14)
-------------------

### Backend Changes

This release contains an official pre-release candidate of Jaeger v2, as binary and Docker image `jaeger`.

#### ⛔ Breaking Changes

* Remove support for cassandra 3.x and add cassandra 5.x ([@mahadzaryab1](https://github.com/mahadzaryab1) in [#5962](https://github.com/jaegertracing/jaeger/pull/5962))

#### 🐞 Bug fixes, Minor Improvements

* Fix: the 'tagtype' in es jaeger-span mapping tags.properties should be 'type' ([@chinaran](https://github.com/chinaran) in [#5980](https://github.com/jaegertracing/jaeger/pull/5980))
* Add readme for adaptive sampling ([@yurishkuro](https://github.com/yurishkuro) in [#5955](https://github.com/jaegertracing/jaeger/pull/5955))
* [adaptive sampling] clean-up after previous refactoring ([@yurishkuro](https://github.com/yurishkuro) in [#5954](https://github.com/jaegertracing/jaeger/pull/5954))
* [adaptive processor] remove redundant function ([@yurishkuro](https://github.com/yurishkuro) in [#5953](https://github.com/jaegertracing/jaeger/pull/5953))
* [jaeger-v2] consolidate options and namespaceconfig for badger storage ([@mahadzaryab1](https://github.com/mahadzaryab1) in [#5937](https://github.com/jaegertracing/jaeger/pull/5937))
* Remove unused "namespace" field from badger config ([@yurishkuro](https://github.com/yurishkuro) in [#5929](https://github.com/jaegertracing/jaeger/pull/5929))
* Simplify bundling of ui assets ([@mahadzaryab1](https://github.com/mahadzaryab1) in [#5917](https://github.com/jaegertracing/jaeger/pull/5917))
* Clean up grpc storage config ([@yurishkuro](https://github.com/yurishkuro) in [#5877](https://github.com/jaegertracing/jaeger/pull/5877))
* Add script to replace apache headers with spdx ([@thecaffeinedev](https://github.com/thecaffeinedev) in [#5808](https://github.com/jaegertracing/jaeger/pull/5808))
* Add copyright/license headers to script files ([@Zen-cronic](https://github.com/Zen-cronic) in [#5829](https://github.com/jaegertracing/jaeger/pull/5829))
* Clearer output from lint scripts ([@yurishkuro](https://github.com/yurishkuro) in [#5820](https://github.com/jaegertracing/jaeger/pull/5820))

#### 🚧 Experimental Features

* [jaeger-v2] add validation and comments to badger storage config ([@mahadzaryab1](https://github.com/mahadzaryab1) in [#5927](https://github.com/jaegertracing/jaeger/pull/5927))
* [jaeger-v2] add validation and comments to memory storage config ([@mahadzaryab1](https://github.com/mahadzaryab1) in [#5925](https://github.com/jaegertracing/jaeger/pull/5925))
* Support tail based sampling processor from otel collector extension ([@mahadzaryab1](https://github.com/mahadzaryab1) in [#5878](https://github.com/jaegertracing/jaeger/pull/5878))
* [v2] configure health check extension for all configs ([@Wise-Wizard](https://github.com/Wise-Wizard) in [#5861](https://github.com/jaegertracing/jaeger/pull/5861))
* [v2] add legacy formats into e2e kafka integration tests ([@joeyyy09](https://github.com/joeyyy09) in [#5824](https://github.com/jaegertracing/jaeger/pull/5824))
* [v2] configure healthcheck extension ([@Wise-Wizard](https://github.com/Wise-Wizard) in [#5831](https://github.com/jaegertracing/jaeger/pull/5831))
* Added _total suffix to otel counter metrics. ([@Wise-Wizard](https://github.com/Wise-Wizard) in [#5810](https://github.com/jaegertracing/jaeger/pull/5810))

#### 👷 CI Improvements

* Release v2 cleanup 3 ([@yurishkuro](https://github.com/yurishkuro) in [#5984](https://github.com/jaegertracing/jaeger/pull/5984))
* Replace loopvar linter ([@anishbista60](https://github.com/anishbista60) in [#5976](https://github.com/jaegertracing/jaeger/pull/5976))
* Stop using v1 and v1.x tags for docker images ([@yurishkuro](https://github.com/yurishkuro) in [#5956](https://github.com/jaegertracing/jaeger/pull/5956))
* V2 repease prep ([@yurishkuro](https://github.com/yurishkuro) in [#5932](https://github.com/jaegertracing/jaeger/pull/5932))
* Normalize build-binaries targets ([@yurishkuro](https://github.com/yurishkuro) in [#5924](https://github.com/jaegertracing/jaeger/pull/5924))
* Fix integration test log dumping for storage backends ([@mahadzaryab1](https://github.com/mahadzaryab1) in [#5915](https://github.com/jaegertracing/jaeger/pull/5915))
* Add jaeger-v2 binary as new release artifact ([@renovate-bot](https://github.com/renovate-bot) in [#5893](https://github.com/jaegertracing/jaeger/pull/5893))
* [ci] add support for v2 tags during build ([@yurishkuro](https://github.com/yurishkuro) in [#5890](https://github.com/jaegertracing/jaeger/pull/5890))
* Add hardcoded db password and username to cassandra integration test ([@Ali-Alnosairi](https://github.com/Ali-Alnosairi) in [#5805](https://github.com/jaegertracing/jaeger/pull/5805))
* Define contents permissions on "dependabot validate" workflow ([@mmorel-35](https://github.com/mmorel-35) in [#5874](https://github.com/jaegertracing/jaeger/pull/5874))
* [fix] print kafka logs on test failure ([@joeyyy09](https://github.com/joeyyy09) in [#5873](https://github.com/jaegertracing/jaeger/pull/5873))
* Pin github actions dependencies ([@harshitasao](https://github.com/harshitasao) in [#5860](https://github.com/jaegertracing/jaeger/pull/5860))
* Add go.mod for docker debug image ([@hellspawn679](https://github.com/hellspawn679) in [#5852](https://github.com/jaegertracing/jaeger/pull/5852))
* Enable lint rule: redefines-builtin-id ([@ZXYxc](https://github.com/ZXYxc) in [#5791](https://github.com/jaegertracing/jaeger/pull/5791))
* Require manual go version updates for patch versions ([@wasup-yash](https://github.com/wasup-yash) in [#5848](https://github.com/jaegertracing/jaeger/pull/5848))
* Clean up obselete 'version' tag from docker-compose files ([@vvs-personalstash](https://github.com/vvs-personalstash) in [#5826](https://github.com/jaegertracing/jaeger/pull/5826))
* Update expected codecov flags count to 19 ([@yurishkuro](https://github.com/yurishkuro) in [#5811](https://github.com/jaegertracing/jaeger/pull/5811))


### 📊 UI Changes

Dependencies upgrades only.


1.60.0 / 2.0.0-rc0 (2024-08-06)
-------------------

### Backend Changes
Expand Down
52 changes: 35 additions & 17 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -1,48 +1,66 @@
# Jaeger Overall Release Process

1. Determine new version numbers for v1.x.x and v2.x.x-rcN
* v2 version is currently in the form v2.0.0-rcN where N is the next number since the last release.
2. Perform UI release according to https://github.com/jaegertracing/jaeger-ui/blob/main/RELEASE.md
3. Perform Backend release (see below)
4. [Publish documentation](https://github.com/jaegertracing/documentation/blob/main/RELEASE.md) for the new version on `jaegertracing.io`.
1. Check that [jaegertracing.io](https://www.jaegertracing.io/docs/latest) redirects to the new documentation release version URL.
2. For monitoring and troubleshooting, refer to the [jaegertracing/documentation Github Actions tab](https://github.com/jaegertracing/documentation/actions).
5. Announce the release on the [mailing list](https://groups.google.com/g/jaeger-tracing), [slack](https://cloud-native.slack.com/archives/CGG7NFUJ3), and [twitter](https://twitter.com/JaegerTracing?lang=en).

# Jaeger Backend Release Process

1. Create a PR "Prepare release X.Y.Z" against main or maintenance branch ([example](https://github.com/jaegertracing/jaeger/pull/543/files)) by updating CHANGELOG.md to include:
* A new section with the header `<X.Y.Z> (YYYY-MM-DD)` (copy the template at the top)
1. Create a PR "Prepare release 1.x.x / 2.x.x-rcN" against main or maintenance branch ([example](https://github.com/jaegertracing/jaeger/pull/543/files)) by updating CHANGELOG.md to include:
* A new section with the header `1.x.x / 2.x.x-rcN (YYYY-MM-DD)` (copy the template at the top)
* A curated list of notable changes and links to PRs. Do not simply dump git log, select the changes that affect the users.
To obtain the list of all changes run `make changelog`.
* The section can be split into sub-section if necessary, e.g. UI Changes, Backend Changes, Bug Fixes, etc.
* If the jaeger-ui submodule has changes cut a new release
* Then upgrade the submodule versions and finally commit. For example:
```
git submodule init
git submodule update
cd jaeger-ui
git checkout main
git pull
git checkout {new_version} //e.g. v1.5.0
git checkout {new_ui_version} //e.g. v1.5.0
```
* If there are only dependency bumps, indicate this with "Dependencies upgrades only" ([example](https://github.com/jaegertracing/jaeger-ui/pull/2431/files)).
* If there are no changes, indicate this with "No changes" ([example](https://github.com/jaegertracing/jaeger/pull/4131/files)).
* Rotate the below release managers table placing yourself at the bottom. The date should be the first Wednesday of the month.
2. After the PR is merged, create a release on Github:
* Add label `changelog:skip` to the pull request.
2. After the PR is merged, create new release tags:
```
git checkout main
git pull
git tag v1... -s # use the new version
git tag v2... -s # use the new version
git push upstream v1... v2...
```
3. Create a release on Github:
* Automated:
* `make draft-release`
* Manual:
* Title "Release X.Y.Z"
* Tag `vX.Y.Z` (note the `v` prefix) and choose appropriate branch
* Title "Release 1.x.x / 2.x.x-rcN"
* Tag `v1.x.x` (note the `v` prefix) and choose appropriate branch (usually `main`)
* Copy the new CHANGELOG.md section into the release notes
* Extra: GitHub has a button "generate release notes". Those are not formatted as we want,
but it has a nice feature of explicitly listing first-time contributors.
Before doing the previous step, you can click that button and then remove everything
except the New Contributors section. Change the header to `### 👏 New Contributors`,
then copy the main changelog above it. [Example](https://github.com/jaegertracing/jaeger/releases/tag/v1.55.0).
3. The release tag will trigger a build of the docker images. Since forks don't have jaegertracingbot dockerhub token, they can never publish images to jaegertracing organisation.
1. Check the images are available on [Docker Hub](https://hub.docker.com/r/jaegertracing/).
2. For monitoring and troubleshooting, refer to the [jaegertracing/jaeger GithubActions tab](https://github.com/jaegertracing/jaeger/actions).
4. [Publish documentation](https://github.com/jaegertracing/documentation/blob/main/RELEASE.md) for the new version in [jaegertracing.io](https://www.jaegertracing.io/docs/latest).
1. Check [jaegertracing.io](https://www.jaegertracing.io/docs/latest) redirects to the new documentation release version URL.
2. For monitoring and troubleshooting, refer to the [jaegertracing/documentation GithubActions tab](https://github.com/jaegertracing/documentation/actions).
5. Announce the release on the [mailing list](https://groups.google.com/g/jaeger-tracing), [slack](https://cloud-native.slack.com/archives/CGG7NFUJ3), and [twitter](https://twitter.com/JaegerTracing?lang=en).

Maintenance branches should follow naming convention: `release-major.minor` (e.g.`release-1.8`).
4. Go to [Publish Release](https://github.com/jaegertracing/jaeger/actions/workflows/ci-release.yml) workflow on GitHub
and run it manually using Run Workflow button on the right.
1. For monitoring and troubleshooting, open the logs of the workflow run from above URL.
2. Check the images are available on [Docker Hub](https://hub.docker.com/r/jaegertracing/)
and binaries are uploaded [to the release]()https://github.com/jaegertracing/jaeger/releases.

## Patch Release

Sometimes we need to do a patch release, e.g. to fix a newly introduced bug. If the main branch already contains newer changes, it is recommended that a patch release is done from a version branch.

Maintenance branches should follow naming convention: `release-major.minor` (e.g.`release-1.8`).

1. Find the commit in `main` for the release you want to patch (e.g., `a49094c2` for v1.34.0).
2. `git checkout ${commit}; git checkout -b ${branch-name}`. The branch name should be in the form `release-major.minor`, e.g., `release-1.34`. Push the branch to the upstream repository.
3. Apply fixes to the branch. The recommended way is to merge the fixes into `main` first and then cherry-pick them into the version branch (e.g., `git cherry-pick c733708c` for the fix going into `v1.34.1`).
Expand All @@ -61,8 +79,8 @@ Here are the release managers for future versions with the tentative release dat

| Version | Release Manager | Tentative release date |
|---------|-----------------|------------------------|
| 1.61.0 | @yurishkuro | 3 September 2024 |
| 1.62.0 | @albertteoh | 2 October 2024 |
| 1.63.0 | @pavolloffay | 5 November 2024 |
| 1.64.0 | @joe-elliott | 4 December 2024 |
| 1.65.0 | @jkowall | 8 January 2025 |
| 1.66.0 | @yurishkuro | 3 February 2024 |
49 changes: 35 additions & 14 deletions scripts/draft-release.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,29 @@
import subprocess


release_header_pattern = re.compile(r".*(\d+\.\d+\.\d) \(\d{4}-\d{2}-\d{2}\)", flags=0)
release_header_pattern = re.compile(
r".*(1\.\d+\.\d+) */ *(2\.\d+\.\d+-rc\d+) \(\d{4}-\d{2}-\d{2}\)", flags=0
)
underline_pattern = re.compile(r"^[-]+$", flags=0)


def main(title, repo):
changelog_text, version = get_changelog()
changelog_text, version_v1, version_v2 = get_changelog()
print(changelog_text)
output_string = subprocess.check_output(
["gh", "release", "create", f"v{version}",
"--draft",
"--title", f"{title} v{version}",
"--repo", f"jaegertracing/{repo}",
"-F", "-"],
[
"gh",
"release",
"create",
f"v{version_v1}",
"--draft",
"--title",
f"{title} v{version_v1} / v{version_v2}",
"--repo",
f"jaegertracing/{repo}",
"-F",
"-",
],
input=changelog_text,
text=True,
)
Expand All @@ -40,7 +50,8 @@ def get_changelog():
# Found the first release.
if not in_changelog_text:
in_changelog_text = True
version = release_header_match.group(1)
version_v1 = release_header_match.group(1)
version_v2 = release_header_match.group(2)
else:
# Found the next release.
break
Expand All @@ -51,16 +62,26 @@ def get_changelog():
elif in_changelog_text:
changelog_text += line

return changelog_text, version
return changelog_text, version_v1, version_v2


if __name__ == "__main__":
parser = argparse.ArgumentParser(description='List changes based on git log for release notes.')
parser = argparse.ArgumentParser(
description="List changes based on git log for release notes."
)

parser.add_argument('--title', type=str, default='Release',
help='The title of the release. (default: Release)')
parser.add_argument('--repo', type=str, default='jaeger',
help='The repository name where the draft release will be created. (default: jaeger)')
parser.add_argument(
"--title",
type=str,
default="Release",
help="The title of the release. (default: Release)",
)
parser.add_argument(
"--repo",
type=str,
default="jaeger",
help="The repository name where the draft release will be created. (default: jaeger)",
)

args = parser.parse_args()

Expand Down

0 comments on commit fdb8830

Please sign in to comment.