diff --git a/.github/PULL_REQUEST_TEMPLATE/release-checklist.md b/.github/PULL_REQUEST_TEMPLATE/release-checklist.md index 8679a37154f..d71683b04ba 100644 --- a/.github/PULL_REQUEST_TEMPLATE/release-checklist.md +++ b/.github/PULL_REQUEST_TEMPLATE/release-checklist.md @@ -101,9 +101,6 @@ cargo release replace --verbose --execute --allow-branch '*' --package zebrad cargo release commit --verbose --execute --allow-branch '*' ``` -Crate publishing is [automatically checked in CI](https://github.com/ZcashFoundation/zebra/actions/workflows/release-crates-io.yml) using "dry run" mode, however due to a bug in `cargo-release` we need to pass exact versions to the alpha crates: - -- [ ] Update `zebra-scan` and `zebra-grpc` alpha crates in the [release-crates-dry-run workflow script](https://github.com/ZcashFoundation/zebra/blob/main/.github/workflows/scripts/release-crates-dry-run.sh) - [ ] Push the above version changes to the release branch. ## Update End of Support diff --git a/.github/workflows/release-crates-io.patch.yml b/.github/workflows/release-crates-io.patch.yml deleted file mode 100644 index e8f18d6c755..00000000000 --- a/.github/workflows/release-crates-io.patch.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Release crates - -on: - # Only patch the Release PR test job - pull_request: - paths-ignore: - # code and tests - - '**/*.rs' - # hard-coded checkpoints (and proptest regressions, which are not actually needed) - - '**/*.txt' - # dependencies - - '**/Cargo.toml' - - '**/Cargo.lock' - # configuration files - - '.cargo/config.toml' - - '**/clippy.toml' - # READMEs, which are shown on the crate page - - '**/README.md' - # workflow definitions - - '.github/workflows/release-crates.io.yml' - - -jobs: - check-release: - name: Check crate release dry run - runs-on: ubuntu-latest - steps: - - run: 'echo "No check required"' diff --git a/.github/workflows/release-crates-io.yml b/.github/workflows/release-crates-io.yml deleted file mode 100644 index 32586ce5fbe..00000000000 --- a/.github/workflows/release-crates-io.yml +++ /dev/null @@ -1,126 +0,0 @@ -# This workflow checks that Zebra's crates.io release script works. -# -# We use a separate action, because the changed files are different to a Continuous Deployment -# or Docker release. -# -# This workflow is triggered when: -# - A PR that changes Rust files, a README, or this workflow is opened or updated -# - A change is pushed to the main branch -# -# TODO: -# If we decide to automate crates.io releases, we can also publish crates using this workflow, when: -# - A release is published -# - A pre-release is changed to a release - -name: Release crates - -# Ensures that only one workflow task will run at a time. Previous releases, if -# already in process, won't get cancelled. Instead, we let the first release complete, -# then queue the latest pending workflow, cancelling any workflows in between. -# -# Since the different event types do very different things (test vs release), -# we can run different event types concurrently. -# -# For pull requests, we only run the tests from this workflow, and don't do any releases. -# So an in-progress pull request gets cancelled, just like other tests. -concurrency: - group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} - cancel-in-progress: ${{ github.event_name == 'pull_request' }} - - -on: -# disabled for now -# release: -# types: -# - released - - # Only runs the release tests, doesn't release any crates. - # - # We test all changes on the main branch, just in case the PR paths are too strict. - push: - branches: - - main - - pull_request: - paths: - # code and tests - - '**/*.rs' - # hard-coded checkpoints (and proptest regressions, which are not actually needed) - - '**/*.txt' - # dependencies - - '**/Cargo.toml' - - '**/Cargo.lock' - # configuration files - - '.cargo/config.toml' - - '**/clippy.toml' - # READMEs, which are shown on the crate page - - '**/README.md' - # workflow definitions - - '.github/workflows/release-crates.io.yml' - - -jobs: - # Test that Zebra can be released to crates.io using `cargo`. - # This checks that Zebra's dependencies and release configs are correct. - check-release: - name: Check crate release dry run - timeout-minutes: 15 - runs-on: ubuntu-latest - steps: - - uses: r7kamura/rust-problem-matchers@v1.5.0 - - - name: Checkout git repository - uses: actions/checkout@v4.2.2 - with: - persist-credentials: false - - - name: Inject slug/short variables - uses: rlespinasse/github-slug-action@v5 - with: - short-length: 7 - - # Setup Rust with stable toolchain and minimal profile - - name: Setup Rust - run: | - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain=stable --profile=minimal - - - name: Install cargo-release - uses: baptiste0928/cargo-install@v3.3.0 - with: - crate: cargo-release - - # Make sure Zebra can be released! - # - # These steps should be kept up to date with the release checklist. - # - - name: Crate release dry run - run: | - ./.github/workflows/scripts/release-crates-dry-run.sh - - # TODO: actually do the release here - #release-crates: - # name: Release Zebra Crates - # needs: [ check-release ] - # runs-on: ubuntu-latest - # timeout-minutes: 30 - # if: ${{ !cancelled() && !failure() && github.event_name == 'release' }} - # steps: - # ... - - failure-issue: - name: Open or update issues for release crates failures - # When a new job is added to this workflow, add it to this list. - needs: [ check-release ] - # Only open tickets for failed or cancelled jobs that are not coming from PRs. - # (PR statuses are already reported in the PR jobs list, and checked by GitHub's Merge Queue.) - if: (failure() && github.event.pull_request == null) || (cancelled() && github.event.pull_request == null) - runs-on: ubuntu-latest - steps: - - uses: jayqi/failed-build-issue-action@v1 - with: - title-template: "{{refname}} branch CI failed: {{eventName}} in {{workflow}}" - # New failures open an issue with this label. - label-name: S-ci-fail-release-crates-auto-issue - # If there is already an open issue with this label, any failures become comments on that issue. - always-create-new-issue: false - github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/scripts/release-crates-dry-run.sh b/.github/workflows/scripts/release-crates-dry-run.sh deleted file mode 100755 index c83b068f5bd..00000000000 --- a/.github/workflows/scripts/release-crates-dry-run.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env bash -set -ex - -# Check if necessary tools are installed -if ! command -v git &>/dev/null || ! command -v cargo &>/dev/null; then - echo "ERROR: Required tools (git, cargo) are not installed." - exit 1 -fi - -git config --global user.email "release-tests-no-reply@zfnd.org" -git config --global user.name "Automated Release Test" - -# Ensure cargo-release is installed -if ! cargo release --version &>/dev/null; then - echo "ERROR: cargo release must be installed." - exit 1 -fi - -# Release process -# We use the same commands as the [release drafter](https://github.com/ZcashFoundation/zebra/blob/main/.github/PULL_REQUEST_TEMPLATE/release-checklist.md#update-crate-versions) -# with an extra `--no-confirm` argument for non-interactive testing. -# Update everything except for alpha crates and zebrad: -cargo release version --verbose --execute --no-confirm --allow-branch '*' --workspace --exclude zebrad --exclude zebra-scan --exclude zebra-grpc beta - -# Due to a bug in cargo-release, we need to pass exact versions for alpha crates: -cargo release version --verbose --execute --no-confirm --allow-branch '*' --package zebra-scan 0.1.0-alpha.13 -cargo release version --verbose --execute --no-confirm --allow-branch '*' --package zebra-grpc 0.1.0-alpha.11 - -# Update zebrad: -cargo release version --verbose --execute --no-confirm --allow-branch '*' --package zebrad patch -# Continue with the release process: -cargo release replace --verbose --execute --no-confirm --allow-branch '*' --package zebrad -cargo release commit --verbose --execute --no-confirm --allow-branch '*' - -# Dry run to check the release -# Workaround for unpublished dependency version errors: https://github.com/crate-ci/cargo-release/issues/691 -# TODO: check all crates after fixing these errors -cargo release publish --verbose --dry-run --allow-branch '*' --workspace --exclude zebra-consensus --exclude zebra-utils --exclude zebrad --exclude zebra-scan - -echo "Release process completed."