diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e30a7c2c08..8fa563e9661 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ Changes by Version
next release template -next release (yyyy-mm-dd) +next release v1.x.x / v2.x.x-rcx (yyyy-mm-dd) ------------------- ### Backend Changes @@ -17,11 +17,72 @@ run `make changelog` to generate content ### 📊 UI Changes -... +copy from UI changelog
-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 diff --git a/RELEASE.md b/RELEASE.md index 620784fa7a6..ac6670f6c2f 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,11 +1,21 @@ +# 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 ` (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 @@ -13,36 +23,44 @@ 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`). @@ -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 | diff --git a/scripts/draft-release.py b/scripts/draft-release.py index 2d33647158c..2faa478bdff 100755 --- a/scripts/draft-release.py +++ b/scripts/draft-release.py @@ -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, ) @@ -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 @@ -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()