Merge pull request #86 from bnema/feat/aur-git-ci
Add CI-triggered AUR publish for dumber-browser-git
1 file · +109 -11
M .github/workflows/aur.yml +109 -11
| @@ -1,24 +1,122 @@ | |||
| 1 | 1 | name: AUR Publish | |
| 2 | 2 | ||
| 3 | - | # This workflow only publishes the dumber-browser-bin package to AUR. | |
| 4 | - | # The dumber-browser-git package does not need automated updates since it | |
| 5 | - | # always builds from the latest source using `git+https://` in its PKGBUILD. | |
| 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 | 6 | ||
| 7 | 7 | on: | |
| 8 | 8 | workflow_run: | |
| 9 | - | workflows: ["Flatpak"] | |
| 9 | + | workflows: ["CI", "Flatpak"] | |
| 10 | 10 | types: | |
| 11 | 11 | - completed | |
| 12 | 12 | ||
| 13 | - | concurrency: | |
| 14 | - | group: aur-publish-${{ github.event.workflow_run.head_branch }} | |
| 15 | - | cancel-in-progress: true | |
| 16 | - | ||
| 17 | 13 | jobs: | |
| 18 | - | publish-aur: | |
| 19 | - | name: Publish to AUR | |
| 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@v4 | |
| 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.25' 'npm' 'git')" \ | |
| 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 | + | ' export GOFLAGS="-buildmode=pie -trimpath -mod=readonly -modcacherw"' \ | |
| 85 | + | ' make build' \ | |
| 86 | + | '}' \ | |
| 87 | + | '' \ | |
| 88 | + | 'package() {' \ | |
| 89 | + | ' cd dumber' \ | |
| 90 | + | ' install -Dm755 dist/dumber "${pkgdir}/usr/bin/dumber"' \ | |
| 91 | + | ' install -Dm644 dev.bnema.Dumber.desktop "${pkgdir}/usr/share/applications/dev.bnema.Dumber.desktop"' \ | |
| 92 | + | ' install -Dm644 assets/logo-512.png "${pkgdir}/usr/share/icons/hicolor/512x512/apps/dev.bnema.Dumber.png"' \ | |
| 93 | + | ' install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"' \ | |
| 94 | + | '}' \ | |
| 95 | + | > pkgbuild/dumber-browser-git/PKGBUILD | |
| 96 | + | ||
| 97 | + | echo "Generated PKGBUILD:" | |
| 98 | + | cat pkgbuild/dumber-browser-git/PKGBUILD | |
| 99 | + | ||
| 100 | + | - name: Publish dumber-browser-git to AUR | |
| 101 | + | uses: KSXGitHub/github-actions-deploy-aur@v4.1.1 | |
| 102 | + | with: | |
| 103 | + | pkgname: dumber-browser-git | |
| 104 | + | pkgbuild: ./pkgbuild/dumber-browser-git/PKGBUILD | |
| 105 | + | commit_username: ${{ secrets.AUR_USERNAME }} | |
| 106 | + | commit_email: ${{ secrets.AUR_EMAIL }} | |
| 107 | + | ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }} | |
| 108 | + | commit_message: "Update to ${{ steps.pkgver.outputs.version }}" | |
| 109 | + | ssh_keyscan_types: rsa,ecdsa,ed25519 | |
| 110 | + | ||
| 111 | + | publish-aur-bin: | |
| 112 | + | name: Publish dumber-browser-bin to AUR | |
| 20 | 113 | runs-on: ubuntu-latest | |
| 21 | - | if: ${{ github.event.workflow_run.conclusion == 'success' }} | |
| 114 | + | if: > | |
| 115 | + | github.event.workflow_run.name == 'Flatpak' && | |
| 116 | + | github.event.workflow_run.conclusion == 'success' | |
| 117 | + | concurrency: | |
| 118 | + | group: aur-bin-publish-${{ github.event.workflow_run.head_branch }} | |
| 119 | + | cancel-in-progress: true | |
| 22 | 120 | ||
| 23 | 121 | steps: | |
| 24 | 122 | - uses: actions/checkout@v4 | |
| @@ -1,24 +1,122 @@ | |||||
| 1 | name: AUR Publish | 1 | name: AUR Publish | ||
| 2 | 2 | ||||
| 3 | - | # This workflow only publishes the dumber-browser-bin package to AUR. | 3 | + | # This workflow publishes both AUR packages: |
| 4 | - | # The dumber-browser-git package does not need automated updates since it | 4 | + | # - dumber-browser-bin: Published after Flatpak workflow completes (on release) |
| 5 | - | # always builds from the latest source using `git+https://` in its PKGBUILD. | 5 | + | # - dumber-browser-git: Published after CI workflow completes on main branch |
| 6 | 6 | ||||
| 7 | on: | 7 | on: | ||
| 8 | workflow_run: | 8 | workflow_run: | ||
| 9 | - | workflows: ["Flatpak"] | 9 | + | workflows: ["CI", "Flatpak"] |
| 10 | types: | 10 | types: | ||
| 11 | - completed | 11 | - completed | ||
| 12 | 12 | ||||
| 13 | - | concurrency: | |||
| 14 | - | group: aur-publish-${{ github.event.workflow_run.head_branch }} | |||
| 15 | - | cancel-in-progress: true | |||
| 16 | - | ||||
| 17 | jobs: | 13 | jobs: | ||
| 18 | - | publish-aur: | 14 | + | publish-aur-git: |
| 19 | - | name: Publish to AUR | 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@v4 | |||
| 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.25' 'npm' 'git')" \ | |||
| 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 | + | ' export GOFLAGS="-buildmode=pie -trimpath -mod=readonly -modcacherw"' \ | |||
| 85 | + | ' make build' \ | |||
| 86 | + | '}' \ | |||
| 87 | + | '' \ | |||
| 88 | + | 'package() {' \ | |||
| 89 | + | ' cd dumber' \ | |||
| 90 | + | ' install -Dm755 dist/dumber "${pkgdir}/usr/bin/dumber"' \ | |||
| 91 | + | ' install -Dm644 dev.bnema.Dumber.desktop "${pkgdir}/usr/share/applications/dev.bnema.Dumber.desktop"' \ | |||
| 92 | + | ' install -Dm644 assets/logo-512.png "${pkgdir}/usr/share/icons/hicolor/512x512/apps/dev.bnema.Dumber.png"' \ | |||
| 93 | + | ' install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"' \ | |||
| 94 | + | '}' \ | |||
| 95 | + | > pkgbuild/dumber-browser-git/PKGBUILD | |||
| 96 | + | ||||
| 97 | + | echo "Generated PKGBUILD:" | |||
| 98 | + | cat pkgbuild/dumber-browser-git/PKGBUILD | |||
| 99 | + | ||||
| 100 | + | - name: Publish dumber-browser-git to AUR | |||
| 101 | + | uses: KSXGitHub/github-actions-deploy-aur@v4.1.1 | |||
| 102 | + | with: | |||
| 103 | + | pkgname: dumber-browser-git | |||
| 104 | + | pkgbuild: ./pkgbuild/dumber-browser-git/PKGBUILD | |||
| 105 | + | commit_username: ${{ secrets.AUR_USERNAME }} | |||
| 106 | + | commit_email: ${{ secrets.AUR_EMAIL }} | |||
| 107 | + | ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }} | |||
| 108 | + | commit_message: "Update to ${{ steps.pkgver.outputs.version }}" | |||
| 109 | + | ssh_keyscan_types: rsa,ecdsa,ed25519 | |||
| 110 | + | ||||
| 111 | + | publish-aur-bin: | |||
| 112 | + | name: Publish dumber-browser-bin to AUR | |||
| 20 | runs-on: ubuntu-latest | 113 | runs-on: ubuntu-latest | ||
| 21 | - | if: ${{ github.event.workflow_run.conclusion == 'success' }} | 114 | + | if: > |
| 115 | + | github.event.workflow_run.name == 'Flatpak' && | |||
| 116 | + | github.event.workflow_run.conclusion == 'success' | |||
| 117 | + | concurrency: | |||
| 118 | + | group: aur-bin-publish-${{ github.event.workflow_run.head_branch }} | |||
| 119 | + | cancel-in-progress: true | |||
| 22 | 120 | ||||
| 23 | steps: | 121 | steps: | ||
| 24 | - uses: actions/checkout@v4 | 122 | - uses: actions/checkout@v4 | ||