Skip to content

update release workflow #444

update release workflow

update release workflow #444

Workflow file for this run

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 }}