From 97b6dddb168176325a5282c236d4cc31cc9e84ad Mon Sep 17 00:00:00 2001 From: Phil Leggetter Date: Mon, 16 Jun 2025 13:36:36 +0100 Subject: [PATCH 1/7] refactor: update homebrew cask configuration for hookdeck CLI --- .goreleaser/mac.yml | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/.goreleaser/mac.yml b/.goreleaser/mac.yml index 0afde56a..e10564c4 100644 --- a/.goreleaser/mac.yml +++ b/.goreleaser/mac.yml @@ -36,8 +36,9 @@ checksum: name_template: "{{ .ProjectName }}-checksums.txt" snapshot: name_template: "{{ .Tag }}-next" -brews: - - repository: +homebrew_casks: + - name: hookdeck + repository: owner: hookdeck name: homebrew-hookdeck commit_author: @@ -45,19 +46,19 @@ brews: email: support@hookdeck.com homepage: https://hookdeck.com description: Hookdeck CLI utility - install: | - bin.install "hookdeck" - rm Dir["#{bin}/{hookdeck-completion.bash,hookdeck-completion.zsh}"] - system bin/"hookdeck", "completion", "--shell", "bash" - system bin/"hookdeck", "completion", "--shell", "zsh" - bash_completion.install "hookdeck-completion.bash" - zsh_completion.install "hookdeck-completion.zsh" - (zsh_completion/"_hookdeck").write <<~EOS - #compdef hookdeck - _hookdeck () { - local e - e=$(dirname ${funcsourcetrace[1]%:*})/hookdeck-completion.zsh - if [[ -f $e ]]; then source $e; fi - } - EOS caveats: "❤ Thanks for installing the Hookdeck CLI! If this is your first time using the CLI, be sure to run `hookdeck login` first." + custom_block: | + postflight do + system "hookdeck", "completion", "--shell", "bash" + system "hookdeck", "completion", "--shell", "zsh" + bash_completion.install "hookdeck-completion.bash" + zsh_completion.install "hookdeck-completion.zsh" + (zsh_completion/"_hookdeck").write <<~EOS + #compdef hookdeck + _hookdeck () { + local e + e=$(dirname ${funcsourcetrace[1]%:*})/hookdeck-completion.zsh + if [[ -f $e ]]; then source $e; fi + } + EOS + end From 5ed804c36d7e53792d8adfc4eace0f7289f963e0 Mon Sep 17 00:00:00 2001 From: Phil Leggetter Date: Mon, 16 Jun 2025 15:29:38 +0100 Subject: [PATCH 2/7] refactor: streamline release workflow by removing windows-npm job and enhancing docker image tagging --- .github/workflows/release.yml | 59 +++++++++++++++++++++-------------- .goreleaser/linux.yml | 13 ++++---- .goreleaser/windows-npm.yml | 45 -------------------------- .goreleaser/windows.yml | 1 + 4 files changed, 43 insertions(+), 75 deletions(-) delete mode 100644 .goreleaser/windows-npm.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a8813d62..86153f09 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -75,36 +75,35 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GORELEASER_GITHUB_TOKEN }} - build-windows-npm: - runs-on: windows-latest - steps: - - name: Code checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Set up Go - uses: actions/setup-go@v5 - with: - go-version: 1.18.1 - - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v5 - with: - version: latest - args: release -f .goreleaser/windows-npm.yml --clean - env: - GITHUB_TOKEN: ${{ secrets.GORELEASER_GITHUB_TOKEN }} - publish-npm: runs-on: ubuntu-latest - needs: [build-windows-npm, build-linux, build-mac] + needs: [build-windows, build-linux, build-mac] steps: - uses: actions/checkout@v4 with: - # Checkout on main so that the later commit works - ref: main # With permission to push to a protected branch token: ${{ secrets.READ_WRITE_PAT }} - + fetch-depth: 0 # Required to find branches for a tag + + - name: Determine release branch + id: get_branch + run: | + # Find the branch that contains the tag. + # Prefers 'main', then 'master', then the first branch found. + BRANCHES=$(git branch -r --contains ${{ github.ref_name }} | sed 's/ *origin\///' | grep -v HEAD) + if echo "$BRANCHES" | grep -q -w "main"; then + RELEASE_BRANCH="main" + elif echo "$BRANCHES" | grep -q -w "master"; then + RELEASE_BRANCH="master" + else + RELEASE_BRANCH=$(echo "$BRANCHES" | head -n 1) + fi + echo "RELEASE_BRANCH=${RELEASE_BRANCH}" >> $GITHUB_OUTPUT + echo "Determined release branch for commit: ${RELEASE_BRANCH}" + + - name: Checkout release branch + run: git checkout ${{ steps.get_branch.outputs.RELEASE_BRANCH }} + - uses: actions/setup-node@v4 with: node-version: "20.x" @@ -133,6 +132,18 @@ jobs: add: 'package.json' - run: npm ci - - run: npm publish + + - name: Determine npm tag for pre-releases + id: npm_tag + run: | + TAG_VERSION="${{ steps.tag-version.outputs.TAG_VERSION }}" + NPM_TAG="latest" + if [[ "$TAG_VERSION" == *-* ]]; then + NPM_TAG=$(echo "$TAG_VERSION" | cut -d'-' -f2 | cut -d'.' -f1) + fi + echo "tag=${NPM_TAG}" >> $GITHUB_OUTPUT + echo "npm tag: ${NPM_TAG}" + + - run: npm publish --tag ${{ steps.npm_tag.outputs.tag }} env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.goreleaser/linux.yml b/.goreleaser/linux.yml index 4bd9e69d..c6200696 100644 --- a/.goreleaser/linux.yml +++ b/.goreleaser/linux.yml @@ -55,8 +55,8 @@ dockers: ids: - hookdeck-linux image_templates: - - "hookdeck/hookdeck-cli:latest-amd64" - "hookdeck/hookdeck-cli:{{ .Tag }}-amd64" + - "{{ if not .Prerelease }}hookdeck/hookdeck-cli:latest-amd64{{ end }}" build_flag_templates: - "--pull" - "--label=org.opencontainers.image.created={{.Date}}" @@ -71,8 +71,8 @@ dockers: ids: - hookdeck-linux-arm64 image_templates: - - "hookdeck/hookdeck-cli:latest-arm64" - "hookdeck/hookdeck-cli:{{ .Tag }}-arm64" + - "{{ if not .Prerelease }}hookdeck/hookdeck-cli:latest-arm64{{ end }}" build_flag_templates: - "--pull" - "--label=org.opencontainers.image.created={{.Date}}" @@ -83,11 +83,12 @@ dockers: - "--label=homepage=https://hookdeck.com" - "--platform=linux/arm64/v8" docker_manifests: - - name_template: "hookdeck/hookdeck-cli:latest" - image_templates: - - "hookdeck/hookdeck-cli:latest-amd64" - - "hookdeck/hookdeck-cli:latest-arm64" - name_template: "hookdeck/hookdeck-cli:{{ .Tag }}" image_templates: - "hookdeck/hookdeck-cli:{{ .Tag }}-amd64" - "hookdeck/hookdeck-cli:{{ .Tag }}-arm64" + - name_template: "hookdeck/hookdeck-cli:latest" + image_templates: + - "hookdeck/hookdeck-cli:latest-amd64" + - "hookdeck/hookdeck-cli:latest-arm64" + disable: "{{ .Prerelease }}" diff --git a/.goreleaser/windows-npm.yml b/.goreleaser/windows-npm.yml deleted file mode 100644 index c7fc2e14..00000000 --- a/.goreleaser/windows-npm.yml +++ /dev/null @@ -1,45 +0,0 @@ -env: - - GO111MODULE=on -before: - hooks: - - go mod download - - go generate ./... -project_name: hookdeck -builds: - - id: hookdeck-windows - ldflags: - - -s -w -X github.com/hookdeck/hookdeck-cli/pkg/version.Version={{.Version}} - binary: hookdeck - env: - - CGO_ENABLED=1 - - CC=x86_64-w64-mingw32-gcc - - CXX=x86_64-w64-mingw32-g++ - main: ./main.go - goos: - - windows - goarch: - - amd64 - - 386 -archives: - - files: - - none* -changelog: - sort: asc - filters: - exclude: - - "^docs:" - - "^test:" -checksum: - name_template: "{{ .ProjectName }}-windows-checksums-npm.txt" -snapshot: - name_template: "{{ .Tag }}-next" -scoops: - - repository: - owner: hookdeck - name: scoop-hookdeck - commit_author: - name: hookdeck-ci - email: support@hookdeck.com - homepage: https://hookdeck.com - description: Hookdeck CLI utility - license: Apache 2.0 diff --git a/.goreleaser/windows.yml b/.goreleaser/windows.yml index b442b2e9..50d0c4ef 100644 --- a/.goreleaser/windows.yml +++ b/.goreleaser/windows.yml @@ -40,6 +40,7 @@ scoops: - repository: owner: hookdeck name: scoop-hookdeck + name: "{{ if .Prerelease }}hookdeck-beta{{ else }}hookdeck{{ end }}" commit_author: name: hookdeck-ci email: support@hookdeck.com From 5377f29022ef41ffeb65c4ab3be7e6746da0be67 Mon Sep 17 00:00:00 2001 From: Phil Leggetter Date: Mon, 16 Jun 2025 16:00:58 +0100 Subject: [PATCH 3/7] chore: update goreleaser configuration files to version 2 --- .goreleaser/linux.yml | 3 ++- .goreleaser/mac.yml | 1 + .goreleaser/windows.yml | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.goreleaser/linux.yml b/.goreleaser/linux.yml index c6200696..d5999a23 100644 --- a/.goreleaser/linux.yml +++ b/.goreleaser/linux.yml @@ -1,3 +1,4 @@ +version: 2 env: - GO111MODULE=on before: @@ -91,4 +92,4 @@ docker_manifests: image_templates: - "hookdeck/hookdeck-cli:latest-amd64" - "hookdeck/hookdeck-cli:latest-arm64" - disable: "{{ .Prerelease }}" + skip_push: auto diff --git a/.goreleaser/mac.yml b/.goreleaser/mac.yml index e10564c4..4752a63f 100644 --- a/.goreleaser/mac.yml +++ b/.goreleaser/mac.yml @@ -1,3 +1,4 @@ +version: 2 env: - GO111MODULE=on before: diff --git a/.goreleaser/windows.yml b/.goreleaser/windows.yml index 50d0c4ef..cf73675d 100644 --- a/.goreleaser/windows.yml +++ b/.goreleaser/windows.yml @@ -1,3 +1,4 @@ +version: 2 env: - GO111MODULE=on before: From e850dad40a990a714c69696cf628c461c41575c7 Mon Sep 17 00:00:00 2001 From: Phil Leggetter Date: Mon, 16 Jun 2025 16:04:52 +0100 Subject: [PATCH 4/7] chore: update GoReleaser version to v2.10.2 in release workflow --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 86153f09..7cb89035 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,7 +20,7 @@ jobs: - name: Run GoReleaser uses: goreleaser/goreleaser-action@v4 with: - version: latest + version: v2.10.2 args: release -f .goreleaser/mac.yml --clean env: GITHUB_TOKEN: ${{ secrets.GORELEASER_GITHUB_TOKEN }} @@ -51,7 +51,7 @@ jobs: - name: Run GoReleaser uses: goreleaser/goreleaser-action@v4 with: - version: latest + version: v2.10.2 args: release -f .goreleaser/linux.yml --clean env: GITHUB_TOKEN: ${{ secrets.GORELEASER_GITHUB_TOKEN }} @@ -70,7 +70,7 @@ jobs: - name: Run GoReleaser uses: goreleaser/goreleaser-action@v5 with: - version: latest + version: v2.10.2 args: release -f .goreleaser/windows.yml --clean env: GITHUB_TOKEN: ${{ secrets.GORELEASER_GITHUB_TOKEN }} From 20fda406884c9c53b690376bdb2980a166da4477 Mon Sep 17 00:00:00 2001 From: Phil Leggetter Date: Mon, 16 Jun 2025 16:33:55 +0100 Subject: [PATCH 5/7] refactor: remove redundant build-windows-npm job from workflow --- .github/workflows/test.yml | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c14f6848..8d33f25c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -80,22 +80,3 @@ jobs: args: release --skip=publish --snapshot -f .goreleaser/windows.yml --clean env: GITHUB_TOKEN: ${{ secrets.GORELEASER_GITHUB_TOKEN }} - - build-windows-npm: - runs-on: windows-latest - steps: - - name: Code checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Set up Go - uses: actions/setup-go@v5 - with: - go-version: 1.18.1 - - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v5 - with: - version: latest - args: release --skip=publish --snapshot -f .goreleaser/windows-npm.yml --clean - env: - GITHUB_TOKEN: ${{ secrets.GORELEASER_GITHUB_TOKEN }} From dc7c145aa352f84d38d3a1625fafdb3f7155a706 Mon Sep 17 00:00:00 2001 From: Phil Leggetter Date: Mon, 16 Jun 2025 16:38:41 +0100 Subject: [PATCH 6/7] chore: upgrade GoReleaser action to v5 and set version to v2.10.2 in macOS and Linux jobs --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7cb89035..654c75ee 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: with: go-version: 1.18.1 - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v4 + uses: goreleaser/goreleaser-action@v5 with: version: v2.10.2 args: release -f .goreleaser/mac.yml --clean @@ -49,7 +49,7 @@ jobs: with: go-version: 1.18.1 - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v4 + uses: goreleaser/goreleaser-action@v5 with: version: v2.10.2 args: release -f .goreleaser/linux.yml --clean From 94a371b0485fd85e53d69d0de5fbdeded9740281 Mon Sep 17 00:00:00 2001 From: Phil Leggetter Date: Mon, 16 Jun 2025 16:48:59 +0100 Subject: [PATCH 7/7] chore: upgrade GoReleaser action to v5 and set version to v2.10.2 in macOS, Linux, and Windows jobs --- .github/workflows/test.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8d33f25c..a936e1fd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,9 +23,9 @@ jobs: with: go-version: 1.18.1 - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v4 + uses: goreleaser/goreleaser-action@v5 with: - version: latest + version: v2.10.2 args: release --skip=publish --snapshot -f .goreleaser/mac.yml --clean env: GITHUB_TOKEN: ${{ secrets.GORELEASER_GITHUB_TOKEN }} @@ -55,9 +55,9 @@ jobs: with: go-version: 1.18.1 - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v4 + uses: goreleaser/goreleaser-action@v5 with: - version: latest + version: v2.10.2 args: release --skip=publish --snapshot -f .goreleaser/linux.yml --clean env: GITHUB_TOKEN: ${{ secrets.GORELEASER_GITHUB_TOKEN }} @@ -76,7 +76,7 @@ jobs: - name: Run GoReleaser uses: goreleaser/goreleaser-action@v5 with: - version: latest + version: v2.10.2 args: release --skip=publish --snapshot -f .goreleaser/windows.yml --clean env: GITHUB_TOKEN: ${{ secrets.GORELEASER_GITHUB_TOKEN }}