name: AUR Publish # This workflow publishes both AUR packages: # - dumber-browser-bin: Published after Flatpak workflow completes (on release) # - dumber-browser-git: Published after CI workflow completes on main branch on: workflow_run: workflows: ["CI", "Flatpak"] types: - completed jobs: publish-aur-git: name: Publish dumber-browser-git to AUR runs-on: ubuntu-latest if: > github.event.workflow_run.name == 'CI' && github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.head_branch == 'main' concurrency: group: aur-git-publish cancel-in-progress: true steps: - uses: actions/checkout@v6 with: ref: ${{ github.event.workflow_run.head_sha }} fetch-depth: 0 - name: Calculate pkgver id: pkgver run: | # Use same logic as PKGBUILD pkgver() function 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)") echo "version=${PKGVER}" >> $GITHUB_OUTPUT echo "Calculated pkgver: ${PKGVER}" - name: Generate PKGBUILD for dumber-browser-git run: | PKGVER="${{ steps.pkgver.outputs.version }}" mkdir -p pkgbuild/dumber-browser-git printf '%s\n' \ '# Maintainer: bnema ' \ 'pkgname=dumber-browser-git' \ "pkgver=${PKGVER}" \ 'pkgrel=1' \ 'pkgdesc="A minimal keyboard-driven browser for tiling WMs (git version)"' \ "arch=('x86_64')" \ 'url="https://github.com/bnema/dumber"' \ "license=('MIT')" \ "makedepends=('go>=1.25' 'npm' 'git')" \ "depends=('gtk4' 'webkitgtk-6.0')" \ 'optdepends=(' \ " 'gst-plugins-base: Base media codecs'" \ " 'gst-plugins-good: Additional media codecs'" \ " 'gst-plugins-bad: Extended media codecs'" \ " 'gst-plugins-ugly: Patented media codecs'" \ " 'gst-libav: FFmpeg-based codecs'" \ " 'gst-plugin-pipewire: PipeWire audio support'" \ " 'gst-plugin-va: Hardware video decoding (VA-API stateless decoders)'" \ " 'pipewire: Audio/video routing'" \ " 'pipewire-pulse: PulseAudio replacement'" \ " 'mesa: VA-API driver for AMD GPUs'" \ " 'libva-nvidia-driver: VA-API driver for NVIDIA GPUs'" \ " 'libva-intel-driver: VA-API driver for older Intel GPUs'" \ " 'intel-media-driver: VA-API driver for newer Intel GPUs (Broadwell+)'" \ ')' \ "provides=('dumber-browser' 'dumber')" \ "conflicts=('dumber-browser' 'dumber-browser-bin')" \ 'source=("git+https://github.com/bnema/dumber.git")' \ "sha256sums=('SKIP')" \ '' \ 'pkgver() {' \ ' cd dumber' \ ' 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)"' \ '}' \ '' \ 'build() {' \ ' cd dumber' \ ' export CGO_ENABLED=0' \ ' export GOFLAGS="-buildmode=pie -trimpath -mod=readonly -modcacherw"' \ ' make build' \ '}' \ '' \ 'package() {' \ ' cd dumber' \ ' install -Dm755 dist/dumber "${pkgdir}/usr/bin/dumber"' \ ' install -Dm644 flatpak/dev.bnema.Dumber.desktop "${pkgdir}/usr/share/applications/dev.bnema.Dumber.desktop"' \ ' install -Dm644 assets/logo-512.png "${pkgdir}/usr/share/icons/hicolor/512x512/apps/dev.bnema.Dumber.png"' \ ' install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"' \ '}' \ > pkgbuild/dumber-browser-git/PKGBUILD echo "Generated PKGBUILD:" cat pkgbuild/dumber-browser-git/PKGBUILD - name: Publish dumber-browser-git to AUR uses: KSXGitHub/github-actions-deploy-aur@v4.1.1 with: pkgname: dumber-browser-git pkgbuild: ./pkgbuild/dumber-browser-git/PKGBUILD commit_username: ${{ secrets.AUR_USERNAME }} commit_email: ${{ secrets.AUR_EMAIL }} ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }} commit_message: "Update to ${{ steps.pkgver.outputs.version }}" ssh_keyscan_types: rsa,ecdsa,ed25519 publish-aur-bin: name: Publish dumber-browser-bin to AUR runs-on: ubuntu-latest if: > github.event.workflow_run.name == 'Flatpak' && github.event.workflow_run.conclusion == 'success' concurrency: group: aur-bin-publish-${{ github.event.workflow_run.head_branch }} cancel-in-progress: true steps: - uses: actions/checkout@v6 with: fetch-depth: 0 - name: Get release info id: release run: | TAG=$(git describe --tags --abbrev=0) VERSION=${TAG#v} echo "tag=${TAG}" >> $GITHUB_OUTPUT echo "version=${VERSION}" >> $GITHUB_OUTPUT echo "Publishing AUR package for $TAG (version $VERSION)" - name: Wait 1 hour before publishing run: | echo "Waiting 1 hour before publishing to AUR..." echo "This gives time to cancel if there are issues with the release." echo "Started at: $(date -u)" sleep 3600 echo "Wait complete at: $(date -u)" - name: Verify release still exists run: | TAG="${{ steps.release.outputs.tag }}" if ! gh release view "$TAG" &>/dev/null; then echo "::error::Release $TAG no longer exists. Aborting AUR publish." exit 1 fi echo "Release $TAG verified, proceeding with AUR publish." env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Download checksums id: checksum run: | TAG="${{ steps.release.outputs.tag }}" curl -sL "https://github.com/bnema/dumber/releases/download/${TAG}/checksums.txt" -o checksums.txt cat checksums.txt SHA256=$(grep 'dumber_linux_x86_64.tar.gz' checksums.txt | cut -d' ' -f1) if [ -z "$SHA256" ]; then echo "::error::Failed to extract SHA256 from checksums.txt" exit 1 fi echo "sha256=${SHA256}" >> $GITHUB_OUTPUT echo "SHA256: ${SHA256}" - name: Generate PKGBUILD for dumber-browser-bin run: | VERSION="${{ steps.release.outputs.version }}" SHA256="${{ steps.checksum.outputs.sha256 }}" mkdir -p pkgbuild/dumber-browser-bin # Write PKGBUILD using printf to avoid heredoc issues printf '%s\n' \ '# Maintainer: bnema ' \ 'pkgname=dumber-browser-bin' \ "pkgver=${VERSION}" \ 'pkgrel=1' \ 'pkgdesc="A minimal keyboard-driven browser for tiling WMs"' \ "arch=('x86_64')" \ 'url="https://github.com/bnema/dumber"' \ "license=('MIT')" \ "depends=('gtk4' 'webkitgtk-6.0')" \ 'optdepends=(' \ " 'gst-plugins-base: Base media codecs'" \ " 'gst-plugins-good: Additional media codecs'" \ " 'gst-plugins-bad: Extended media codecs'" \ " 'gst-plugins-ugly: Patented media codecs'" \ " 'gst-libav: FFmpeg-based codecs'" \ " 'gst-plugin-pipewire: PipeWire audio support'" \ " 'gst-plugin-va: Hardware video decoding (VA-API stateless decoders)'" \ " 'pipewire: Audio/video routing'" \ " 'pipewire-pulse: PulseAudio replacement'" \ " 'mesa: VA-API driver for AMD GPUs'" \ " 'libva-nvidia-driver: VA-API driver for NVIDIA GPUs'" \ " 'libva-intel-driver: VA-API driver for older Intel GPUs'" \ " 'intel-media-driver: VA-API driver for newer Intel GPUs (Broadwell+)'" \ ')' \ "provides=('dumber-browser' 'dumber')" \ "conflicts=('dumber-browser' 'dumber-browser-git')" \ 'source=("${pkgname}-${pkgver}.tar.gz::https://github.com/bnema/dumber/releases/download/v${pkgver}/dumber_linux_x86_64.tar.gz")' \ "sha256sums=('${SHA256}')" \ '' \ 'package() {' \ ' cd "${srcdir}/dumber_${pkgver}"' \ ' install -Dm755 dumber "${pkgdir}/usr/bin/dumber"' \ ' install -Dm644 dev.bnema.Dumber.desktop "${pkgdir}/usr/share/applications/dev.bnema.Dumber.desktop"' \ ' install -Dm644 logo-512.png "${pkgdir}/usr/share/icons/hicolor/512x512/apps/dev.bnema.Dumber.png"' \ ' install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"' \ '}' \ > pkgbuild/dumber-browser-bin/PKGBUILD echo "Generated PKGBUILD:" cat pkgbuild/dumber-browser-bin/PKGBUILD - name: Publish dumber-browser-bin to AUR uses: KSXGitHub/github-actions-deploy-aur@v4.1.1 with: pkgname: dumber-browser-bin pkgbuild: ./pkgbuild/dumber-browser-bin/PKGBUILD commit_username: ${{ secrets.AUR_USERNAME }} commit_email: ${{ secrets.AUR_EMAIL }} ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }} commit_message: "Update to ${{ steps.release.outputs.version }}" ssh_keyscan_types: rsa,ecdsa,ed25519