From 194afad9fc213078712d9e9abe29ad81240a6f4a Mon Sep 17 00:00:00 2001 From: Rob Ede Date: Tue, 21 Jul 2026 14:17:49 +0100 Subject: [PATCH] add release-plz automation --- .github/workflows/release.yml | 62 +++++++++++++++++++++++++++++++++++ .release-plz.toml | 9 +++++ flake.lock | 26 ++++++++++++++- flake.nix | 6 ++++ 4 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/release.yml create mode 100644 .release-plz.toml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..0d52d5b --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,62 @@ +name: Release + +on: + push: + branches: [main] + +permissions: + contents: write + pull-requests: write + id-token: write + +jobs: + release: + name: Release + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + fetch-depth: 0 + + - name: Install Rust + uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 # v1.17.0 + + - name: Authenticate with crates.io + uses: rust-lang/crates-io-auth-action@c6f97d42243bad5fab37ca0427f495c86d5b1a18 # v1.0.5 + id: auth + + - name: release-plz + uses: MarcoIeni/release-plz-action@e8792575c7f2366cf6ff3ccc33ead9ace5b691c7 # v0.5.130 + id: release-plz + env: + GITHUB_TOKEN: ${{ github.token }} + CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }} + + - name: Install Determinate Nix + if: ${{ steps.release-plz.outputs.prs_created == 'true' || steps.release-plz.outputs.releases_created == 'true' }} + uses: DeterminateSystems/determinate-nix-action@2a0be2498974c2b6327e19780488744384637d88 # v3.21.7 + with: + extra-conf: lazy-trees = true + + - name: Set up FlakeHub Cache + if: ${{ steps.release-plz.outputs.prs_created == 'true' || steps.release-plz.outputs.releases_created == 'true' }} + uses: DeterminateSystems/flakehub-cache-action@3be0931021788e3bb4df65f59a555039c2fa2d46 # v3.21.7 + + - name: Enter Nix devshell + if: ${{ steps.release-plz.outputs.prs_created == 'true' || steps.release-plz.outputs.releases_created == 'true' }} + uses: nicknovitski/nix-develop@9be7cfb4b10451d3390a75dc18ad0465bed4932a # v1.2.1 + + - name: Bump changelog versions + if: ${{ steps.release-plz.outputs.prs_created == 'true' }} + env: + GH_TOKEN: ${{ github.token }} + RELEASE_PLZ_PR_JSON: ${{ steps.release-plz.outputs.pr }} + run: x52-bump-changelogs + + - name: Update release notes + if: ${{ steps.release-plz.outputs.releases_created == 'true' }} + env: + GH_TOKEN: ${{ github.token }} + RELEASE_PLZ_RELEASES_JSON: ${{ steps.release-plz.outputs.releases }} + run: x52-update-release-notes diff --git a/.release-plz.toml b/.release-plz.toml new file mode 100644 index 0000000..e194143 --- /dev/null +++ b/.release-plz.toml @@ -0,0 +1,9 @@ +[workspace] +changelog_update = false +dependencies_update = false +pr_draft = true +pr_labels = ["release"] +publish_all_features = true +git_tag_name = "{{ package }}-v{{ version }}" +git_release_draft = true +git_release_name = "{{ package }}: v{{ version }}" diff --git a/flake.lock b/flake.lock index abfadf4..ad8c19a 100644 --- a/flake.lock +++ b/flake.lock @@ -52,7 +52,31 @@ "root": { "inputs": { "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "x52": "x52" + } + }, + "x52": { + "inputs": { + "flake-parts": [ + "flake-parts" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1784633661, + "narHash": "sha256-eOrF1y0svdniEnjIuuvkzOv6z/ltBepYjApINcDY1Xg=", + "owner": "x52dev", + "repo": "nix", + "rev": "5e898b3d4b5bb9801964488d6ab4a6ed445c1809", + "type": "github" + }, + "original": { + "owner": "x52dev", + "repo": "nix", + "type": "github" } } }, diff --git a/flake.nix b/flake.nix index 6a7c689..9b1ec32 100644 --- a/flake.nix +++ b/flake.nix @@ -2,6 +2,11 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; flake-parts.url = "github:hercules-ci/flake-parts"; + x52 = { + url = "github:x52dev/nix"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.flake-parts.follows = "flake-parts"; + }; }; outputs = inputs@{ flake-parts, ... }: @@ -13,6 +18,7 @@ devShells.default = pkgs.mkShell { packages = [ config.formatter + inputs'.x52.packages.x52-release-tools pkgs.cargo-nextest pkgs.cargo-shear pkgs.fd