Skip to content

release: v0.1.0-beta.2 notes (proving-loop hardening + UI honesty pass) #6

release: v0.1.0-beta.2 notes (proving-loop hardening + UI honesty pass)

release: v0.1.0-beta.2 notes (proving-loop hardening + UI honesty pass) #6

Workflow file for this run

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