aur.yml RawHistoryFolder
1name: AUR Publish
2
3# This workflow publishes both AUR packages:
4# - dumber-browser-bin: Published after Flatpak workflow completes (on release)
5# - dumber-browser-git: Published after CI workflow completes on main branch
6
7on:
8 workflow_run:
9 workflows: ["CI", "Flatpak"]
10 types:
11 - completed
12
13jobs:
14 publish-aur-git:
15 name: Publish dumber-browser-git to AUR
16 runs-on: ubuntu-latest
17 if: >
18 github.event.workflow_run.name == 'CI' &&
19 github.event.workflow_run.conclusion == 'success' &&
20 github.event.workflow_run.head_branch == 'main'
21 concurrency:
22 group: aur-git-publish
23 cancel-in-progress: true
24
25 steps:
26 - uses: actions/checkout@v6
27 with:
28 ref: ${{ github.event.workflow_run.head_sha }}
29 fetch-depth: 0
30
31 - name: Calculate pkgver
32 id: pkgver
33 run: |
34 # Use same logic as PKGBUILD pkgver() function
35 PKGVER=$(git describe --long --tags 2>/dev/null | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g' || echo "0.0.0.r$(git rev-list --count HEAD).g$(git rev-parse --short HEAD)")
36 echo "version=${PKGVER}" >> $GITHUB_OUTPUT
37 echo "Calculated pkgver: ${PKGVER}"
38
39 - name: Generate PKGBUILD for dumber-browser-git
40 run: |
41 PKGVER="${{ steps.pkgver.outputs.version }}"
42
43 mkdir -p pkgbuild/dumber-browser-git
44
45 printf '%s\n' \
46 '# Maintainer: bnema <b at bnema dot dev>' \
47 'pkgname=dumber-browser-git' \
48 "pkgver=${PKGVER}" \
49 'pkgrel=1' \
50 'pkgdesc="A minimal keyboard-driven browser for tiling WMs (git version)"' \
51 "arch=('x86_64')" \
52 'url="https://github.com/bnema/dumber"' \
53 "license=('MIT')" \
54 "makedepends=('go>=1.26' 'git' 'brotli')" \
55 "depends=('gtk4' 'webkitgtk-6.0')" \
56 'optdepends=(' \
57 " 'gst-plugins-base: Base media codecs'" \
58 " 'gst-plugins-good: Additional media codecs'" \
59 " 'gst-plugins-bad: Extended media codecs'" \
60 " 'gst-plugins-ugly: Patented media codecs'" \
61 " 'gst-libav: FFmpeg-based codecs'" \
62 " 'gst-plugin-pipewire: PipeWire audio support'" \
63 " 'gst-plugin-va: Hardware video decoding (VA-API stateless decoders)'" \
64 " 'pipewire: Audio/video routing'" \
65 " 'pipewire-pulse: PulseAudio replacement'" \
66 " 'mesa: VA-API driver for AMD GPUs'" \
67 " 'libva-nvidia-driver: VA-API driver for NVIDIA GPUs'" \
68 " 'libva-intel-driver: VA-API driver for older Intel GPUs'" \
69 " 'intel-media-driver: VA-API driver for newer Intel GPUs (Broadwell+)'" \
70 ')' \
71 "provides=('dumber-browser' 'dumber')" \
72 "conflicts=('dumber-browser' 'dumber-browser-bin')" \
73 'source=("git+https://github.com/bnema/dumber.git")' \
74 "sha256sums=('SKIP')" \
75 '' \
76 'pkgver() {' \
77 ' cd dumber' \
78 ' git describe --long --tags 2>/dev/null | sed '"'"'s/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'"'"' || echo "0.0.0.r$(git rev-list --count HEAD).g$(git rev-parse --short HEAD)"' \
79 '}' \
80 '' \
81 'build() {' \
82 ' cd dumber' \
83 ' export CGO_ENABLED=0' \
84 ' # Keep global GOFLAGS wasm-safe; apply PIE only to native Go builds.' \
85 ' export GOFLAGS="-trimpath -mod=readonly -modcacherw"' \
86 ' export NATIVE_GOFLAGS="${GOFLAGS} -buildmode=pie"' \
87 ' make build' \
88 '}' \
89 '' \
90 'package() {' \
91 ' cd dumber' \
92 ' install -Dm755 dist/dumber "${pkgdir}/usr/bin/dumber"' \
93 ' install -Dm644 flatpak/dev.bnema.Dumber.desktop "${pkgdir}/usr/share/applications/dev.bnema.Dumber.desktop"' \
94 ' install -Dm644 assets/logo-512.png "${pkgdir}/usr/share/icons/hicolor/512x512/apps/dev.bnema.Dumber.png"' \
95 ' install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"' \
96 '}' \
97 > pkgbuild/dumber-browser-git/PKGBUILD
98
99 echo "Generated PKGBUILD:"
100 cat pkgbuild/dumber-browser-git/PKGBUILD
101
102 - name: Publish dumber-browser-git to AUR
103 uses: KSXGitHub/github-actions-deploy-aur@v4.1.3
104 with:
105 pkgname: dumber-browser-git
106 pkgbuild: ./pkgbuild/dumber-browser-git/PKGBUILD
107 commit_username: ${{ secrets.AUR_USERNAME }}
108 commit_email: ${{ secrets.AUR_EMAIL }}
109 ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
110 commit_message: "Update to ${{ steps.pkgver.outputs.version }}"
111 ssh_keyscan_types: rsa,ecdsa,ed25519
112
113 publish-aur-bin:
114 name: Publish dumber-browser-bin to AUR
115 runs-on: ubuntu-latest
116 if: >
117 github.event.workflow_run.name == 'Flatpak' &&
118 github.event.workflow_run.conclusion == 'success'
119 concurrency:
120 group: aur-bin-publish-${{ github.event.workflow_run.head_branch }}
121 cancel-in-progress: true
122
123 steps:
124 - uses: actions/checkout@v6
125 with:
126 fetch-depth: 0
127
128 - name: Get release info
129 id: release
130 run: |
131 TAG=$(git describe --tags --abbrev=0)
132 VERSION=${TAG#v}
133 echo "tag=${TAG}" >> $GITHUB_OUTPUT
134 echo "version=${VERSION}" >> $GITHUB_OUTPUT
135 echo "Publishing AUR package for $TAG (version $VERSION)"
136
137 - name: Wait 1 hour before publishing
138 run: |
139 echo "Waiting 1 hour before publishing to AUR..."
140 echo "This gives time to cancel if there are issues with the release."
141 echo "Started at: $(date -u)"
142 sleep 3600
143 echo "Wait complete at: $(date -u)"
144
145 - name: Verify release still exists
146 run: |
147 TAG="${{ steps.release.outputs.tag }}"
148 if ! gh release view "$TAG" &>/dev/null; then
149 echo "::error::Release $TAG no longer exists. Aborting AUR publish."
150 exit 1
151 fi
152 echo "Release $TAG verified, proceeding with AUR publish."
153 env:
154 GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
155
156 - name: Download checksums
157 id: checksum
158 run: |
159 TAG="${{ steps.release.outputs.tag }}"
160 curl -sL "https://github.com/bnema/dumber/releases/download/${TAG}/checksums.txt" -o checksums.txt
161 cat checksums.txt
162 SHA256=$(grep 'dumber_linux_x86_64.tar.gz' checksums.txt | cut -d' ' -f1)
163 if [ -z "$SHA256" ]; then
164 echo "::error::Failed to extract SHA256 from checksums.txt"
165 exit 1
166 fi
167 echo "sha256=${SHA256}" >> $GITHUB_OUTPUT
168 echo "SHA256: ${SHA256}"
169
170 - name: Generate PKGBUILD for dumber-browser-bin
171 run: |
172 VERSION="${{ steps.release.outputs.version }}"
173 SHA256="${{ steps.checksum.outputs.sha256 }}"
174
175 mkdir -p pkgbuild/dumber-browser-bin
176
177 # Write PKGBUILD using printf to avoid heredoc issues
178 printf '%s\n' \
179 '# Maintainer: bnema <b at bnema dot dev>' \
180 'pkgname=dumber-browser-bin' \
181 "pkgver=${VERSION}" \
182 'pkgrel=1' \
183 'pkgdesc="A minimal keyboard-driven browser for tiling WMs"' \
184 "arch=('x86_64')" \
185 'url="https://github.com/bnema/dumber"' \
186 "license=('MIT')" \
187 "depends=('gtk4' 'webkitgtk-6.0')" \
188 'optdepends=(' \
189 " 'gst-plugins-base: Base media codecs'" \
190 " 'gst-plugins-good: Additional media codecs'" \
191 " 'gst-plugins-bad: Extended media codecs'" \
192 " 'gst-plugins-ugly: Patented media codecs'" \
193 " 'gst-libav: FFmpeg-based codecs'" \
194 " 'gst-plugin-pipewire: PipeWire audio support'" \
195 " 'gst-plugin-va: Hardware video decoding (VA-API stateless decoders)'" \
196 " 'pipewire: Audio/video routing'" \
197 " 'pipewire-pulse: PulseAudio replacement'" \
198 " 'mesa: VA-API driver for AMD GPUs'" \
199 " 'libva-nvidia-driver: VA-API driver for NVIDIA GPUs'" \
200 " 'libva-intel-driver: VA-API driver for older Intel GPUs'" \
201 " 'intel-media-driver: VA-API driver for newer Intel GPUs (Broadwell+)'" \
202 ')' \
203 "provides=('dumber-browser' 'dumber')" \
204 "conflicts=('dumber-browser' 'dumber-browser-git')" \
205 'source=("${pkgname}-${pkgver}.tar.gz::https://github.com/bnema/dumber/releases/download/v${pkgver}/dumber_linux_x86_64.tar.gz")' \
206 "sha256sums=('${SHA256}')" \
207 '' \
208 'package() {' \
209 ' cd "${srcdir}/dumber_${pkgver}"' \
210 ' install -Dm755 dumber "${pkgdir}/usr/bin/dumber"' \
211 ' install -Dm644 dev.bnema.Dumber.desktop "${pkgdir}/usr/share/applications/dev.bnema.Dumber.desktop"' \
212 ' install -Dm644 logo-512.png "${pkgdir}/usr/share/icons/hicolor/512x512/apps/dev.bnema.Dumber.png"' \
213 ' install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"' \
214 '}' \
215 > pkgbuild/dumber-browser-bin/PKGBUILD
216
217 echo "Generated PKGBUILD:"
218 cat pkgbuild/dumber-browser-bin/PKGBUILD
219
220 - name: Publish dumber-browser-bin to AUR
221 uses: KSXGitHub/github-actions-deploy-aur@v4.1.3
222 with:
223 pkgname: dumber-browser-bin
224 pkgbuild: ./pkgbuild/dumber-browser-bin/PKGBUILD
225 commit_username: ${{ secrets.AUR_USERNAME }}
226 commit_email: ${{ secrets.AUR_EMAIL }}
227 ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
228 commit_message: "Update to ${{ steps.release.outputs.version }}"
229 ssh_keyscan_types: rsa,ecdsa,ed25519