release: v0.1.0-beta.2 notes (proving-loop hardening + UI honesty pass) #6
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: release | |
| on: | |
| push: | |
| tags: | |
| - 'v*' | |
| permissions: | |
| contents: write | |
| env: | |
| GO_VERSION: '1.25.7' | |
| jobs: | |
| # Linux binaries + .deb/.rpm via nfpm, for amd64 + arm64. | |
| # | |
| # curio-core builds CGO-free on linux (the blooms storage/paths carve-out | |
| # via go.mod replace). macOS is NOT built here yet: lotus/system -> gosigar | |
| # needs CGO on darwin and CGO=1 pulls in filecoin-ffi. Tracked as a darwin | |
| # carve-out follow-up (see packaging/build-packages.sh header). | |
| linux-packages: | |
| name: linux ${{ matrix.arch }} packages | |
| runs-on: ubuntu-22.04 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arch: [amd64, arm64] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: ${{ env.GO_VERSION }} | |
| check-latest: false | |
| - name: Install tooling (nfpm + gettext for envsubst) | |
| run: | | |
| set -euo pipefail | |
| go install github.com/goreleaser/nfpm/v2/cmd/nfpm@latest | |
| echo "$(go env GOPATH)/bin" >> "$GITHUB_PATH" | |
| sudo apt-get update -qq | |
| sudo apt-get install -y gettext-base | |
| - name: Build binary + .deb + .rpm | |
| env: | |
| GOPRIVATE: github.com/Reiers/* | |
| run: | | |
| set -euo pipefail | |
| bash packaging/build-packages.sh "${GITHUB_REF_NAME}" "${{ matrix.arch }}" | |
| - name: Upload artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: linux-${{ matrix.arch }} | |
| path: | | |
| dist/curio-core-linux-${{ matrix.arch }} | |
| dist/curio-core-linux-${{ matrix.arch }}.sha256 | |
| dist/curio-core_*_${{ matrix.arch }}.deb | |
| dist/curio-core-*.rpm | |
| # macOS .pkg (arm64). curio-core now builds CGO-free on darwin thanks to | |
| # the third_party/gosigar replace (#80). Unsigned/notarized-later. | |
| macos-pkg: | |
| name: macos arm64 .pkg | |
| runs-on: macos-14 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: ${{ env.GO_VERSION }} | |
| check-latest: false | |
| - name: Build .pkg | |
| env: | |
| GOPRIVATE: github.com/Reiers/* | |
| run: bash packaging/build-pkg-macos.sh "${GITHUB_REF_NAME}" arm64 | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: macos-arm64 | |
| path: | | |
| dist/curio-core-darwin-arm64 | |
| dist/curio-core-darwin-arm64.sha256 | |
| dist/curio-core-*-arm64.pkg | |
| dist/curio-core-*-arm64.pkg.sha256 | |
| source-tarball: | |
| name: source tarball | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Create reproducible source tarball | |
| run: | | |
| set -euo pipefail | |
| VERSION="${GITHUB_REF_NAME}" | |
| PREFIX="curio-core-${VERSION#v}" | |
| mkdir -p dist | |
| git archive --format=tar.gz --prefix="${PREFIX}/" \ | |
| -o "dist/curio-core-${VERSION}-source.tar.gz" HEAD | |
| (cd dist && sha256sum "curio-core-${VERSION}-source.tar.gz" > "curio-core-${VERSION}-source.tar.gz.sha256") | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: source-tarball | |
| path: | | |
| dist/curio-core-*.tar.gz | |
| dist/curio-core-*.tar.gz.sha256 | |
| release: | |
| name: GitHub release | |
| needs: [linux-packages, macos-pkg, source-tarball] | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| path: artifacts | |
| - name: Flatten artifacts | |
| run: | | |
| set -euo pipefail | |
| mkdir -p release | |
| find artifacts -type f \ | |
| \( -name 'curio-core-linux-*' -o -name 'curio-core_*.deb' \ | |
| -o -name 'curio-core-*.rpm' -o -name 'curio-core-darwin-*' \ | |
| -o -name 'curio-core-*.pkg' -o -name 'curio-core-*.pkg.sha256' \ | |
| -o -name 'curio-core-*source.tar.gz*' \) \ | |
| -exec cp {} release/ \; | |
| ls -1 release/ | |
| - name: Check out source for release notes | |
| uses: actions/checkout@v4 | |
| with: | |
| path: src | |
| fetch-depth: 0 | |
| - name: Resolve release notes body | |
| id: notes | |
| run: | | |
| set -euo pipefail | |
| NOTES="src/RELEASE-NOTES-${GITHUB_REF_NAME}.md" | |
| if [ -f "$NOTES" ]; then | |
| echo "using hand-written notes: $NOTES" | |
| echo "body_path=$NOTES" >> "$GITHUB_OUTPUT" | |
| echo "generate=false" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "no hand-written notes; falling back to auto-generated" | |
| echo "body_path=" >> "$GITHUB_OUTPUT" | |
| echo "generate=true" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Publish release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: release/* | |
| body_path: ${{ steps.notes.outputs.body_path }} | |
| generate_release_notes: ${{ steps.notes.outputs.generate }} | |
| fail_on_unmatched_files: true |