release.yml RawHistoryFolder
1name: Release
2
3on:
4 push:
5 tags:
6 - 'v*'
7
8permissions:
9 contents: write
10
11jobs:
12 check-changes:
13 runs-on: ubuntu-latest
14 outputs:
15 should_release: ${{ steps.check.outputs.should_release }}
16 steps:
17 - uses: actions/checkout@v6
18 with:
19 fetch-depth: 0
20 - name: Check for release-worthy changes
21 id: check
22 run: |
23 # Get previous tag
24 PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
25 if [ -z "$PREV_TAG" ]; then
26 echo "should_release=true" >> $GITHUB_OUTPUT
27 exit 0
28 fi
29 # Check if any non-doc files changed
30 CHANGES=$(git diff --name-only $PREV_TAG HEAD | grep -v -E '(\.md$|^docs/|^\.github/workflows/|^LICENSE$)' || true)
31 if [ -n "$CHANGES" ]; then
32 echo "should_release=true" >> $GITHUB_OUTPUT
33 else
34 echo "should_release=false" >> $GITHUB_OUTPUT
35 echo "Only docs/CI changes detected, skipping release"
36 fi
37
38 lint:
39 needs: check-changes
40 if: needs.check-changes.outputs.should_release == 'true'
41 runs-on: ubuntu-latest
42 steps:
43 - uses: actions/checkout@v6
44 - uses: actions/setup-go@v6
45 with:
46 go-version: stable
47 - uses: actions/setup-node@v6
48 with:
49 node-version: '24'
50 - name: Install WebKitGTK 6.0 dependencies
51 run: |
52 sudo apt-get update
53 sudo apt-get install -y libwebkitgtk-6.0-dev libgtk-4-dev
54 - name: Build frontend assets
55 run: make build-frontend
56 - name: Run golangci-lint
57 uses: golangci/golangci-lint-action@v7
58 with:
59 version: v2.6.2
60
61 test:
62 needs: check-changes
63 if: needs.check-changes.outputs.should_release == 'true'
64 runs-on: ubuntu-latest
65 steps:
66 - uses: actions/checkout@v6
67 - uses: actions/setup-go@v6
68 with:
69 go-version: stable
70 - uses: actions/setup-node@v6
71 with:
72 node-version: '24'
73 - name: Install WebKitGTK 6.0 dependencies
74 run: |
75 sudo apt-get update
76 sudo apt-get install -y libwebkitgtk-6.0-dev libgtk-4-dev
77 - name: Build frontend assets
78 run: make build-frontend
79 - name: Run tests
80 run: CGO_ENABLED=1 go test -tags=webkit_cgo -v ./...
81
82 release:
83 needs: [check-changes, lint, test]
84 if: needs.check-changes.outputs.should_release == 'true'
85 runs-on: ubuntu-latest
86 steps:
87 - uses: actions/checkout@v6
88 with:
89 fetch-depth: 0
90 - uses: actions/setup-go@v6
91 with:
92 go-version: stable
93 - name: Install WebKitGTK 6.0 dependencies
94 run: |
95 sudo apt-get update
96 sudo apt-get install -y libwebkitgtk-6.0-dev libgtk-4-dev
97 - uses: actions/setup-node@v6
98 with:
99 node-version: '24'
100 - name: Run GoReleaser
101 uses: goreleaser/goreleaser-action@v6
102 with:
103 distribution: goreleaser
104 version: "~> v2"
105 args: release --clean
106 env:
107 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}