7f1b4dc438
This is a small refactor of our workflow to test out goreleaser, a yaml based tool for building, packaging, and releasing go binaries on multiple platforms. It supports building binaries for to most of the platforms we care about, including linux and macos, and also supports publishing those binaries automatically as releases in Github, homebrew, snap, and even apt / deb. If this trial goes well, I think we should eventually replace the entire release workflow with goreleaser. For now, this test is more tightly scoped to only automated the MacOS release process, since that is the one we have the most issues with. This PRi / commit: - Builds darwin-amd64 and darwin-arm64 binaries of lotus, lotus-miner, and lotus-worker - Packages them into a universal darwin binary - Publishes those to a release in Github based on the current tag - Uses the binaries in the release to auto-publish and updated homebrew configuration to filecoin-project/homebrew-lotus - Does a `dry-run` build to produce a snapshot on release branches with no tag - Manually generate and upload checksums after goreleaser
167 lines
3.8 KiB
YAML
167 lines
3.8 KiB
YAML
project_name: lotus
|
|
before:
|
|
hooks:
|
|
- go mod tidy
|
|
- make deps
|
|
|
|
universal_binaries:
|
|
- id: lotus
|
|
replace: true
|
|
name_template: lotus
|
|
ids:
|
|
- lotus_darwin_amd64
|
|
- lotus_darwin_arm64
|
|
- id: lotus-miner
|
|
replace: true
|
|
name_template: lotus-miner
|
|
ids:
|
|
- lotus-miner_darwin_amd64
|
|
- lotus-miner_darwin_arm64
|
|
- id: lotus-worker
|
|
replace: true
|
|
name_template: lotus-worker
|
|
ids:
|
|
- lotus-worker_darwin_amd64
|
|
- lotus-worker_darwin_arm64
|
|
|
|
builds:
|
|
- id: lotus_darwin_amd64
|
|
main: ./cmd/lotus
|
|
binary: lotus
|
|
goos:
|
|
- darwin
|
|
goarch:
|
|
- amd64
|
|
env:
|
|
- CGO_ENABLED=1
|
|
- FFI_BUILD_FROM_SOURCE=1
|
|
ldflags:
|
|
- -X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.{{.ShortCommit}}
|
|
- id: lotus-miner_darwin_amd64
|
|
main: ./cmd/lotus-miner
|
|
binary: lotus-miner
|
|
goos:
|
|
- darwin
|
|
goarch:
|
|
- amd64
|
|
env:
|
|
- CGO_ENABLED=1
|
|
- FFI_BUILD_FROM_SOURCE=1
|
|
ldflags:
|
|
- -X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.{{.ShortCommit}}
|
|
- id: lotus-worker_darwin_amd64
|
|
main: ./cmd/lotus-worker
|
|
binary: lotus-worker
|
|
goos:
|
|
- darwin
|
|
goarch:
|
|
- amd64
|
|
env:
|
|
- CGO_ENABLED=1
|
|
- FFI_BUILD_FROM_SOURCE=1
|
|
ldflags:
|
|
- -X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.{{.ShortCommit}}
|
|
- id: lotus_darwin_arm64
|
|
main: ./cmd/lotus
|
|
binary: lotus
|
|
goos:
|
|
- darwin
|
|
goarch:
|
|
- arm64
|
|
env:
|
|
- CGO_ENABLED=1
|
|
- FFI_BUILD_FROM_SOURCE=1
|
|
- CPATH=/opt/homebrew/include
|
|
- LIBRARY_PATH=/opt/homebrew/lib
|
|
ldflags:
|
|
- -X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.{{.ShortCommit}}
|
|
- id: lotus-miner_darwin_arm64
|
|
main: ./cmd/lotus-miner
|
|
binary: lotus-miner
|
|
goos:
|
|
- darwin
|
|
goarch:
|
|
- arm64
|
|
env:
|
|
- CGO_ENABLED=1
|
|
- FFI_BUILD_FROM_SOURCE=1
|
|
- CPATH=/opt/homebrew/include
|
|
- LIBRARY_PATH=/opt/homebrew/lib
|
|
ldflags:
|
|
- -X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.{{.ShortCommit}}
|
|
- id: lotus-worker_darwin_arm64
|
|
main: ./cmd/lotus-worker
|
|
binary: lotus-worker
|
|
goos:
|
|
- darwin
|
|
goarch:
|
|
- arm64
|
|
env:
|
|
- CGO_ENABLED=1
|
|
- FFI_BUILD_FROM_SOURCE=1
|
|
- CPATH=/opt/homebrew/include
|
|
- LIBRARY_PATH=/opt/homebrew/lib
|
|
ldflags:
|
|
- -X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.{{.ShortCommit}}
|
|
# - id: linux
|
|
# main: ./cmd/lotus
|
|
# binary: lotus
|
|
# goos:
|
|
# - linux
|
|
# goarch:
|
|
# - amd64
|
|
# env:
|
|
# - CGO_ENABLED=1
|
|
# ldflags:
|
|
# - -X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.{{.ShortCommit}}
|
|
|
|
archives:
|
|
- id: primary
|
|
format: tar.gz
|
|
wrap_in_directory: true
|
|
files:
|
|
# this is a dumb but required hack so it doesn't include the default files
|
|
# https://github.com/goreleaser/goreleaser/issues/602
|
|
- _n_o_n_e_*
|
|
|
|
release:
|
|
github:
|
|
owner: ianconsolata
|
|
name: lotus
|
|
prerelease: auto
|
|
mode: append
|
|
name_template: "Release v{{.Version}}"
|
|
|
|
|
|
brews:
|
|
- tap:
|
|
owner: ianconsolata
|
|
name: homebrew-lotus
|
|
branch: master
|
|
ids:
|
|
- primary
|
|
install: |
|
|
bin.install "lotus"
|
|
bin.install "lotus-miner"
|
|
bin.install "lotus-worker"
|
|
test: |
|
|
system "#{bin}/lotus --version"
|
|
system "#{bin}/lotus-miner --version"
|
|
system "#{bin}/lotus-worker --version"
|
|
folder: Formula
|
|
homepage: "https://filecoin.io"
|
|
description: "A homebrew cask for installing filecoin-project/lotus on MacOS"
|
|
license: MIT
|
|
dependencies:
|
|
- name: pkg-config
|
|
- name: jq
|
|
- name: bzr
|
|
- name: hwloc
|
|
|
|
# produced manually so we can include cid checksums
|
|
checksum:
|
|
disable: true
|
|
|
|
snapshot:
|
|
name_template: "{{ .Tag }}"
|