From fcf48c4f08a6618ecf0e72d73d8b1fe829a28ab8 Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Sat, 22 Feb 2025 22:46:11 +1100 Subject: [PATCH] Improve release workflow 1) the cron schedule was wrong: it was doing every saturday, rather than the first saturday of each month. 2) It wasn't triggering a deploy despite pushing a tag because clearly github doesn't want that to happen. Now it triggers a deploy, and it also allows triggering from the UI, letting you specify minor/patch bump and whether to ignore blocking PRs/issues. As such I'm removing support for the old method of pushing the tag. The new way is the only way. --- .github/workflows/cd.yml | 35 ------------------- .github/workflows/release.yml | 66 ++++++++++++++++++++++++++++++----- 2 files changed, 57 insertions(+), 44 deletions(-) delete mode 100644 .github/workflows/cd.yml diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml deleted file mode 100644 index 0b5b7d980..000000000 --- a/.github/workflows/cd.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Continuous Delivery - -on: - push: - tags: - - "v*" - -jobs: - goreleaser: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - - name: Unshallow repo - run: git fetch --prune --unshallow - - name: Setup Go - uses: actions/setup-go@v5 - with: - go-version: 1.22.x - - name: Run goreleaser - uses: goreleaser/goreleaser-action@v4 - with: - distribution: goreleaser - version: v1.17.2 - args: release --clean - env: - GITHUB_TOKEN: ${{secrets.GITHUB_API_TOKEN}} - homebrew: - runs-on: ubuntu-latest - steps: - - name: Bump Homebrew formula - uses: dawidd6/action-homebrew-bump-formula@v3 - with: - token: ${{secrets.GITHUB_API_TOKEN}} - formula: lazygit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3aefb1de2..3b791989f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,18 +1,32 @@ -name: Automated Release +name: Release on: schedule: # Runs at 2:00 AM UTC on the first Saturday of every month - cron: '0 2 1-7 * 6' - workflow_dispatch: # Allow manual triggering of the workflow + # Allow manual triggering of the workflow + workflow_dispatch: + inputs: + version_bump: + description: 'Version bump type' + type: choice + required: true + default: 'patch' + options: + - minor + - patch + ignore_blocks: + description: 'Ignore blocking PRs/issues' + type: boolean + required: true + default: false jobs: check-and-release: runs-on: ubuntu-latest - steps: - name: Checkout Code - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 @@ -30,6 +44,7 @@ jobs: fi - name: Check for Blocking Issues/PRs + if: ${{ !inputs.ignore_blocks }} id: check_blocks run: | gh auth setup-git @@ -60,14 +75,26 @@ jobs: - name: Calculate next version run: | echo "Latest tag: ${{ env.latest_tag }}" - IFS='.' read -r major minor patch <<< "${{ env.latest_tag }}" - new_minor=$((minor + 1)) - new_tag="$major.$new_minor.0" + IFS='.' read -r major minor patch <<< "${env.latest_tag#v}" + + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + if [[ "${{ inputs.version_bump }}" == "patch" ]]; then + patch=$((patch + 1)) + else + minor=$((minor + 1)) + patch=0 + fi + else + # Default behavior for scheduled runs + minor=$((minor + 1)) + patch=0 + fi + + new_tag="v$major.$minor.$patch" echo "New tag: $new_tag" echo "new_tag=$new_tag" >> $GITHUB_ENV - # This will trigger a deploy via .github/workflows/cd.yml - - name: Push New Tag + - name: Create and Push Tag run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" @@ -75,3 +102,24 @@ jobs: git push origin ${{ env.new_tag }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_API_TOKEN }} + + - name: Setup Go + uses: actions/setup-go@v5 + with: + go-version: 1.22.x + + - name: Run goreleaser + uses: goreleaser/goreleaser-action@v4 + with: + distribution: goreleaser + version: v1.17.2 + args: release --clean + env: + GITHUB_TOKEN: ${{secrets.GITHUB_API_TOKEN}} + + - name: Bump Homebrew formula + uses: dawidd6/action-homebrew-bump-formula@v3 + with: + token: ${{secrets.GITHUB_API_TOKEN}} + formula: lazygit + tag: ${{env.new_tag}}