update release workflow #444
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release F2 | |
env: | |
dev_tag: nightly | |
go_version: 1.23 | |
REPO_OWNER: ${{ vars.REPO_OWNER }} | |
REPO_WEBSITE: ${{ vars.REPO_WEBSITE }} | |
REPO_DESCRIPTION: ${{ vars.REPO_DESCRIPTION }} | |
REPO_MAINTAINER: ${{ vars.REPO_MAINTAINER }} | |
REPO_AUTHOR_NAME: ${{ vars.REPO_AUTHOR_NAME }} | |
REPO_AUTHOR_EMAIL: ${{ vars.REPO_AUTHOR_EMAIL }} | |
REPO_BINARY_NAME: ${{ vars.REPO_BINARY_NAME }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- master | |
tags: | |
- v* | |
pull_request: | |
jobs: | |
create_tag_master: | |
name: Create nightly tag for master branch | |
runs-on: ubuntu-latest | |
if: github.ref_type == 'branch' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Update nightly tag | |
run: | | |
git tag -d ${{ env.dev_tag }} || true | |
git push origin :refs/tags/${{ env.dev_tag }} || true | |
git tag ${{ env.dev_tag }} | |
git push origin ${{ env.dev_tag }} | |
publish_nightly: | |
needs: create_tag_master | |
name: Release nightly version | |
runs-on: ubuntu-latest | |
env: | |
GH_REPO: ${{ github.repository }} | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up Go ${{ env.go_version }} | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.go_version }} | |
- name: Delete existing nightly release | |
run: | | |
gh release delete nightly --yes || true | |
- name: Create nightly release | |
uses: softprops/action-gh-release@v2 | |
with: | |
tag_name: refs/tags/${{ env.dev_tag }} | |
name: Development build (master) | |
body: | | |
This build is directly sourced from the `master` branch in active development. As such, it may include experimental features and potential bugs. | |
draft: false | |
prerelease: true | |
- name: Build assets with Goreleaser | |
uses: goreleaser/goreleaser-action@v6 | |
with: | |
version: ~> v2 | |
args: release --clean --snapshot | |
- name: Upload assets to nightly release | |
run: gh release upload ${{ env.dev_tag }} dist/{*.tar.gz,*.zip,*.tar.zst,*.deb,*.rpm,*.apk,checksums.txt} --clobber | |
run_tests: | |
runs-on: ${{ matrix.os }} | |
if: github.ref_type == 'tag' | |
strategy: | |
matrix: | |
os: [macos-latest, ubuntu-latest, windows-latest] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: 1.23 | |
- name: Use Exiftool | |
uses: woss/[email protected] | |
if: matrix.os != 'windows-latest' | |
- uses: MinoruSekine/[email protected] | |
with: | |
apps: exiftool | |
if: matrix.os == 'windows-latest' | |
- name: Set up gotestfmt | |
run: go install github.com/gotesttools/gotestfmt/v2/cmd/gotestfmt@latest | |
- name: Run tests | |
run: go test ./... -json -v -race 2>&1 | gotestfmt -hide 'empty-packages' | |
publish_stable: | |
name: Release stable version | |
runs-on: ubuntu-latest | |
needs: run_tests | |
if: github.ref_type == 'tag' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up Go ${{ env.go_version }} | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.go_version }} | |
- name: Create stable release | |
uses: softprops/action-gh-release@v2 | |
with: | |
tag_name: ${{ github.ref }} | |
name: ${{ github.ref }} | |
body: ${{ env.CHANGELOG }} | |
draft: false | |
prerelease: false | |
- name: Run Goreleaser | |
uses: goreleaser/goreleaser-action@v6 | |
with: | |
version: ~> v2 | |
args: release --clean | |
env: | |
GORELEASER_GITHUB_TOKEN: ${{ secrets.SCOOP_BUCKET_GITHUB_TOKEN }} | |
FURY_TOKEN: ${{ secrets.FURY_PUSH_TOKEN }} | |
FURY_USERNAME: ${{ secrets.FURY_USERNAME }} | |
publish_npm: | |
needs: publish_stable | |
name: Publish new F2 version | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out the code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
registry-url: https://registry.npmjs.org/ | |
node-version: "22" | |
- name: Publish to NPM | |
run: npm publish | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} |