ci(release): publish releases on ermite instead of GitHub
GoReleaser targets git.bnema.dev through templated github_urls, the AUR PKGBUILDs use public ermite URLs, and the GitHub-only provenance attestation is dropped. The release jobs are skipped on the GitHub mirror.
4 files · +22 -20
M .github/workflows/release.yml +3 -7
| @@ -8,7 +8,10 @@ concurrency: | |||
| 8 | 8 | group: release-${{ github.ref }} | |
| 9 | 9 | cancel-in-progress: false | |
| 10 | 10 | jobs: | |
| 11 | + | # Releases are published by ermite (git.bnema.dev); the GitHub mirror | |
| 12 | + | # receives the tags but must not publish a second release or AUR push. | |
| 11 | 13 | check: | |
| 14 | + | if: github.server_url != 'https://github.com' | |
| 12 | 15 | uses: ./.github/workflows/ci.yml | |
| 13 | 16 | ||
| 14 | 17 | release: | |
| @@ -16,8 +19,6 @@ jobs: | |||
| 16 | 19 | runs-on: ubuntu-latest | |
| 17 | 20 | permissions: | |
| 18 | 21 | contents: write # create the release | |
| 19 | - | id-token: write # sign the provenance attestation | |
| 20 | - | attestations: write | |
| 21 | 22 | steps: | |
| 22 | 23 | - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| 23 | 24 | with: | |
| @@ -33,11 +34,6 @@ jobs: | |||
| 33 | 34 | args: release --clean | |
| 34 | 35 | env: | |
| 35 | 36 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| 36 | - | - uses: actions/attest-build-provenance@4d101475d8b20a2381f78447822ac1eab6504dd8 # v4.2.2 | |
| 37 | - | with: | |
| 38 | - | subject-path: | | |
| 39 | - | dist/*.tar.gz | |
| 40 | - | dist/checksums.txt | |
| 41 | 37 | - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| 42 | 38 | with: | |
| 43 | 39 | name: aur-bin | |
| @@ -8,7 +8,10 @@ concurrency: | |||||
| 8 | group: release-${{ github.ref }} | 8 | group: release-${{ github.ref }} | ||
| 9 | cancel-in-progress: false | 9 | cancel-in-progress: false | ||
| 10 | jobs: | 10 | jobs: | ||
| 11 | + | # Releases are published by ermite (git.bnema.dev); the GitHub mirror | |||
| 12 | + | # receives the tags but must not publish a second release or AUR push. | |||
| 11 | check: | 13 | check: | ||
| 14 | + | if: github.server_url != 'https://github.com' | |||
| 12 | uses: ./.github/workflows/ci.yml | 15 | uses: ./.github/workflows/ci.yml | ||
| 13 | 16 | ||||
| 14 | release: | 17 | release: | ||
| @@ -16,8 +19,6 @@ jobs: | |||||
| 16 | runs-on: ubuntu-latest | 19 | runs-on: ubuntu-latest | ||
| 17 | permissions: | 20 | permissions: | ||
| 18 | contents: write # create the release | 21 | contents: write # create the release | ||
| 19 | - | id-token: write # sign the provenance attestation | |||
| 20 | - | attestations: write | |||
| 21 | steps: | 22 | steps: | ||
| 22 | - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | 23 | - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | ||
| 23 | with: | 24 | with: | ||
| @@ -33,11 +34,6 @@ jobs: | |||||
| 33 | args: release --clean | 34 | args: release --clean | ||
| 34 | env: | 35 | env: | ||
| 35 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | 36 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
| 36 | - | - uses: actions/attest-build-provenance@4d101475d8b20a2381f78447822ac1eab6504dd8 # v4.2.2 | |||
| 37 | - | with: | |||
| 38 | - | subject-path: | | |||
| 39 | - | dist/*.tar.gz | |||
| 40 | - | dist/checksums.txt | |||
| 41 | - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | 37 | - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | ||
| 42 | with: | 38 | with: | ||
| 43 | name: aur-bin | 39 | name: aur-bin | ||
M .goreleaser.yaml +16 -10
| @@ -1,10 +1,18 @@ | |||
| 1 | - | # Builds the GitHub release for a pushed v* tag (.github/workflows/release.yml) | |
| 1 | + | # Builds the ermite release for a pushed v* tag (.github/workflows/release.yml) | |
| 2 | 2 | # and generates the nefercap-bin PKGBUILD. The workflow verifies that PKGBUILD | |
| 3 | 3 | # with makepkg before it pushes it to the AUR, so GoReleaser never uploads it. | |
| 4 | 4 | version: 2 | |
| 5 | 5 | ||
| 6 | 6 | project_name: nefercap | |
| 7 | 7 | ||
| 8 | + | # Releases are published on ermite. In CI the runner sets GITHUB_API_URL and | |
| 9 | + | # GITHUB_SERVER_URL to an address the job can reach; the public URLs are the | |
| 10 | + | # fallback for a local run. | |
| 11 | + | github_urls: | |
| 12 | + | api: '{{ or (index .Env "GITHUB_API_URL") "https://git.bnema.dev/-/github/api" }}/' | |
| 13 | + | upload: '{{ or (index .Env "GITHUB_API_URL") "https://git.bnema.dev/-/github/api" }}/uploads/' | |
| 14 | + | download: '{{ or (index .Env "GITHUB_SERVER_URL") "https://git.bnema.dev" }}/' | |
| 15 | + | ||
| 8 | 16 | before: | |
| 9 | 17 | hooks: | |
| 10 | 18 | - go mod verify | |
| @@ -47,7 +55,7 @@ git: | |||
| 47 | 55 | ||
| 48 | 56 | changelog: | |
| 49 | 57 | sort: asc | |
| 50 | - | use: github | |
| 58 | + | use: git | |
| 51 | 59 | filters: | |
| 52 | 60 | exclude: | |
| 53 | 61 | - "^style(\\([^)]+\\))?:" | |
| @@ -96,21 +104,19 @@ release: | |||
| 96 | 104 | Linux amd64 and arm64. Replace `amd64` with `arm64` on ARM. | |
| 97 | 105 | ||
| 98 | 106 | ```sh | |
| 99 | - | gh release download {{ .Tag }} -R bnema/nefercap -p 'nefercap_{{ .Version }}_linux_amd64.tar.gz' -p checksums.txt | |
| 107 | + | curl -fLO https://git.bnema.dev/nefercap/releases/download/{{ .Tag }}/nefercap_{{ .Version }}_linux_amd64.tar.gz | |
| 108 | + | curl -fLO https://git.bnema.dev/nefercap/releases/download/{{ .Tag }}/checksums.txt | |
| 100 | 109 | sha256sum -c --ignore-missing checksums.txt | |
| 101 | - | gh attestation verify nefercap_{{ .Version }}_linux_amd64.tar.gz -R bnema/nefercap | |
| 102 | 110 | ``` | |
| 103 | 111 | ||
| 104 | - | The archive holds the `nefercap` binary, the README and the license. Install the binary as `/usr/bin/nefercap`: NeferWL allows that path to capture by default. See the [README](https://github.com/bnema/nefercap#readme) for runtime dependencies. | |
| 105 | - | footer: | | |
| 106 | - | --- | |
| 107 | - | ||
| 108 | - | **Full changelog**: https://github.com/bnema/nefercap/compare/{{ .PreviousTag }}...{{ .Tag }} | |
| 112 | + | The archive holds the `nefercap` binary, the README and the license. Install the binary as `/usr/bin/nefercap`: NeferWL allows that path to capture by default. See the [README](https://git.bnema.dev/nefercap) for runtime dependencies. | |
| 109 | 113 | ||
| 110 | 114 | aurs: | |
| 111 | 115 | - name: nefercap-bin | |
| 112 | 116 | ids: [nefercap] | |
| 113 | - | homepage: https://github.com/bnema/nefercap | |
| 117 | + | homepage: https://git.bnema.dev/nefercap | |
| 118 | + | # Public URL: github_urls.download is the CI-only relay address. | |
| 119 | + | url_template: 'https://git.bnema.dev/nefercap/releases/download/{{ .Tag }}/{{ .ArtifactName }}' | |
| 114 | 120 | description: Screenshots and silent screen recording for Wayland, from one shortcut | |
| 115 | 121 | maintainers: | |
| 116 | 122 | - "bnema <b at bnema dot dev>" | |
| @@ -1,10 +1,18 @@ | |||||
| 1 | - | # Builds the GitHub release for a pushed v* tag (.github/workflows/release.yml) | 1 | + | # Builds the ermite release for a pushed v* tag (.github/workflows/release.yml) |
| 2 | # and generates the nefercap-bin PKGBUILD. The workflow verifies that PKGBUILD | 2 | # and generates the nefercap-bin PKGBUILD. The workflow verifies that PKGBUILD | ||
| 3 | # with makepkg before it pushes it to the AUR, so GoReleaser never uploads it. | 3 | # with makepkg before it pushes it to the AUR, so GoReleaser never uploads it. | ||
| 4 | version: 2 | 4 | version: 2 | ||
| 5 | 5 | ||||
| 6 | project_name: nefercap | 6 | project_name: nefercap | ||
| 7 | 7 | ||||
| 8 | + | # Releases are published on ermite. In CI the runner sets GITHUB_API_URL and | |||
| 9 | + | # GITHUB_SERVER_URL to an address the job can reach; the public URLs are the | |||
| 10 | + | # fallback for a local run. | |||
| 11 | + | github_urls: | |||
| 12 | + | api: '{{ or (index .Env "GITHUB_API_URL") "https://git.bnema.dev/-/github/api" }}/' | |||
| 13 | + | upload: '{{ or (index .Env "GITHUB_API_URL") "https://git.bnema.dev/-/github/api" }}/uploads/' | |||
| 14 | + | download: '{{ or (index .Env "GITHUB_SERVER_URL") "https://git.bnema.dev" }}/' | |||
| 15 | + | ||||
| 8 | before: | 16 | before: | ||
| 9 | hooks: | 17 | hooks: | ||
| 10 | - go mod verify | 18 | - go mod verify | ||
| @@ -47,7 +55,7 @@ git: | |||||
| 47 | 55 | ||||
| 48 | changelog: | 56 | changelog: | ||
| 49 | sort: asc | 57 | sort: asc | ||
| 50 | - | use: github | 58 | + | use: git |
| 51 | filters: | 59 | filters: | ||
| 52 | exclude: | 60 | exclude: | ||
| 53 | - "^style(\\([^)]+\\))?:" | 61 | - "^style(\\([^)]+\\))?:" | ||
| @@ -96,21 +104,19 @@ release: | |||||
| 96 | Linux amd64 and arm64. Replace `amd64` with `arm64` on ARM. | 104 | Linux amd64 and arm64. Replace `amd64` with `arm64` on ARM. | ||
| 97 | 105 | ||||
| 98 | ```sh | 106 | ```sh | ||
| 99 | - | gh release download {{ .Tag }} -R bnema/nefercap -p 'nefercap_{{ .Version }}_linux_amd64.tar.gz' -p checksums.txt | 107 | + | curl -fLO https://git.bnema.dev/nefercap/releases/download/{{ .Tag }}/nefercap_{{ .Version }}_linux_amd64.tar.gz |
| 108 | + | curl -fLO https://git.bnema.dev/nefercap/releases/download/{{ .Tag }}/checksums.txt | |||
| 100 | sha256sum -c --ignore-missing checksums.txt | 109 | sha256sum -c --ignore-missing checksums.txt | ||
| 101 | - | gh attestation verify nefercap_{{ .Version }}_linux_amd64.tar.gz -R bnema/nefercap | |||
| 102 | ``` | 110 | ``` | ||
| 103 | 111 | ||||
| 104 | - | The archive holds the `nefercap` binary, the README and the license. Install the binary as `/usr/bin/nefercap`: NeferWL allows that path to capture by default. See the [README](https://github.com/bnema/nefercap#readme) for runtime dependencies. | 112 | + | The archive holds the `nefercap` binary, the README and the license. Install the binary as `/usr/bin/nefercap`: NeferWL allows that path to capture by default. See the [README](https://git.bnema.dev/nefercap) for runtime dependencies. |
| 105 | - | footer: | | |||
| 106 | - | --- | |||
| 107 | - | ||||
| 108 | - | **Full changelog**: https://github.com/bnema/nefercap/compare/{{ .PreviousTag }}...{{ .Tag }} | |||
| 109 | 113 | ||||
| 110 | aurs: | 114 | aurs: | ||
| 111 | - name: nefercap-bin | 115 | - name: nefercap-bin | ||
| 112 | ids: [nefercap] | 116 | ids: [nefercap] | ||
| 113 | - | homepage: https://github.com/bnema/nefercap | 117 | + | homepage: https://git.bnema.dev/nefercap |
| 118 | + | # Public URL: github_urls.download is the CI-only relay address. | |||
| 119 | + | url_template: 'https://git.bnema.dev/nefercap/releases/download/{{ .Tag }}/{{ .ArtifactName }}' | |||
| 114 | description: Screenshots and silent screen recording for Wayland, from one shortcut | 120 | description: Screenshots and silent screen recording for Wayland, from one shortcut | ||
| 115 | maintainers: | 121 | maintainers: | ||
| 116 | - "bnema <b at bnema dot dev>" | 122 | - "bnema <b at bnema dot dev>" | ||
M README.md +1 -1
| @@ -133,7 +133,7 @@ paru -S nefercap-bin # latest release, pre-built | |||
| 133 | 133 | paru -S nefercap-git # latest main, built from source | |
| 134 | 134 | ``` | |
| 135 | 135 | ||
| 136 | - | Pre-built archives are on the [releases page](https://github.com/bnema/nefercap/releases). To build from a checkout: | |
| 136 | + | Pre-built archives are on the [releases page](https://git.bnema.dev/nefercap/releases). To build from a checkout: | |
| 137 | 137 | ||
| 138 | 138 | ```sh | |
| 139 | 139 | make bin # builds bin/nefercap | |
| @@ -133,7 +133,7 @@ paru -S nefercap-bin # latest release, pre-built | |||||
| 133 | paru -S nefercap-git # latest main, built from source | 133 | paru -S nefercap-git # latest main, built from source | ||
| 134 | ``` | 134 | ``` | ||
| 135 | 135 | ||||
| 136 | - | Pre-built archives are on the [releases page](https://github.com/bnema/nefercap/releases). To build from a checkout: | 136 | + | Pre-built archives are on the [releases page](https://git.bnema.dev/nefercap/releases). To build from a checkout: |
| 137 | 137 | ||||
| 138 | ```sh | 138 | ```sh | ||
| 139 | make bin # builds bin/nefercap | 139 | make bin # builds bin/nefercap | ||
M packaging/aur/nefercap-git/PKGBUILD +2 -2
| @@ -6,7 +6,7 @@ pkgver=0.0.0.r0.g0000000 | |||
| 6 | 6 | pkgrel=1 | |
| 7 | 7 | pkgdesc='Screenshots and silent screen recording for Wayland, from one shortcut (git version)' | |
| 8 | 8 | arch=('x86_64' 'aarch64') | |
| 9 | - | url='https://github.com/bnema/nefercap' | |
| 9 | + | url='https://git.bnema.dev/nefercap' | |
| 10 | 10 | license=('GPL-3.0-only') | |
| 11 | 11 | # Loaded at runtime (purego, no cgo): not seen by makepkg's library scan. | |
| 12 | 12 | depends=('glibc' 'wayland' 'libxkbcommon' 'vulkan-icd-loader' 'vulkan-driver') | |
| @@ -16,7 +16,7 @@ optdepends=('ffmpeg: screen recording (libx264)' | |||
| 16 | 16 | 'neferwl: hidden-workspace capture, HUD exclusion and capture indicator') | |
| 17 | 17 | provides=('nefercap') | |
| 18 | 18 | conflicts=('nefercap' 'nefercap-bin') | |
| 19 | - | source=('git+https://github.com/bnema/nefercap.git') | |
| 19 | + | source=('git+https://git.bnema.dev/nefercap.git') | |
| 20 | 20 | sha256sums=('SKIP') | |
| 21 | 21 | ||
| 22 | 22 | pkgver() { | |
| @@ -6,7 +6,7 @@ pkgver=0.0.0.r0.g0000000 | |||||
| 6 | pkgrel=1 | 6 | pkgrel=1 | ||
| 7 | pkgdesc='Screenshots and silent screen recording for Wayland, from one shortcut (git version)' | 7 | pkgdesc='Screenshots and silent screen recording for Wayland, from one shortcut (git version)' | ||
| 8 | arch=('x86_64' 'aarch64') | 8 | arch=('x86_64' 'aarch64') | ||
| 9 | - | url='https://github.com/bnema/nefercap' | 9 | + | url='https://git.bnema.dev/nefercap' |
| 10 | license=('GPL-3.0-only') | 10 | license=('GPL-3.0-only') | ||
| 11 | # Loaded at runtime (purego, no cgo): not seen by makepkg's library scan. | 11 | # Loaded at runtime (purego, no cgo): not seen by makepkg's library scan. | ||
| 12 | depends=('glibc' 'wayland' 'libxkbcommon' 'vulkan-icd-loader' 'vulkan-driver') | 12 | depends=('glibc' 'wayland' 'libxkbcommon' 'vulkan-icd-loader' 'vulkan-driver') | ||
| @@ -16,7 +16,7 @@ optdepends=('ffmpeg: screen recording (libx264)' | |||||
| 16 | 'neferwl: hidden-workspace capture, HUD exclusion and capture indicator') | 16 | 'neferwl: hidden-workspace capture, HUD exclusion and capture indicator') | ||
| 17 | provides=('nefercap') | 17 | provides=('nefercap') | ||
| 18 | conflicts=('nefercap' 'nefercap-bin') | 18 | conflicts=('nefercap' 'nefercap-bin') | ||
| 19 | - | source=('git+https://github.com/bnema/nefercap.git') | 19 | + | source=('git+https://git.bnema.dev/nefercap.git') |
| 20 | sha256sums=('SKIP') | 20 | sha256sums=('SKIP') | ||
| 21 | 21 | ||||
| 22 | pkgver() { | 22 | pkgver() { | ||