diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c9a960a7..8b0a7750 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -38,6 +38,7 @@ jobs: uses: peter-evans/create-pull-request@v4 with: title: "Automated PR for harmonizer release ${{github.event.inputs.version}}" + commit-message: "release: composition@v${{github.event.inputs.version}}" branch: create-pull-request/harmonizer router-bridge_pr: name: Create router-bridge release @@ -72,4 +73,5 @@ jobs: uses: peter-evans/create-pull-request@v4 with: title: "Automated PR for router-bridge release ${{github.event.inputs.version}}" + commit-message: "release: router-bridge@v${{github.event.inputs.version}}" branch: create-pull-request/router-bridge diff --git a/federation-2/harmonizer/RELEASE_CHECKLIST.md b/federation-2/harmonizer/RELEASE_CHECKLIST.md index 493d7388..0668c070 100644 --- a/federation-2/harmonizer/RELEASE_CHECKLIST.md +++ b/federation-2/harmonizer/RELEASE_CHECKLIST.md @@ -8,22 +8,30 @@ This is a list of the things that need to happen when publishing `harmonizer-2` None of the `federation-rs` packages currently maintain changelogs as they are largely mirrors of upstream packages. You're off the hook! -### Start a release PR - -1. Make sure you have both `npm` and `cargo` installed on your machine and in your `PATH`. -1. Run `HARMONIZER_RELEASE_VERSION=composition@v{version}` where `{version}` is the new version you're bumping to. The major version should NOT be 0, it should be 2. -1. Run `git checkout main && git stash && git pull && git checkout -b $HARMONIZER_RELEASE_VERSION`. -1. Update the version of `@apollo/composition` in `./federation-2/harmonizer/package.json` -1. Run `cargo xtask dist --debug` from the root of `federation-rs` -1. Push up a commit containing the version bumps with the message `release: $HARMONIZER_RELEASE_VERSION` -1. Wait for tests to pass on the PR -1. Merge your PR to `main` - -### Build and tag release - -1. Once merged, run `git checkout main && git pull` -1. Run `cargo xtask tag --package $HARMONIZER_RELEASE_VERSION --real-publish` -1. Wait for CI to build and publish `harmonizer` to crates.io and `supergraph` to `federation-rs` GitHub releases. + + +### ~~Start a release PR~~ This should be handled by the "Release Components" Github Action, but instructions are preserved in case it needs to be done manually. + +~~1. Make sure you have both `npm` and `cargo` installed on your machine and in your `PATH`.~~ +~~2. Run `HARMONIZER_RELEASE_VERSION=composition@v{version}` where `{version}` is the new version you're bumping to. The major version should NOT be 0, it should be 2.~~ +~~3. Run `git checkout main && git stash && git pull && git checkout -b $HARMONIZER_RELEASE_VERSION`.~~ +~~4. Update the version of `@apollo/composition` in `./federation-2/harmonizer/package.json`~~ +~~5. Run `cargo xtask dist --debug` from the root of `federation-rs`~~ +~~6. Push up a commit containing the version bumps with the message `release: $HARMONIZER_RELEASE_VERSION`~~ +~~7. Wait for tests to pass on the PR~~ +~~8. Merge your PR to `main`~~ + +### ~~Build and tag release~~ This should be handled by the "Publish Components" Github Action, but instructions are preserved in case it needs to be done manually. + +~~1. Once merged, run `git checkout main && git pull`~~ +~~2. Run `cargo xtask tag --package $HARMONIZER_RELEASE_VERSION --real-publish`~~ +~~3. Wait for CI to build and publish `harmonizer` to crates.io and `supergraph` to `federation-rs` GitHub releases.~~ + +### Releasing +1. When `federation` is released, it should run the "Release Components" Github Action which will create a PR for the `harmonizer` and `router-bridge`. Identify the correct PR and validate that everything looks good. If for some reason the Github action needs to be run manually, it can be done so from https://github.com/apollographql/federation-rs/actions/workflows/release.yml (you will need to pass in the version you are releasing as an input). +1. If the PR build doesn't pass, you may need to make updates the code in order to get it working. +1. Once everything builds correctly, approve and merge the PR. +1. Validate that the "Publish Components" action is created and runs correctly. ### Update the latest version delivered by Rover diff --git a/federation-2/router-bridge/RELEASE_CHECKLIST.md b/federation-2/router-bridge/RELEASE_CHECKLIST.md index 5a862635..57aebf8c 100644 --- a/federation-2/router-bridge/RELEASE_CHECKLIST.md +++ b/federation-2/router-bridge/RELEASE_CHECKLIST.md @@ -8,25 +8,32 @@ This is a list of the things that need to happen when publishing `router-bridge` None of the `federation-rs` packages currently maintain changelogs as they are largely mirrors of upstream packages. You're off the hook! -### Start a release PR - -1. Make sure you have both `npm` and `cargo` installed on your machine and in your `PATH`. -1. Run `ROUTERBRIDGE_RELEASE_VERSION=router-bridge@v{version}` where `{version}` is the new version you're bumping to. -1. Run `git checkout main && git stash && git pull && git checkout -b $ROUTERBRIDGE_RELEASE_VERSION`. -1. Update the version of `@apollo/federation-internals` and `@apollo/query-planner` in the `package.json`. -1. Then run `npm install` from the `federation-2/router-bridge` directory to let it update the `package-lock.json`. -1. Update the version of `router-bridge` in `Cargo.toml` -1. Run `cargo build -p router-bridge` from the `federation-2/` workspace -1. Push up a commit containing the version bumps with the message `release: $ROUTERBRIDGE_RELEASE_VERSION` -1. Wait for tests to pass on the PR -1. Merge your PR to `main` - -### Build and tag release - -1. Once merged, run `git checkout main && git pull` -1. Return to the root of the repository if you're not already there. -1. Run `cargo xtask tag --package $ROUTERBRIDGE_RELEASE_VERSION --real-publish` -1. Wait for CI to build and publish `router-bridge` to crates.io. +### ~~Start a release PR~~ This should be handled by the "Release Components" Github Action, but instructions are preserved in case it needs to be done manually. + +~~1. Make sure you have both `npm` and `cargo` installed on your machine and in your `PATH`.~~ +~~2. Run `ROUTERBRIDGE_RELEASE_VERSION=router-bridge@v{version}` where `{version}` is the new version you're bumping to.~~ +~~3. Run `git checkout main && git stash && git pull && git checkout -b $ROUTERBRIDGE_RELEASE_VERSION`.~~ +~~4. Update the version of `@apollo/federation-internals` and `@apollo/query-planner` in the `package.json`.~~ +~~5. Then run `npm install` from the `federation-2/router-bridge` directory to let it update the `package-lock.json`.~~ +~~6. Update the version of `router-bridge` in `Cargo.toml`~~ +~~7. Run `cargo build -p router-bridge` from the `federation-2/` workspace~~ +~~8. Push up a commit containing the version bumps with the message `release: $ROUTERBRIDGE_RELEASE_VERSION`~~ +~~9. Wait for tests to pass on the PR~~ +~~10. Merge your PR to `main`~~ + +### ~~Build and tag release~~ This should be handled by the "Publish Components" Github Action, but instructions are preserved in case it needs to be done manually. + +~~1. Once merged, run `git checkout main && git pull`~~ +~~2. Return to the root of the repository if you're not already there.~~ +~~3. Run `cargo xtask tag --package $ROUTERBRIDGE_RELEASE_VERSION --real-publish`~~ +~~4. Wait for CI to build and publish `router-bridge` to crates.io.~~ + +### Releasing +1. When `federation` is released, it should run the "Release Components" Github Action which will create a PR for the `harmonizer` and `router-bridge`. Identify the correct PR and validate that everything looks good. If for some reason the Github action needs to be run manually, it can be done so from https://github.com/apollographql/federation-rs/actions/workflows/release.yml (you will need to pass in the version you are releasing as an input). +1. If the PR build doesn't pass, you may need to make updates the code in order to get it working. +1. Once everything builds correctly, approve and merge the PR. +1. Validate that the "Publish Components" action is created and runs correctly. + ## Troubleshooting a release