2021-06-22 19:52:14 +00:00
|
|
|
version: 2.1
|
|
|
|
orbs:
|
|
|
|
aws-cli: circleci/aws-cli@1.3.2
|
|
|
|
|
|
|
|
executors:
|
|
|
|
golang:
|
|
|
|
docker:
|
2022-10-18 15:19:49 +00:00
|
|
|
# Must match GO_VERSION_MIN in project root
|
2022-08-17 19:21:03 +00:00
|
|
|
- image: cimg/go:1.18.1
|
2021-06-22 19:52:14 +00:00
|
|
|
resource_class: 2xlarge
|
|
|
|
ubuntu:
|
|
|
|
docker:
|
|
|
|
- image: ubuntu:20.04
|
2022-03-31 05:57:02 +00:00
|
|
|
packer:
|
|
|
|
description: |
|
|
|
|
The HashiCorp provided Packer container
|
|
|
|
parameters:
|
|
|
|
packer-version:
|
|
|
|
type: string
|
|
|
|
default: "1.8"
|
|
|
|
docker:
|
|
|
|
- image: hashicorp/packer:<< parameters.packer-version >>
|
|
|
|
|
2021-06-22 19:52:14 +00:00
|
|
|
|
|
|
|
commands:
|
|
|
|
prepare:
|
|
|
|
parameters:
|
|
|
|
linux:
|
|
|
|
default: true
|
|
|
|
description: is a linux build environment?
|
|
|
|
type: boolean
|
|
|
|
darwin:
|
|
|
|
default: false
|
|
|
|
description: is a darwin build environment?
|
|
|
|
type: boolean
|
|
|
|
steps:
|
|
|
|
- checkout
|
|
|
|
- git_fetch_all_tags
|
|
|
|
- when:
|
2022-10-04 00:17:52 +00:00
|
|
|
condition: <<parameters.linux>>
|
2021-06-22 19:52:14 +00:00
|
|
|
steps:
|
2022-10-14 14:13:11 +00:00
|
|
|
- run:
|
|
|
|
name: Check Go Version
|
|
|
|
command: |
|
|
|
|
v=`go version | { read _ _ v _; echo ${v#go}; }`
|
2022-10-18 15:19:49 +00:00
|
|
|
if [["[[ $v != `cat GO_VERSION_MIN` ]]"]]; then
|
|
|
|
echo "GO_VERSION_MIN file does not match the go version being used."
|
|
|
|
echo "Please update image to cimg/go:`cat GO_VERSION_MIN` or update GO_VERSION_MIN to $v."
|
2022-10-14 14:13:11 +00:00
|
|
|
exit 1
|
|
|
|
fi
|
2021-06-22 19:52:14 +00:00
|
|
|
- run: sudo apt-get update
|
|
|
|
- run: sudo apt-get install ocl-icd-opencl-dev libhwloc-dev
|
2022-10-04 00:17:52 +00:00
|
|
|
- run: sudo apt-get install python-is-python3
|
|
|
|
|
Use goreleaser to build universal darwin binaries
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
2022-07-29 02:23:03 +00:00
|
|
|
- when:
|
|
|
|
condition: <<parameters.darwin>>
|
|
|
|
steps:
|
|
|
|
- run:
|
2022-08-09 17:23:02 +00:00
|
|
|
name: Install Go
|
|
|
|
command: |
|
2022-10-18 15:19:49 +00:00
|
|
|
curl https://dl.google.com/go/go`cat GO_VERSION_MIN`.darwin-amd64.pkg -o /tmp/go.pkg && \
|
2022-08-09 17:23:02 +00:00
|
|
|
sudo installer -pkg /tmp/go.pkg -target /
|
Use goreleaser to build universal darwin binaries
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
2022-07-29 02:23:03 +00:00
|
|
|
- run:
|
|
|
|
name: Export Go
|
|
|
|
command: |
|
2022-08-09 17:23:02 +00:00
|
|
|
echo 'export GOPATH="${HOME}/go"' >> $BASH_ENV
|
Use goreleaser to build universal darwin binaries
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
2022-07-29 02:23:03 +00:00
|
|
|
- run: go version
|
|
|
|
- run:
|
2022-10-04 00:17:52 +00:00
|
|
|
name: Install dependencies with Homebrew
|
2022-11-03 14:51:20 +00:00
|
|
|
command: HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config coreutils jq hwloc
|
Use goreleaser to build universal darwin binaries
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
2022-07-29 02:23:03 +00:00
|
|
|
- run:
|
|
|
|
name: Install Rust
|
|
|
|
command: |
|
|
|
|
curl https://sh.rustup.rs -sSf | sh -s -- -y
|
2021-06-22 19:52:14 +00:00
|
|
|
- run: git submodule sync
|
|
|
|
- run: git submodule update --init
|
|
|
|
download-params:
|
|
|
|
steps:
|
|
|
|
- restore_cache:
|
|
|
|
name: Restore parameters cache
|
|
|
|
keys:
|
2022-02-03 18:49:22 +00:00
|
|
|
- 'v26-2k-lotus-params'
|
2021-06-22 19:52:14 +00:00
|
|
|
paths:
|
|
|
|
- /var/tmp/filecoin-proof-parameters/
|
|
|
|
- run: ./lotus fetch-params 2048
|
|
|
|
- save_cache:
|
|
|
|
name: Save parameters cache
|
2022-02-03 18:49:22 +00:00
|
|
|
key: 'v26-2k-lotus-params'
|
2021-06-22 19:52:14 +00:00
|
|
|
paths:
|
|
|
|
- /var/tmp/filecoin-proof-parameters/
|
|
|
|
install_ipfs:
|
|
|
|
steps:
|
|
|
|
- run: |
|
2022-11-03 14:51:20 +00:00
|
|
|
curl -O https://dist.ipfs.tech/kubo/v0.16.0/kubo_v0.16.0_linux-amd64.tar.gz
|
|
|
|
tar -xvzf kubo_v0.16.0_linux-amd64.tar.gz
|
Use goreleaser to build universal darwin binaries
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
2022-07-29 02:23:03 +00:00
|
|
|
pushd kubo
|
|
|
|
sudo bash install.sh
|
|
|
|
popd
|
2022-11-03 14:51:20 +00:00
|
|
|
rm -rf kubo
|
2022-11-18 16:08:13 +00:00
|
|
|
rm kubo_v0.16.0_linux-amd64.tar.gz
|
2021-06-22 19:52:14 +00:00
|
|
|
git_fetch_all_tags:
|
|
|
|
steps:
|
|
|
|
- run:
|
|
|
|
name: fetch all tags
|
|
|
|
command: |
|
|
|
|
git fetch --all
|
2022-03-31 05:57:02 +00:00
|
|
|
packer_build:
|
|
|
|
description: "Run a packer build"
|
|
|
|
parameters:
|
|
|
|
template:
|
|
|
|
description: |
|
|
|
|
The name of the packer template file
|
|
|
|
type: string
|
|
|
|
default: packer.json
|
|
|
|
args:
|
|
|
|
description: |
|
|
|
|
Arguments to pass to the packer build command
|
|
|
|
type: string
|
|
|
|
default: ""
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- run:
|
|
|
|
name: "Run a packer build"
|
|
|
|
command: packer build << parameters.args >> << parameters.template >>
|
2022-10-04 00:22:13 +00:00
|
|
|
no_output_timeout: 1h
|
2022-03-31 05:57:02 +00:00
|
|
|
|
2021-06-22 19:52:14 +00:00
|
|
|
jobs:
|
|
|
|
mod-tidy-check:
|
|
|
|
executor: golang
|
|
|
|
steps:
|
|
|
|
- prepare
|
2022-04-19 16:40:16 +00:00
|
|
|
- run: go mod tidy -v
|
|
|
|
- run:
|
|
|
|
name: Check git diff
|
|
|
|
command: |
|
|
|
|
git --no-pager diff go.mod go.sum
|
|
|
|
git --no-pager diff --quiet go.mod go.sum
|
2021-06-22 19:52:14 +00:00
|
|
|
|
|
|
|
test:
|
|
|
|
description: |
|
|
|
|
Run tests with gotestsum.
|
|
|
|
parameters: &test-params
|
|
|
|
executor:
|
|
|
|
type: executor
|
|
|
|
default: golang
|
|
|
|
go-test-flags:
|
|
|
|
type: string
|
|
|
|
default: "-timeout 30m"
|
|
|
|
description: Flags passed to go test.
|
|
|
|
target:
|
|
|
|
type: string
|
|
|
|
default: "./..."
|
|
|
|
description: Import paths of packages to be tested.
|
|
|
|
proofs-log-test:
|
|
|
|
type: string
|
|
|
|
default: "0"
|
|
|
|
suite:
|
|
|
|
type: string
|
|
|
|
default: unit
|
|
|
|
description: Test suite name to report to CircleCI.
|
|
|
|
gotestsum-format:
|
|
|
|
type: string
|
2021-06-22 20:32:10 +00:00
|
|
|
default: standard-verbose
|
2021-06-22 19:52:14 +00:00
|
|
|
description: gotestsum format. https://github.com/gotestyourself/gotestsum#format
|
|
|
|
executor: << parameters.executor >>
|
|
|
|
steps:
|
|
|
|
- prepare
|
|
|
|
- run:
|
|
|
|
command: make deps lotus
|
|
|
|
no_output_timeout: 30m
|
|
|
|
- download-params
|
|
|
|
- run:
|
|
|
|
name: go test
|
|
|
|
environment:
|
|
|
|
TEST_RUSTPROOFS_LOGS: << parameters.proofs-log-test >>
|
|
|
|
SKIP_CONFORMANCE: "1"
|
2022-04-19 15:21:16 +00:00
|
|
|
LOTUS_SRC_DIR: /home/circleci/project
|
2021-06-22 19:52:14 +00:00
|
|
|
command: |
|
|
|
|
mkdir -p /tmp/test-reports/<< parameters.suite >>
|
|
|
|
mkdir -p /tmp/test-artifacts
|
|
|
|
gotestsum \
|
|
|
|
--format << parameters.gotestsum-format >> \
|
|
|
|
--junitfile /tmp/test-reports/<< parameters.suite >>/junit.xml \
|
|
|
|
--jsonfile /tmp/test-artifacts/<< parameters.suite >>.json \
|
|
|
|
-- \
|
|
|
|
<< parameters.go-test-flags >> \
|
2021-06-22 20:03:05 +00:00
|
|
|
<< parameters.target >>
|
2021-06-22 19:52:14 +00:00
|
|
|
no_output_timeout: 30m
|
|
|
|
- store_test_results:
|
|
|
|
path: /tmp/test-reports
|
|
|
|
- store_artifacts:
|
|
|
|
path: /tmp/test-artifacts/<< parameters.suite >>.json
|
|
|
|
|
|
|
|
test-conformance:
|
|
|
|
description: |
|
2022-04-07 17:54:23 +00:00
|
|
|
Run tests using a corpus of interoperable test vectors for Filecoin
|
2021-06-22 19:52:14 +00:00
|
|
|
implementations to test their correctness and compliance with the Filecoin
|
|
|
|
specifications.
|
|
|
|
parameters:
|
|
|
|
<<: *test-params
|
|
|
|
vectors-branch:
|
|
|
|
type: string
|
|
|
|
default: ""
|
|
|
|
description: |
|
|
|
|
Branch on github.com/filecoin-project/test-vectors to checkout and
|
|
|
|
test with. If empty (the default) the commit defined by the git
|
|
|
|
submodule is used.
|
|
|
|
executor: << parameters.executor >>
|
|
|
|
steps:
|
|
|
|
- prepare
|
|
|
|
- run:
|
|
|
|
command: make deps lotus
|
|
|
|
no_output_timeout: 30m
|
|
|
|
- download-params
|
|
|
|
- when:
|
|
|
|
condition:
|
|
|
|
not:
|
|
|
|
equal: [ "", << parameters.vectors-branch >> ]
|
|
|
|
steps:
|
|
|
|
- run:
|
|
|
|
name: checkout vectors branch
|
|
|
|
command: |
|
|
|
|
cd extern/test-vectors
|
|
|
|
git fetch
|
|
|
|
git checkout origin/<< parameters.vectors-branch >>
|
|
|
|
- run:
|
|
|
|
name: install statediff globally
|
|
|
|
command: |
|
|
|
|
## statediff is optional; we succeed even if compilation fails.
|
|
|
|
mkdir -p /tmp/statediff
|
|
|
|
git clone https://github.com/filecoin-project/statediff.git /tmp/statediff
|
|
|
|
cd /tmp/statediff
|
|
|
|
go install ./cmd/statediff || exit 0
|
|
|
|
- run:
|
|
|
|
name: go test
|
|
|
|
environment:
|
|
|
|
SKIP_CONFORMANCE: "0"
|
|
|
|
command: |
|
|
|
|
mkdir -p /tmp/test-reports
|
|
|
|
mkdir -p /tmp/test-artifacts
|
|
|
|
gotestsum \
|
|
|
|
--format pkgname-and-test-fails \
|
|
|
|
--junitfile /tmp/test-reports/junit.xml \
|
|
|
|
-- \
|
|
|
|
-v -coverpkg ./chain/vm/,github.com/filecoin-project/specs-actors/... -coverprofile=/tmp/conformance.out ./conformance/
|
|
|
|
go tool cover -html=/tmp/conformance.out -o /tmp/test-artifacts/conformance-coverage.html
|
|
|
|
no_output_timeout: 30m
|
|
|
|
- store_test_results:
|
|
|
|
path: /tmp/test-reports
|
|
|
|
- store_artifacts:
|
|
|
|
path: /tmp/test-artifacts/conformance-coverage.html
|
2022-10-04 00:17:52 +00:00
|
|
|
|
|
|
|
build-linux-amd64:
|
|
|
|
executor: golang
|
|
|
|
steps:
|
|
|
|
- prepare
|
|
|
|
- run: make lotus lotus-miner lotus-worker
|
|
|
|
- run:
|
|
|
|
name: check tag and version output match
|
|
|
|
command: ./scripts/version-check.sh ./lotus
|
|
|
|
- run: |
|
|
|
|
mkdir -p /tmp/workspace/linux_amd64_v1 && \
|
|
|
|
mv lotus lotus-miner lotus-worker /tmp/workspace/linux_amd64_v1/
|
|
|
|
- persist_to_workspace:
|
|
|
|
root: /tmp/workspace
|
|
|
|
paths:
|
|
|
|
- linux_amd64_v1
|
|
|
|
|
|
|
|
build-darwin-amd64:
|
2021-06-22 19:52:14 +00:00
|
|
|
description: build darwin lotus binary
|
2022-10-04 00:17:52 +00:00
|
|
|
working_directory: ~/go/src/github.com/filecoin-project/lotus
|
2021-06-22 19:52:14 +00:00
|
|
|
macos:
|
2022-08-12 14:56:43 +00:00
|
|
|
xcode: "13.4.1"
|
2022-10-04 00:17:52 +00:00
|
|
|
steps:
|
|
|
|
- prepare:
|
|
|
|
linux: false
|
|
|
|
darwin: true
|
|
|
|
- run: make lotus lotus-miner lotus-worker
|
2022-11-07 16:13:00 +00:00
|
|
|
- run:
|
|
|
|
name: check tag and version output match
|
|
|
|
command: ./scripts/version-check.sh ./lotus
|
2022-10-04 00:17:52 +00:00
|
|
|
- run: |
|
|
|
|
mkdir -p /tmp/workspace/darwin_amd64_v1 && \
|
|
|
|
mv lotus lotus-miner lotus-worker /tmp/workspace/darwin_amd64_v1/
|
|
|
|
- persist_to_workspace:
|
|
|
|
root: /tmp/workspace
|
|
|
|
paths:
|
|
|
|
- darwin_amd64_v1
|
|
|
|
|
|
|
|
build-darwin-arm64:
|
|
|
|
description: self-hosted m1 runner
|
2021-06-22 19:52:14 +00:00
|
|
|
working_directory: ~/go/src/github.com/filecoin-project/lotus
|
2022-10-04 00:17:52 +00:00
|
|
|
machine: true
|
|
|
|
resource_class: filecoin-project/self-hosted-m1
|
2021-06-22 19:52:14 +00:00
|
|
|
steps:
|
2022-10-04 00:17:52 +00:00
|
|
|
- run: echo 'export PATH=/opt/homebrew/bin:"$PATH"' >> "$BASH_ENV"
|
2021-06-22 19:52:14 +00:00
|
|
|
- prepare:
|
|
|
|
linux: false
|
|
|
|
darwin: true
|
2022-10-27 10:15:29 +00:00
|
|
|
- run: |
|
|
|
|
export CPATH=$(brew --prefix)/include
|
|
|
|
export LIBRARY_PATH=$(brew --prefix)/lib
|
|
|
|
make lotus lotus-miner lotus-worker
|
2022-11-07 16:13:00 +00:00
|
|
|
- run:
|
|
|
|
name: check tag and version output match
|
|
|
|
command: ./scripts/version-check.sh ./lotus
|
2022-10-04 00:17:52 +00:00
|
|
|
- run: |
|
|
|
|
mkdir -p /tmp/workspace/darwin_arm64 && \
|
|
|
|
mv lotus lotus-miner lotus-worker /tmp/workspace/darwin_arm64/
|
2021-06-22 19:52:14 +00:00
|
|
|
- persist_to_workspace:
|
2022-10-04 00:17:52 +00:00
|
|
|
root: /tmp/workspace
|
2021-06-22 19:52:14 +00:00
|
|
|
paths:
|
2022-10-04 00:17:52 +00:00
|
|
|
- darwin_arm64
|
|
|
|
- run:
|
|
|
|
command: make clean
|
|
|
|
when: always
|
2022-10-27 10:15:29 +00:00
|
|
|
- run:
|
|
|
|
name: cleanup homebrew
|
2022-11-03 14:51:20 +00:00
|
|
|
command: HOMEBREW_NO_AUTO_UPDATE=1 brew uninstall pkg-config coreutils jq hwloc
|
2022-10-27 10:15:29 +00:00
|
|
|
when: always
|
2022-10-04 00:17:52 +00:00
|
|
|
|
|
|
|
release:
|
|
|
|
executor: golang
|
2022-10-27 10:15:29 +00:00
|
|
|
parameters:
|
|
|
|
dry-run:
|
|
|
|
default: false
|
|
|
|
description: should this release actually publish it's artifacts?
|
|
|
|
type: boolean
|
2022-10-04 00:17:52 +00:00
|
|
|
steps:
|
2022-11-03 14:51:20 +00:00
|
|
|
- checkout
|
|
|
|
- run: |
|
|
|
|
echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list
|
|
|
|
sudo apt update
|
|
|
|
sudo apt install goreleaser-pro
|
|
|
|
- install_ipfs
|
2022-10-04 00:17:52 +00:00
|
|
|
- attach_workspace:
|
|
|
|
at: /tmp/workspace
|
2022-10-27 10:15:29 +00:00
|
|
|
- when:
|
|
|
|
condition: << parameters.dry-run >>
|
|
|
|
steps:
|
2022-11-18 16:32:27 +00:00
|
|
|
- run: goreleaser release --rm-dist --snapshot --debug
|
2022-10-27 10:15:29 +00:00
|
|
|
- run: ./scripts/generate-checksums.sh
|
|
|
|
- when:
|
|
|
|
condition:
|
|
|
|
not: << parameters.dry-run >>
|
|
|
|
steps:
|
2022-11-18 16:32:27 +00:00
|
|
|
- run: goreleaser release --rm-dist --debug
|
2022-10-27 10:15:29 +00:00
|
|
|
- run: ./scripts/generate-checksums.sh
|
|
|
|
- run: ./scripts/publish-checksums.sh
|
2021-06-22 19:52:14 +00:00
|
|
|
|
|
|
|
build-appimage:
|
|
|
|
machine:
|
2022-01-14 11:07:20 +00:00
|
|
|
image: ubuntu-2004:202111-02
|
2021-06-22 19:52:14 +00:00
|
|
|
steps:
|
|
|
|
- checkout
|
|
|
|
- attach_workspace:
|
2022-11-07 16:09:30 +00:00
|
|
|
at: /tmp/workspace
|
2022-09-27 19:59:11 +00:00
|
|
|
- run:
|
|
|
|
name: Update Go
|
|
|
|
command: |
|
2022-10-14 13:23:48 +00:00
|
|
|
sudo rm -rf /usr/local/go && \
|
2022-10-18 15:19:49 +00:00
|
|
|
curl -L https://golang.org/dl/go`cat GO_VERSION_MIN`.linux-amd64.tar.gz -o /tmp/go.tar.gz && \
|
2022-09-27 19:59:11 +00:00
|
|
|
sudo tar -C /usr/local -xvf /tmp/go.tar.gz
|
|
|
|
- run: go version
|
2021-06-22 19:52:14 +00:00
|
|
|
- run:
|
|
|
|
name: install appimage-builder
|
|
|
|
command: |
|
2022-01-14 11:07:20 +00:00
|
|
|
# appimage-builder requires /dev/snd to exist. It creates containers during the testing phase
|
|
|
|
# that pass sound devices from the host to the testing container. (hard coded!)
|
|
|
|
# https://github.com/AppImageCrafters/appimage-builder/blob/master/appimagebuilder/modules/test/execution_test.py#L54
|
|
|
|
# Circleci doesn't provide a working sound device; this is enough to fake it.
|
|
|
|
if [ ! -e /dev/snd ]
|
|
|
|
then
|
|
|
|
sudo mkdir /dev/snd
|
|
|
|
sudo mknod /dev/snd/ControlC0 c 1 2
|
|
|
|
fi
|
|
|
|
|
2021-06-22 19:52:14 +00:00
|
|
|
# docs: https://appimage-builder.readthedocs.io/en/latest/intro/install.html
|
|
|
|
sudo apt update
|
|
|
|
sudo apt install -y python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace
|
|
|
|
sudo curl -Lo /usr/local/bin/appimagetool https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
|
|
|
|
sudo chmod +x /usr/local/bin/appimagetool
|
|
|
|
sudo pip3 install appimage-builder
|
|
|
|
- run:
|
|
|
|
name: install lotus dependencies
|
|
|
|
command: sudo apt install ocl-icd-opencl-dev libhwloc-dev
|
|
|
|
- run:
|
|
|
|
name: build appimage
|
|
|
|
command: |
|
|
|
|
sed -i "s/version: latest/version: ${CIRCLE_TAG:-latest}/" AppImageBuilder.yml
|
|
|
|
make appimage
|
2022-11-07 16:09:30 +00:00
|
|
|
- run: |
|
|
|
|
mkdir -p /tmp/workspace/appimage && \
|
|
|
|
mv Lotus-*.AppImage /tmp/workspace/appimage/
|
2021-06-22 19:52:14 +00:00
|
|
|
- persist_to_workspace:
|
2022-11-07 16:09:30 +00:00
|
|
|
root: /tmp/workspace
|
2021-06-22 19:52:14 +00:00
|
|
|
paths:
|
|
|
|
- appimage
|
|
|
|
|
|
|
|
|
|
|
|
gofmt:
|
|
|
|
executor: golang
|
|
|
|
steps:
|
|
|
|
- prepare
|
|
|
|
- run:
|
|
|
|
command: "! go fmt ./... 2>&1 | read"
|
|
|
|
|
|
|
|
gen-check:
|
|
|
|
executor: golang
|
|
|
|
steps:
|
|
|
|
- prepare
|
|
|
|
- run: make deps
|
|
|
|
- run: go install golang.org/x/tools/cmd/goimports
|
|
|
|
- run: go install github.com/hannahhoward/cbor-gen-for
|
|
|
|
- run: make gen
|
|
|
|
- run: git --no-pager diff
|
|
|
|
- run: git --no-pager diff --quiet
|
|
|
|
- run: make docsgen-cli
|
|
|
|
- run: git --no-pager diff
|
|
|
|
- run: git --no-pager diff --quiet
|
|
|
|
|
|
|
|
docs-check:
|
|
|
|
executor: golang
|
|
|
|
steps:
|
|
|
|
- prepare
|
|
|
|
- run: go install golang.org/x/tools/cmd/goimports
|
|
|
|
- run: zcat build/openrpc/full.json.gz | jq > ../pre-openrpc-full
|
|
|
|
- run: zcat build/openrpc/miner.json.gz | jq > ../pre-openrpc-miner
|
|
|
|
- run: zcat build/openrpc/worker.json.gz | jq > ../pre-openrpc-worker
|
|
|
|
- run: make deps
|
|
|
|
- run: make docsgen
|
|
|
|
- run: zcat build/openrpc/full.json.gz | jq > ../post-openrpc-full
|
|
|
|
- run: zcat build/openrpc/miner.json.gz | jq > ../post-openrpc-miner
|
|
|
|
- run: zcat build/openrpc/worker.json.gz | jq > ../post-openrpc-worker
|
|
|
|
- run: git --no-pager diff
|
|
|
|
- run: diff ../pre-openrpc-full ../post-openrpc-full
|
|
|
|
- run: diff ../pre-openrpc-miner ../post-openrpc-miner
|
|
|
|
- run: diff ../pre-openrpc-worker ../post-openrpc-worker
|
|
|
|
- run: git --no-pager diff --quiet
|
|
|
|
|
|
|
|
lint: &lint
|
|
|
|
description: |
|
|
|
|
Run golangci-lint.
|
|
|
|
parameters:
|
|
|
|
executor:
|
|
|
|
type: executor
|
|
|
|
default: golang
|
|
|
|
concurrency:
|
|
|
|
type: string
|
|
|
|
default: '2'
|
|
|
|
description: |
|
|
|
|
Concurrency used to run linters. Defaults to 2 because NumCPU is not
|
|
|
|
aware of container CPU limits.
|
|
|
|
args:
|
|
|
|
type: string
|
|
|
|
default: ''
|
|
|
|
description: |
|
|
|
|
Arguments to pass to golangci-lint
|
|
|
|
executor: << parameters.executor >>
|
|
|
|
steps:
|
|
|
|
- prepare
|
|
|
|
- run:
|
|
|
|
command: make deps
|
|
|
|
no_output_timeout: 30m
|
|
|
|
- run:
|
|
|
|
name: Lint
|
|
|
|
command: |
|
2022-04-19 16:40:16 +00:00
|
|
|
golangci-lint run -v --timeout 2m \
|
2021-06-22 19:52:14 +00:00
|
|
|
--concurrency << parameters.concurrency >> << parameters.args >>
|
|
|
|
lint-all:
|
|
|
|
<<: *lint
|
|
|
|
|
|
|
|
publish:
|
|
|
|
description: publish binary artifacts
|
|
|
|
executor: ubuntu
|
2022-07-25 05:16:16 +00:00
|
|
|
parameters:
|
|
|
|
linux:
|
|
|
|
default: false
|
|
|
|
description: publish linux binaries?
|
|
|
|
type: boolean
|
|
|
|
appimage:
|
|
|
|
default: false
|
|
|
|
description: publish appimage binaries?
|
|
|
|
type: boolean
|
2021-06-22 19:52:14 +00:00
|
|
|
steps:
|
|
|
|
- run:
|
|
|
|
name: Install git jq curl
|
2022-11-07 14:39:45 +00:00
|
|
|
command: apt update && apt install -y git jq curl sudo
|
2021-06-22 19:52:14 +00:00
|
|
|
- checkout
|
|
|
|
- git_fetch_all_tags
|
|
|
|
- checkout
|
|
|
|
- install_ipfs
|
|
|
|
- attach_workspace:
|
2022-11-07 16:09:30 +00:00
|
|
|
at: /tmp/workspace
|
2022-07-25 05:16:16 +00:00
|
|
|
- when:
|
|
|
|
condition: << parameters.linux >>
|
|
|
|
steps:
|
|
|
|
- run: ./scripts/build-arch-bundle.sh linux
|
|
|
|
- run: ./scripts/publish-arch-release.sh linux
|
|
|
|
- when:
|
|
|
|
condition: << parameters.appimage >>
|
|
|
|
steps:
|
|
|
|
- run: ./scripts/build-appimage-bundle.sh
|
|
|
|
- run: ./scripts/publish-arch-release.sh appimage
|
2021-06-22 19:52:14 +00:00
|
|
|
|
|
|
|
publish-snapcraft:
|
|
|
|
description: build and push snapcraft
|
|
|
|
machine:
|
|
|
|
image: ubuntu-2004:202104-01
|
|
|
|
resource_class: 2xlarge
|
|
|
|
parameters:
|
|
|
|
channel:
|
|
|
|
type: string
|
|
|
|
default: "edge"
|
|
|
|
description: snapcraft channel
|
2022-08-05 22:13:29 +00:00
|
|
|
snap-name:
|
|
|
|
type: string
|
|
|
|
default: 'lotus-filecoin'
|
|
|
|
description: name of snap in snap store
|
2021-06-22 19:52:14 +00:00
|
|
|
steps:
|
|
|
|
- checkout
|
|
|
|
- run:
|
2022-08-05 22:13:29 +00:00
|
|
|
name: Install snapcraft
|
2021-06-22 19:52:14 +00:00
|
|
|
command: sudo snap install snapcraft --classic
|
|
|
|
- run:
|
2022-08-05 22:13:29 +00:00
|
|
|
name: Build << parameters.snap-name >> snap
|
2022-07-27 20:15:01 +00:00
|
|
|
command: |
|
2022-08-05 22:13:29 +00:00
|
|
|
if [ "<< parameters.snap-name >>" != 'lotus-filecoin' ]; then
|
|
|
|
cat snap/snapcraft.yaml | sed 's/lotus-filecoin/lotus/' > edited-snapcraft.yaml
|
|
|
|
mv edited-snapcraft.yaml snap/snapcraft.yaml
|
|
|
|
fi
|
|
|
|
|
|
|
|
snapcraft --use-lxd --debug
|
2022-08-03 19:15:53 +00:00
|
|
|
- run:
|
2022-08-05 22:13:29 +00:00
|
|
|
name: Publish snap to << parameters.channel >> channel
|
2022-08-04 04:29:35 +00:00
|
|
|
shell: /bin/bash -o pipefail
|
2022-08-03 19:15:53 +00:00
|
|
|
command: |
|
2022-08-05 22:13:29 +00:00
|
|
|
snapcraft upload *.snap --release << parameters.channel >>
|
2021-06-22 19:52:14 +00:00
|
|
|
|
|
|
|
build-and-push-image:
|
|
|
|
description: build and push docker images to public AWS ECR registry
|
|
|
|
executor: aws-cli/default
|
|
|
|
parameters:
|
|
|
|
profile-name:
|
|
|
|
type: string
|
|
|
|
default: "default"
|
|
|
|
description: AWS profile name to be configured.
|
|
|
|
|
|
|
|
aws-access-key-id:
|
|
|
|
type: env_var_name
|
|
|
|
default: AWS_ACCESS_KEY_ID
|
|
|
|
description: >
|
|
|
|
AWS access key id for IAM role. Set this to the name of
|
|
|
|
the environment variable you will set to hold this
|
|
|
|
value, i.e. AWS_ACCESS_KEY.
|
|
|
|
|
|
|
|
aws-secret-access-key:
|
|
|
|
type: env_var_name
|
|
|
|
default: AWS_SECRET_ACCESS_KEY
|
|
|
|
description: >
|
|
|
|
AWS secret key for IAM role. Set this to the name of
|
|
|
|
the environment variable you will set to hold this
|
|
|
|
value, i.e. AWS_SECRET_ACCESS_KEY.
|
|
|
|
|
|
|
|
region:
|
|
|
|
type: env_var_name
|
|
|
|
default: AWS_REGION
|
|
|
|
description: >
|
|
|
|
Name of env var storing your AWS region information,
|
|
|
|
defaults to AWS_REGION
|
|
|
|
|
|
|
|
account-url:
|
|
|
|
type: env_var_name
|
|
|
|
default: AWS_ECR_ACCOUNT_URL
|
|
|
|
description: >
|
|
|
|
Env var storing Amazon ECR account URL that maps to an AWS account,
|
|
|
|
e.g. {awsAccountNum}.dkr.ecr.us-west-2.amazonaws.com
|
|
|
|
defaults to AWS_ECR_ACCOUNT_URL
|
|
|
|
|
|
|
|
dockerfile:
|
|
|
|
type: string
|
|
|
|
default: Dockerfile
|
|
|
|
description: Name of dockerfile to use. Defaults to Dockerfile.
|
|
|
|
|
|
|
|
path:
|
|
|
|
type: string
|
|
|
|
default: .
|
|
|
|
description: Path to the directory containing your Dockerfile and build context. Defaults to . (working directory).
|
|
|
|
|
|
|
|
extra-build-args:
|
|
|
|
type: string
|
|
|
|
default: ""
|
|
|
|
description: >
|
|
|
|
Extra flags to pass to docker build. For examples, see
|
|
|
|
https://docs.docker.com/engine/reference/commandline/build
|
|
|
|
|
|
|
|
repo:
|
|
|
|
type: string
|
|
|
|
description: Name of an Amazon ECR repository
|
|
|
|
|
|
|
|
tag:
|
|
|
|
type: string
|
|
|
|
default: "latest"
|
|
|
|
description: A comma-separated string containing docker image tags to build and push (default = latest)
|
|
|
|
|
2022-04-01 04:10:06 +00:00
|
|
|
target:
|
|
|
|
type: string
|
|
|
|
default: "lotus-all-in-one"
|
|
|
|
description: Docker target to build
|
|
|
|
|
2021-06-22 19:52:14 +00:00
|
|
|
steps:
|
|
|
|
- run:
|
|
|
|
name: Confirm that environment variables are set
|
|
|
|
command: |
|
|
|
|
if [ -z "$AWS_ACCESS_KEY_ID" ]; then
|
|
|
|
echo "No AWS_ACCESS_KEY_ID is set. Skipping build-and-push job ..."
|
|
|
|
circleci-agent step halt
|
|
|
|
fi
|
|
|
|
|
|
|
|
- aws-cli/setup:
|
|
|
|
profile-name: <<parameters.profile-name>>
|
|
|
|
aws-access-key-id: <<parameters.aws-access-key-id>>
|
|
|
|
aws-secret-access-key: <<parameters.aws-secret-access-key>>
|
|
|
|
aws-region: <<parameters.region>>
|
|
|
|
|
|
|
|
- run:
|
|
|
|
name: Log into Amazon ECR
|
|
|
|
command: |
|
|
|
|
aws ecr-public get-login-password --region $<<parameters.region>> --profile <<parameters.profile-name>> | docker login --username AWS --password-stdin $<<parameters.account-url>>
|
|
|
|
|
|
|
|
- checkout
|
|
|
|
|
|
|
|
- setup_remote_docker:
|
|
|
|
version: 19.03.13
|
|
|
|
docker_layer_caching: false
|
|
|
|
|
|
|
|
- run:
|
|
|
|
name: Build docker image
|
|
|
|
command: |
|
|
|
|
registry_id=$(echo $<<parameters.account-url>> | sed "s;\..*;;g")
|
|
|
|
|
|
|
|
docker_tag_args=""
|
|
|
|
IFS="," read -ra DOCKER_TAGS \<<< "<< parameters.tag >>"
|
|
|
|
for tag in "${DOCKER_TAGS[@]}"; do
|
|
|
|
docker_tag_args="$docker_tag_args -t $<<parameters.account-url>>/<<parameters.repo>>:$tag"
|
|
|
|
done
|
|
|
|
|
|
|
|
docker build \
|
|
|
|
<<#parameters.extra-build-args>><<parameters.extra-build-args>><</parameters.extra-build-args>> \
|
2022-04-01 04:10:06 +00:00
|
|
|
--target <<parameters.target>> \
|
2021-06-22 19:52:14 +00:00
|
|
|
-f <<parameters.path>>/<<parameters.dockerfile>> \
|
|
|
|
$docker_tag_args \
|
|
|
|
<<parameters.path>>
|
|
|
|
|
|
|
|
- run:
|
|
|
|
name: Push image to Amazon ECR
|
|
|
|
command: |
|
|
|
|
IFS="," read -ra DOCKER_TAGS \<<< "<< parameters.tag >>"
|
|
|
|
for tag in "${DOCKER_TAGS[@]}"; do
|
|
|
|
docker push $<<parameters.account-url>>/<<parameters.repo>>:${tag}
|
|
|
|
done
|
|
|
|
|
2022-02-18 23:37:53 +00:00
|
|
|
publish-packer-snap:
|
|
|
|
description: build packer image with snap. mainnet only.
|
|
|
|
executor:
|
2022-03-31 05:57:02 +00:00
|
|
|
name: packer
|
2022-02-18 23:37:53 +00:00
|
|
|
steps:
|
|
|
|
- checkout
|
2022-03-31 05:57:02 +00:00
|
|
|
- packer_build:
|
2022-02-18 23:37:53 +00:00
|
|
|
template: tools/packer/lotus-snap.pkr.hcl
|
2021-07-22 21:15:27 +00:00
|
|
|
publish-dockerhub:
|
|
|
|
description: publish to dockerhub
|
|
|
|
machine:
|
|
|
|
image: ubuntu-2004:202010-01
|
|
|
|
parameters:
|
|
|
|
tag:
|
|
|
|
type: string
|
|
|
|
default: latest
|
|
|
|
steps:
|
|
|
|
- checkout
|
|
|
|
- run:
|
|
|
|
name: dockerhub login
|
|
|
|
command: echo $DOCKERHUB_PASSWORD | docker login --username $DOCKERHUB_USERNAME --password-stdin
|
|
|
|
- run:
|
|
|
|
name: docker build
|
|
|
|
command: |
|
|
|
|
docker build --target lotus -t filecoin/lotus:<< parameters.tag >> -f Dockerfile.lotus .
|
2022-07-05 18:42:24 +00:00
|
|
|
docker build --target lotus-gateway -t filecoin/lotus-gateway:<< parameters.tag >> -f Dockerfile.lotus .
|
2021-07-22 21:15:27 +00:00
|
|
|
docker build --target lotus-all-in-one -t filecoin/lotus-all-in-one:<< parameters.tag >> -f Dockerfile.lotus .
|
|
|
|
if [["[[ ! -z $CIRCLE_SHA1 ]]"]]; then
|
|
|
|
docker build --target lotus -t filecoin/lotus:$CIRCLE_SHA1 -f Dockerfile.lotus .
|
2022-07-05 18:42:24 +00:00
|
|
|
docker build --target lotus-gateway -t filecoin/lotus-gateway:$CIRCLE_SHA1 -f Dockerfile.lotus .
|
2021-07-22 21:15:27 +00:00
|
|
|
docker build --target lotus-all-in-one -t filecoin/lotus-all-in-one:$CIRCLE_SHA1 -f Dockerfile.lotus .
|
|
|
|
fi
|
|
|
|
if [["[[ ! -z $CIRCLE_TAG ]]"]]; then
|
|
|
|
docker build --target lotus -t filecoin/lotus:$CIRCLE_TAG -f Dockerfile.lotus .
|
2022-07-05 18:42:24 +00:00
|
|
|
docker build --target lotus-gateway -t filecoin/lotus-gateway:$CIRCLE_TAG -f Dockerfile.lotus .
|
2021-07-22 21:15:27 +00:00
|
|
|
docker build --target lotus-all-in-one -t filecoin/lotus-all-in-one:$CIRCLE_TAG -f Dockerfile.lotus .
|
|
|
|
fi
|
|
|
|
- run:
|
|
|
|
name: docker push
|
|
|
|
command: |
|
|
|
|
docker push filecoin/lotus:<< parameters.tag >>
|
2022-08-03 09:14:53 +00:00
|
|
|
docker push filecoin/lotus-gateway:<< parameters.tag >>
|
2021-07-22 21:15:27 +00:00
|
|
|
docker push filecoin/lotus-all-in-one:<< parameters.tag >>
|
|
|
|
if [["[[ ! -z $CIRCLE_SHA1 ]]"]]; then
|
|
|
|
docker push filecoin/lotus:$CIRCLE_SHA1
|
2022-08-03 09:14:53 +00:00
|
|
|
docker push filecoin/lotus-gateway:$CIRCLE_SHA1
|
2021-07-22 21:15:27 +00:00
|
|
|
docker push filecoin/lotus-all-in-one:$CIRCLE_SHA1
|
|
|
|
fi
|
|
|
|
if [["[[ ! -z $CIRCLE_TAG ]]"]]; then
|
|
|
|
docker push filecoin/lotus:$CIRCLE_TAG
|
2022-08-03 09:14:53 +00:00
|
|
|
docker push filecoin/lotus-gateway:$CIRCLE_TAG
|
2021-07-22 21:15:27 +00:00
|
|
|
docker push filecoin/lotus-all-in-one:$CIRCLE_TAG
|
|
|
|
fi
|
2021-06-22 19:52:14 +00:00
|
|
|
|
|
|
|
workflows:
|
|
|
|
version: 2.1
|
|
|
|
ci:
|
|
|
|
jobs:
|
|
|
|
- lint-all:
|
|
|
|
concurrency: "16" # expend all docker 2xlarge CPUs.
|
|
|
|
- mod-tidy-check
|
|
|
|
- gofmt
|
|
|
|
- gen-check
|
|
|
|
- docs-check
|
|
|
|
|
|
|
|
[[- range $file := .ItestFiles -]]
|
|
|
|
[[ with $name := $file | stripSuffix ]]
|
|
|
|
- test:
|
|
|
|
name: test-itest-[[ $name ]]
|
|
|
|
suite: itest-[[ $name ]]
|
|
|
|
target: "./itests/[[ $file ]]"
|
|
|
|
[[ end ]]
|
|
|
|
[[- end -]]
|
|
|
|
|
|
|
|
[[range $suite, $pkgs := .UnitSuites]]
|
|
|
|
- test:
|
|
|
|
name: test-[[ $suite ]]
|
|
|
|
suite: utest-[[ $suite ]]
|
|
|
|
target: "[[ $pkgs ]]"
|
|
|
|
[[- end]]
|
2021-06-22 20:03:05 +00:00
|
|
|
- test:
|
2021-06-22 19:52:14 +00:00
|
|
|
go-test-flags: "-run=TestMulticoreSDR"
|
|
|
|
suite: multicore-sdr-check
|
2022-06-14 18:08:10 +00:00
|
|
|
target: "./storage/sealer/ffiwrapper"
|
2021-06-22 19:52:14 +00:00
|
|
|
proofs-log-test: "1"
|
|
|
|
- test-conformance:
|
|
|
|
suite: conformance
|
|
|
|
target: "./conformance"
|
|
|
|
- test-conformance:
|
|
|
|
name: test-conformance-bleeding-edge
|
|
|
|
suite: conformance-bleeding-edge
|
|
|
|
target: "./conformance"
|
2022-01-09 04:11:53 +00:00
|
|
|
vectors-branch: specs-actors-v7
|
2022-10-04 00:17:52 +00:00
|
|
|
|
2022-11-07 14:39:45 +00:00
|
|
|
release:
|
|
|
|
jobs:
|
2022-10-04 00:17:52 +00:00
|
|
|
- build-linux-amd64:
|
|
|
|
name: "Build ( linux / amd64 )"
|
2021-06-22 19:52:14 +00:00
|
|
|
filters:
|
2022-10-04 00:17:52 +00:00
|
|
|
branches:
|
2021-06-22 19:52:14 +00:00
|
|
|
only:
|
2022-10-04 00:17:52 +00:00
|
|
|
- /^release\/v\d+\.\d+\.\d+(-rc\d+)?$/
|
2021-06-22 19:52:14 +00:00
|
|
|
tags:
|
|
|
|
only:
|
|
|
|
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
|
2022-10-04 00:17:52 +00:00
|
|
|
- build-darwin-amd64:
|
|
|
|
name: "Build ( darwin / amd64 )"
|
2021-10-06 20:40:44 +00:00
|
|
|
filters:
|
Use goreleaser to build universal darwin binaries
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
2022-07-29 02:23:03 +00:00
|
|
|
branches:
|
2022-10-04 00:17:52 +00:00
|
|
|
only:
|
|
|
|
- /^release\/v\d+\.\d+\.\d+(-rc\d+)?$/
|
2021-10-06 20:40:44 +00:00
|
|
|
tags:
|
|
|
|
only:
|
2022-10-04 00:17:52 +00:00
|
|
|
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
|
|
|
|
- build-darwin-arm64:
|
|
|
|
name: "Build ( darwin / arm64 )"
|
2022-07-25 05:16:16 +00:00
|
|
|
filters:
|
|
|
|
branches:
|
|
|
|
only:
|
|
|
|
- /^release\/v\d+\.\d+\.\d+(-rc\d+)?$/
|
2022-09-21 16:20:26 +00:00
|
|
|
tags:
|
|
|
|
only:
|
2022-10-04 00:17:52 +00:00
|
|
|
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
|
2022-11-07 14:39:45 +00:00
|
|
|
- release:
|
|
|
|
name: "Release"
|
|
|
|
requires:
|
|
|
|
- "Build ( darwin / amd64 )"
|
|
|
|
- "Build ( linux / amd64 )"
|
|
|
|
- "Build ( darwin / arm64 )"
|
|
|
|
filters:
|
|
|
|
branches:
|
|
|
|
ignore:
|
|
|
|
- /.*/
|
|
|
|
tags:
|
|
|
|
only:
|
|
|
|
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
|
2022-10-04 00:17:52 +00:00
|
|
|
- release:
|
2022-10-27 10:15:29 +00:00
|
|
|
name: "Release (dry-run)"
|
|
|
|
dry-run: true
|
2022-10-04 00:17:52 +00:00
|
|
|
requires:
|
|
|
|
- "Build ( darwin / amd64 )"
|
|
|
|
- "Build ( linux / amd64 )"
|
|
|
|
- "Build ( darwin / arm64 )"
|
2022-01-14 11:01:12 +00:00
|
|
|
filters:
|
|
|
|
branches:
|
Use goreleaser to build universal darwin binaries
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
2022-07-29 02:23:03 +00:00
|
|
|
only:
|
|
|
|
- /^release\/v\d+\.\d+\.\d+(-rc\d+)?$/
|
2022-10-04 00:17:52 +00:00
|
|
|
- build-appimage:
|
|
|
|
name: "Build AppImage"
|
2022-01-14 11:01:12 +00:00
|
|
|
filters:
|
|
|
|
branches:
|
2022-10-04 00:17:52 +00:00
|
|
|
only:
|
|
|
|
- /^release\/v\d+\.\d+\.\d+(-rc\d+)?$/
|
2022-01-14 11:01:12 +00:00
|
|
|
tags:
|
|
|
|
only:
|
|
|
|
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
|
2021-06-22 19:52:14 +00:00
|
|
|
- publish:
|
2022-10-04 00:17:52 +00:00
|
|
|
name: "Publish AppImage"
|
2022-07-25 05:16:16 +00:00
|
|
|
appimage: true
|
2021-06-22 19:52:14 +00:00
|
|
|
requires:
|
2022-10-04 00:17:52 +00:00
|
|
|
- "Build AppImage"
|
2021-06-22 19:52:14 +00:00
|
|
|
filters:
|
|
|
|
branches:
|
|
|
|
ignore:
|
|
|
|
- /.*/
|
|
|
|
tags:
|
|
|
|
only:
|
|
|
|
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
|
|
|
|
- build-and-push-image:
|
2022-10-04 00:17:52 +00:00
|
|
|
name: "Publish ECR (lotus-all-in-one)"
|
2021-06-22 19:52:14 +00:00
|
|
|
dockerfile: Dockerfile.lotus
|
|
|
|
path: .
|
|
|
|
repo: lotus-dev
|
|
|
|
tag: '${CIRCLE_SHA1:0:8}'
|
2022-04-01 04:10:06 +00:00
|
|
|
target: lotus-all-in-one
|
|
|
|
- build-and-push-image:
|
2022-10-04 00:17:52 +00:00
|
|
|
name: "Publish ECR (lotus-test)"
|
2022-04-01 04:10:06 +00:00
|
|
|
dockerfile: Dockerfile.lotus
|
|
|
|
path: .
|
|
|
|
repo: lotus-test
|
|
|
|
tag: '${CIRCLE_SHA1:0:8}'
|
|
|
|
target: lotus-test
|
2021-06-22 19:52:14 +00:00
|
|
|
- publish-snapcraft:
|
2022-08-05 22:13:29 +00:00
|
|
|
name: "Publish Snapcraft (lotus-filecoin / candidate)"
|
2021-06-22 19:52:14 +00:00
|
|
|
channel: stable
|
2022-08-05 22:13:29 +00:00
|
|
|
snap-name: lotus-filecoin
|
2021-06-22 19:52:14 +00:00
|
|
|
filters:
|
|
|
|
branches:
|
|
|
|
ignore:
|
|
|
|
- /.*/
|
|
|
|
tags:
|
|
|
|
only:
|
2022-07-27 20:06:35 +00:00
|
|
|
- /^v\d+\.\d+\.\d+$/
|
|
|
|
- publish-snapcraft:
|
2022-08-05 22:13:29 +00:00
|
|
|
name: "Publish Snapcraft (lotus-filecoin / candidate)"
|
2022-07-27 20:06:35 +00:00
|
|
|
channel: candidate
|
2022-08-05 22:13:29 +00:00
|
|
|
snap-name: lotus-filecoin
|
|
|
|
filters:
|
|
|
|
branches:
|
|
|
|
ignore:
|
|
|
|
- /.*/
|
|
|
|
tags:
|
|
|
|
only:
|
|
|
|
- /^v\d+\.\d+\.\d+-rc\d+$/
|
|
|
|
- publish-snapcraft:
|
|
|
|
name: "Publish Snapcraft (lotus / stable)"
|
|
|
|
channel: stable
|
|
|
|
snap-name: lotus
|
|
|
|
filters:
|
|
|
|
branches:
|
|
|
|
ignore:
|
|
|
|
- /.*/
|
|
|
|
tags:
|
|
|
|
only:
|
|
|
|
- /^v\d+\.\d+\.\d+$/
|
|
|
|
- publish-snapcraft:
|
|
|
|
name: "Publish Snapcraft (lotus / candidate)"
|
|
|
|
channel: candidate
|
|
|
|
snap-name: lotus
|
2022-07-27 20:06:35 +00:00
|
|
|
filters:
|
|
|
|
branches:
|
|
|
|
ignore:
|
|
|
|
- /.*/
|
|
|
|
tags:
|
|
|
|
only:
|
|
|
|
- /^v\d+\.\d+\.\d+-rc\d+$/
|
2021-07-22 21:15:27 +00:00
|
|
|
- publish-dockerhub:
|
2022-10-04 00:17:52 +00:00
|
|
|
name: "Publish Dockerhub (stable)"
|
2021-07-22 21:15:27 +00:00
|
|
|
tag: stable
|
|
|
|
filters:
|
|
|
|
branches:
|
|
|
|
ignore:
|
|
|
|
- /.*/
|
|
|
|
tags:
|
|
|
|
only:
|
2022-10-04 00:17:52 +00:00
|
|
|
- /^v\d+\.\d+\.\d+$/
|
|
|
|
- publish-dockerhub:
|
|
|
|
name: "Publish Dockerhub (candidate)"
|
|
|
|
tag: candidate
|
|
|
|
filters:
|
|
|
|
branches:
|
|
|
|
ignore:
|
|
|
|
- /.*/
|
|
|
|
tags:
|
|
|
|
only:
|
|
|
|
- /^v\d+\.\d+\.\d+-rc\d+$/
|
2021-06-22 19:52:14 +00:00
|
|
|
|
|
|
|
nightly:
|
|
|
|
triggers:
|
|
|
|
- schedule:
|
|
|
|
cron: "0 0 * * *"
|
|
|
|
filters:
|
|
|
|
branches:
|
|
|
|
only:
|
|
|
|
- master
|
|
|
|
jobs:
|
|
|
|
- publish-snapcraft:
|
2022-08-05 22:13:29 +00:00
|
|
|
name: "Publish Snapcraft Nightly (lotus-filecoin / edge)"
|
|
|
|
channel: edge
|
|
|
|
snap-name: lotus-filecoin
|
|
|
|
- publish-snapcraft:
|
|
|
|
name: "Publish Snapcraft Nightly (lotus / edge)"
|
2021-06-22 19:52:14 +00:00
|
|
|
channel: edge
|
2022-08-05 22:13:29 +00:00
|
|
|
snap-name: lotus
|
2021-07-22 21:15:27 +00:00
|
|
|
- publish-dockerhub:
|
|
|
|
name: publish-dockerhub-nightly
|
|
|
|
tag: nightly
|
2022-10-05 12:05:36 +00:00
|
|
|
biweekly:
|
2022-02-18 23:37:53 +00:00
|
|
|
triggers:
|
|
|
|
- schedule:
|
2022-10-05 12:05:36 +00:00
|
|
|
cron: "0 0 1,15 * *"
|
2022-02-18 23:37:53 +00:00
|
|
|
filters:
|
|
|
|
branches:
|
|
|
|
only:
|
|
|
|
- master
|
|
|
|
jobs:
|
2022-09-21 16:20:26 +00:00
|
|
|
- publish-packer-snap
|