v1.27.0-a #10
1377
.circleci/config.yml
1377
.circleci/config.yml
File diff suppressed because it is too large
Load Diff
156
.circleci/gen.go
156
.circleci/gen.go
@ -1,156 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"embed"
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
"path/filepath"
|
|
||||||
"sort"
|
|
||||||
"strings"
|
|
||||||
"text/template"
|
|
||||||
)
|
|
||||||
|
|
||||||
var GoVersion = "" // from init below. Ex: 1.19.7
|
|
||||||
|
|
||||||
//go:generate go run ./gen.go ..
|
|
||||||
|
|
||||||
//go:embed template.yml
|
|
||||||
var templateFile embed.FS
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
b, err := os.ReadFile("../go.mod")
|
|
||||||
if err != nil {
|
|
||||||
panic("cannot find go.mod in parent folder")
|
|
||||||
}
|
|
||||||
for _, line := range strings.Split(string(b), "\n") {
|
|
||||||
if strings.HasPrefix(line, "go ") {
|
|
||||||
GoVersion = line[3:]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type (
|
|
||||||
dirs = []string
|
|
||||||
suite = string
|
|
||||||
)
|
|
||||||
|
|
||||||
// groupedUnitTests maps suite names to top-level directories that should be
|
|
||||||
// included in that suite. The program adds an implicit group "rest" that
|
|
||||||
// includes all other top-level directories.
|
|
||||||
var groupedUnitTests = map[suite]dirs{
|
|
||||||
"unit-node": {"node"},
|
|
||||||
"unit-storage": {"storage", "extern"},
|
|
||||||
"unit-cli": {"cli", "cmd", "api"},
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
if len(os.Args) != 2 {
|
|
||||||
panic("expected path to repo as argument")
|
|
||||||
}
|
|
||||||
|
|
||||||
repo := os.Args[1]
|
|
||||||
|
|
||||||
tmpl := template.New("template.yml")
|
|
||||||
tmpl.Delims("[[", "]]")
|
|
||||||
tmpl.Funcs(template.FuncMap{
|
|
||||||
"stripSuffix": func(in string) string {
|
|
||||||
return strings.TrimSuffix(in, "_test.go")
|
|
||||||
},
|
|
||||||
})
|
|
||||||
tmpl = template.Must(tmpl.ParseFS(templateFile, "*"))
|
|
||||||
|
|
||||||
// list all itests.
|
|
||||||
itests, err := filepath.Glob(filepath.Join(repo, "./itests/*_test.go"))
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// strip the dir from all entries.
|
|
||||||
for i, f := range itests {
|
|
||||||
itests[i] = filepath.Base(f)
|
|
||||||
}
|
|
||||||
|
|
||||||
// calculate the exclusion set of unit test directories to exclude because
|
|
||||||
// they are already included in a grouped suite.
|
|
||||||
var excluded = map[string]struct{}{}
|
|
||||||
for _, ss := range groupedUnitTests {
|
|
||||||
for _, s := range ss {
|
|
||||||
e, err := filepath.Abs(filepath.Join(repo, s))
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
// Redundantly flag both absolute and relative paths as excluded
|
|
||||||
excluded[filepath.Join(repo, s)] = struct{}{}
|
|
||||||
excluded[e] = struct{}{}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// all unit tests top-level dirs that are not itests, nor included in other suites.
|
|
||||||
var rest = map[string]struct{}{}
|
|
||||||
err = filepath.Walk(repo, func(path string, f os.FileInfo, err error) error {
|
|
||||||
// include all tests that aren't in the itests directory.
|
|
||||||
if strings.Contains(path, "itests") {
|
|
||||||
return filepath.SkipDir
|
|
||||||
}
|
|
||||||
// exclude all tests included in other suites
|
|
||||||
if f.IsDir() {
|
|
||||||
if _, ok := excluded[path]; ok {
|
|
||||||
return filepath.SkipDir
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if strings.HasSuffix(path, "_test.go") {
|
|
||||||
rel, err := filepath.Rel(repo, path)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
// take the first directory
|
|
||||||
rest[strings.Split(rel, string(os.PathSeparator))[0]] = struct{}{}
|
|
||||||
}
|
|
||||||
return err
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// add other directories to a 'rest' suite.
|
|
||||||
for k := range rest {
|
|
||||||
groupedUnitTests["unit-rest"] = append(groupedUnitTests["unit-rest"], k)
|
|
||||||
}
|
|
||||||
|
|
||||||
// map iteration guarantees no order, so sort the array in-place.
|
|
||||||
sort.Strings(groupedUnitTests["unit-rest"])
|
|
||||||
|
|
||||||
// form the input data.
|
|
||||||
type data struct {
|
|
||||||
Networks []string
|
|
||||||
ItestFiles []string
|
|
||||||
UnitSuites map[string]string
|
|
||||||
GoVersion string
|
|
||||||
}
|
|
||||||
in := data{
|
|
||||||
Networks: []string{"mainnet", "butterflynet", "calibnet", "debug"},
|
|
||||||
ItestFiles: itests,
|
|
||||||
UnitSuites: func() map[string]string {
|
|
||||||
ret := make(map[string]string)
|
|
||||||
for name, dirs := range groupedUnitTests {
|
|
||||||
for i, d := range dirs {
|
|
||||||
dirs[i] = fmt.Sprintf("./%s/...", d) // turn into package
|
|
||||||
}
|
|
||||||
ret[name] = strings.Join(dirs, " ")
|
|
||||||
}
|
|
||||||
return ret
|
|
||||||
}(),
|
|
||||||
GoVersion: GoVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
out, err := os.Create("./config.yml")
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
defer out.Close()
|
|
||||||
|
|
||||||
// execute the template.
|
|
||||||
if err := tmpl.Execute(out, in); err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,753 +0,0 @@
|
|||||||
version: 2.1
|
|
||||||
orbs:
|
|
||||||
aws-cli: circleci/aws-cli@4.1.1
|
|
||||||
docker: circleci/docker@2.3.0
|
|
||||||
|
|
||||||
executors:
|
|
||||||
golang:
|
|
||||||
docker:
|
|
||||||
# Must match GO_VERSION_MIN in project root
|
|
||||||
- image: cimg/go:1.21.7
|
|
||||||
resource_class: medium+
|
|
||||||
golang-2xl:
|
|
||||||
docker:
|
|
||||||
# Must match GO_VERSION_MIN in project root
|
|
||||||
- image: cimg/go:1.21.7
|
|
||||||
resource_class: 2xlarge
|
|
||||||
ubuntu:
|
|
||||||
docker:
|
|
||||||
- image: ubuntu:20.04
|
|
||||||
|
|
||||||
commands:
|
|
||||||
build-platform-specific:
|
|
||||||
parameters:
|
|
||||||
linux:
|
|
||||||
default: true
|
|
||||||
description: is a linux build environment?
|
|
||||||
type: boolean
|
|
||||||
darwin:
|
|
||||||
default: false
|
|
||||||
description: is a darwin build environment?
|
|
||||||
type: boolean
|
|
||||||
darwin-architecture:
|
|
||||||
default: "amd64"
|
|
||||||
description: which darwin architecture is being used?
|
|
||||||
type: string
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- git_fetch_all_tags
|
|
||||||
- run: git submodule sync
|
|
||||||
- run: git submodule update --init
|
|
||||||
- when:
|
|
||||||
condition: <<parameters.linux>>
|
|
||||||
steps:
|
|
||||||
- install-ubuntu-deps
|
|
||||||
- check-go-version
|
|
||||||
- when:
|
|
||||||
condition: <<parameters.darwin>>
|
|
||||||
steps:
|
|
||||||
- run:
|
|
||||||
name: Install Go
|
|
||||||
command: |
|
|
||||||
curl https://dl.google.com/go/go`cat GO_VERSION_MIN`.darwin-<<parameters.darwin-architecture>>.pkg -o /tmp/go.pkg && \
|
|
||||||
sudo installer -pkg /tmp/go.pkg -target /
|
|
||||||
- run:
|
|
||||||
name: Export Go
|
|
||||||
command: |
|
|
||||||
echo 'export GOPATH="${HOME}/go"' >> $BASH_ENV
|
|
||||||
- run: go version
|
|
||||||
- run:
|
|
||||||
name: Install dependencies with Homebrew
|
|
||||||
command: HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config coreutils jq hwloc
|
|
||||||
- run:
|
|
||||||
name: Install Rust
|
|
||||||
command: |
|
|
||||||
curl https://sh.rustup.rs -sSf | sh -s -- -y
|
|
||||||
- run: make deps
|
|
||||||
download-params:
|
|
||||||
steps:
|
|
||||||
- restore_cache:
|
|
||||||
name: Restore parameters cache
|
|
||||||
keys:
|
|
||||||
- 'v26-2k-lotus-params'
|
|
||||||
- run: ./lotus fetch-params 2048
|
|
||||||
- save_cache:
|
|
||||||
name: Save parameters cache
|
|
||||||
key: 'v26-2k-lotus-params'
|
|
||||||
paths:
|
|
||||||
- /var/tmp/filecoin-proof-parameters/
|
|
||||||
install_ipfs:
|
|
||||||
steps:
|
|
||||||
- run: |
|
|
||||||
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
|
|
||||||
pushd kubo
|
|
||||||
sudo bash install.sh
|
|
||||||
popd
|
|
||||||
rm -rf kubo
|
|
||||||
rm kubo_v0.16.0_linux-amd64.tar.gz
|
|
||||||
git_fetch_all_tags:
|
|
||||||
steps:
|
|
||||||
- run:
|
|
||||||
name: fetch all tags
|
|
||||||
command: |
|
|
||||||
git fetch --all
|
|
||||||
install-ubuntu-deps:
|
|
||||||
steps:
|
|
||||||
- run: sudo apt install curl ca-certificates gnupg
|
|
||||||
- run: sudo apt-get update
|
|
||||||
- run: sudo apt-get install ocl-icd-opencl-dev libhwloc-dev
|
|
||||||
check-go-version:
|
|
||||||
steps:
|
|
||||||
- run: |
|
|
||||||
v=`go version | { read _ _ v _; echo ${v#go}; }`
|
|
||||||
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."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
executor: golang
|
|
||||||
working_directory: ~/lotus
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- git_fetch_all_tags
|
|
||||||
- run: git submodule sync
|
|
||||||
- run: git submodule update --init
|
|
||||||
- install-ubuntu-deps
|
|
||||||
- check-go-version
|
|
||||||
- run: make deps lotus
|
|
||||||
- persist_to_workspace:
|
|
||||||
root: ~/
|
|
||||||
paths:
|
|
||||||
- "lotus"
|
|
||||||
mod-tidy-check:
|
|
||||||
executor: golang
|
|
||||||
working_directory: ~/lotus
|
|
||||||
steps:
|
|
||||||
- install-ubuntu-deps
|
|
||||||
- attach_workspace:
|
|
||||||
at: ~/
|
|
||||||
- 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
|
|
||||||
|
|
||||||
test:
|
|
||||||
description: |
|
|
||||||
Run tests with gotestsum.
|
|
||||||
working_directory: ~/lotus
|
|
||||||
parameters: &test-params
|
|
||||||
resource_class:
|
|
||||||
type: string
|
|
||||||
default: medium+
|
|
||||||
go-test-flags:
|
|
||||||
type: string
|
|
||||||
default: "-timeout 20m"
|
|
||||||
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"
|
|
||||||
get-params:
|
|
||||||
type: boolean
|
|
||||||
default: false
|
|
||||||
suite:
|
|
||||||
type: string
|
|
||||||
default: unit
|
|
||||||
description: Test suite name to report to CircleCI.
|
|
||||||
docker:
|
|
||||||
- image: cimg/go:[[ .GoVersion]]
|
|
||||||
environment:
|
|
||||||
LOTUS_HARMONYDB_HOSTS: yugabyte
|
|
||||||
- image: yugabytedb/yugabyte:2.18.0.0-b65
|
|
||||||
command: bin/yugabyted start --daemon=false
|
|
||||||
name: yugabyte
|
|
||||||
resource_class: << parameters.resource_class >>
|
|
||||||
steps:
|
|
||||||
- install-ubuntu-deps
|
|
||||||
- attach_workspace:
|
|
||||||
at: ~/
|
|
||||||
- when:
|
|
||||||
condition: << parameters.get-params >>
|
|
||||||
steps:
|
|
||||||
- download-params
|
|
||||||
- run:
|
|
||||||
name: go test
|
|
||||||
environment:
|
|
||||||
TEST_RUSTPROOFS_LOGS: << parameters.proofs-log-test >>
|
|
||||||
SKIP_CONFORMANCE: "1"
|
|
||||||
LOTUS_SRC_DIR: /home/circleci/project
|
|
||||||
command: |
|
|
||||||
mkdir -p /tmp/test-reports/<< parameters.suite >>
|
|
||||||
mkdir -p /tmp/test-artifacts
|
|
||||||
dockerize -wait tcp://yugabyte:5433 -timeout 3m
|
|
||||||
env
|
|
||||||
gotestsum \
|
|
||||||
--format standard-verbose \
|
|
||||||
--junitfile /tmp/test-reports/<< parameters.suite >>/junit.xml \
|
|
||||||
--jsonfile /tmp/test-artifacts/<< parameters.suite >>.json \
|
|
||||||
--packages="<< parameters.target >>" \
|
|
||||||
-- << parameters.go-test-flags >>
|
|
||||||
no_output_timeout: 30m
|
|
||||||
- store_test_results:
|
|
||||||
path: /tmp/test-reports
|
|
||||||
- store_artifacts:
|
|
||||||
path: /tmp/test-artifacts/<< parameters.suite >>.json
|
|
||||||
|
|
||||||
test-conformance:
|
|
||||||
working_directory: ~/lotus
|
|
||||||
description: |
|
|
||||||
Run tests using a corpus of interoperable test vectors for Filecoin
|
|
||||||
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.
|
|
||||||
docker:
|
|
||||||
- image: cimg/go:[[ .GoVersion]]
|
|
||||||
resource_class: << parameters.resource_class >>
|
|
||||||
steps:
|
|
||||||
- install-ubuntu-deps
|
|
||||||
- attach_workspace:
|
|
||||||
at: ~/
|
|
||||||
- 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
|
|
||||||
|
|
||||||
build-linux-amd64:
|
|
||||||
executor: golang
|
|
||||||
steps:
|
|
||||||
- build-platform-specific
|
|
||||||
- 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:
|
|
||||||
description: build darwin lotus binary
|
|
||||||
working_directory: ~/go/src/github.com/filecoin-project/lotus
|
|
||||||
macos:
|
|
||||||
xcode: "13.4.1"
|
|
||||||
steps:
|
|
||||||
- build-platform-specific:
|
|
||||||
linux: false
|
|
||||||
darwin: true
|
|
||||||
darwin-architecture: amd64
|
|
||||||
- run: make lotus lotus-miner lotus-worker
|
|
||||||
- run: otool -hv lotus
|
|
||||||
- run:
|
|
||||||
name: check tag and version output match
|
|
||||||
command: ./scripts/version-check.sh ./lotus
|
|
||||||
- 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
|
|
||||||
working_directory: ~/go/src/github.com/filecoin-project/lotus
|
|
||||||
machine: true
|
|
||||||
resource_class: filecoin-project/self-hosted-m1
|
|
||||||
steps:
|
|
||||||
- run: echo 'export PATH=/opt/homebrew/bin:"$PATH"' >> "$BASH_ENV"
|
|
||||||
- build-platform-specific:
|
|
||||||
linux: false
|
|
||||||
darwin: true
|
|
||||||
darwin-architecture: arm64
|
|
||||||
- run: |
|
|
||||||
export CPATH=$(brew --prefix)/include && export LIBRARY_PATH=$(brew --prefix)/lib && make lotus lotus-miner lotus-worker
|
|
||||||
- run: otool -hv lotus
|
|
||||||
- run:
|
|
||||||
name: check tag and version output match
|
|
||||||
command: ./scripts/version-check.sh ./lotus
|
|
||||||
- run: |
|
|
||||||
mkdir -p /tmp/workspace/darwin_arm64 && \
|
|
||||||
mv lotus lotus-miner lotus-worker /tmp/workspace/darwin_arm64/
|
|
||||||
- persist_to_workspace:
|
|
||||||
root: /tmp/workspace
|
|
||||||
paths:
|
|
||||||
- darwin_arm64
|
|
||||||
- run:
|
|
||||||
command: make clean
|
|
||||||
when: always
|
|
||||||
- run:
|
|
||||||
name: cleanup homebrew
|
|
||||||
command: HOMEBREW_NO_AUTO_UPDATE=1 brew uninstall pkg-config coreutils jq hwloc
|
|
||||||
when: always
|
|
||||||
|
|
||||||
release:
|
|
||||||
executor: golang
|
|
||||||
parameters:
|
|
||||||
dry-run:
|
|
||||||
default: false
|
|
||||||
description: should this release actually publish it's artifacts?
|
|
||||||
type: boolean
|
|
||||||
steps:
|
|
||||||
- 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
|
|
||||||
- attach_workspace:
|
|
||||||
at: /tmp/workspace
|
|
||||||
- when:
|
|
||||||
condition: << parameters.dry-run >>
|
|
||||||
steps:
|
|
||||||
- run: goreleaser release --rm-dist --snapshot --debug
|
|
||||||
- run: ./scripts/generate-checksums.sh
|
|
||||||
- when:
|
|
||||||
condition:
|
|
||||||
not: << parameters.dry-run >>
|
|
||||||
steps:
|
|
||||||
- run: goreleaser release --rm-dist --debug
|
|
||||||
- run: ./scripts/generate-checksums.sh
|
|
||||||
- run: ./scripts/publish-checksums.sh
|
|
||||||
|
|
||||||
gofmt:
|
|
||||||
executor: golang
|
|
||||||
working_directory: ~/lotus
|
|
||||||
steps:
|
|
||||||
- run:
|
|
||||||
command: "! go fmt ./... 2>&1 | read"
|
|
||||||
|
|
||||||
gen-check:
|
|
||||||
executor: golang
|
|
||||||
working_directory: ~/lotus
|
|
||||||
steps:
|
|
||||||
- install-ubuntu-deps
|
|
||||||
- attach_workspace:
|
|
||||||
at: ~/
|
|
||||||
- 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 && git --no-pager diff --quiet
|
|
||||||
- run: make docsgen-cli
|
|
||||||
- run: git --no-pager diff && git --no-pager diff --quiet
|
|
||||||
|
|
||||||
docs-check:
|
|
||||||
executor: golang
|
|
||||||
working_directory: ~/lotus
|
|
||||||
steps:
|
|
||||||
- install-ubuntu-deps
|
|
||||||
- attach_workspace:
|
|
||||||
at: ~/
|
|
||||||
- run: go install golang.org/x/tools/cmd/goimports
|
|
||||||
- run: make docsgen
|
|
||||||
- run: git --no-pager diff && git --no-pager diff --quiet
|
|
||||||
|
|
||||||
lint-all:
|
|
||||||
description: |
|
|
||||||
Run golangci-lint.
|
|
||||||
working_directory: ~/lotus
|
|
||||||
parameters:
|
|
||||||
args:
|
|
||||||
type: string
|
|
||||||
default: ''
|
|
||||||
description: |
|
|
||||||
Arguments to pass to golangci-lint
|
|
||||||
docker:
|
|
||||||
- image: cimg/go:[[ .GoVersion]]
|
|
||||||
resource_class: medium+
|
|
||||||
steps:
|
|
||||||
- install-ubuntu-deps
|
|
||||||
- attach_workspace:
|
|
||||||
at: ~/
|
|
||||||
- run:
|
|
||||||
name: Lint
|
|
||||||
command: |
|
|
||||||
golangci-lint run -v --timeout 10m \
|
|
||||||
--concurrency 4 << parameters.args >>
|
|
||||||
|
|
||||||
build-docker:
|
|
||||||
description: >
|
|
||||||
Publish to Dockerhub
|
|
||||||
executor: docker/docker
|
|
||||||
parameters:
|
|
||||||
image:
|
|
||||||
type: string
|
|
||||||
default: lotus
|
|
||||||
description: >
|
|
||||||
Passed to the docker build process to determine which image in the
|
|
||||||
Dockerfile should be built. Expected values are `lotus`,
|
|
||||||
`lotus-all-in-one`
|
|
||||||
network:
|
|
||||||
type: string
|
|
||||||
default: "mainnet"
|
|
||||||
description: >
|
|
||||||
Passed to the docker build process using GOFLAGS+=-tags=<<network>>.
|
|
||||||
Expected values are `debug`, `2k`, `calibnet`, `butterflynet`,
|
|
||||||
`interopnet`.
|
|
||||||
channel:
|
|
||||||
type: string
|
|
||||||
default: ""
|
|
||||||
description: >
|
|
||||||
The release channel to use for this image.
|
|
||||||
push:
|
|
||||||
type: boolean
|
|
||||||
default: false
|
|
||||||
description: >
|
|
||||||
When true, pushes the image to Dockerhub
|
|
||||||
steps:
|
|
||||||
- setup_remote_docker
|
|
||||||
- checkout
|
|
||||||
- git_fetch_all_tags
|
|
||||||
- run: git submodule sync
|
|
||||||
- run: git submodule update --init
|
|
||||||
|
|
||||||
- docker/check:
|
|
||||||
docker-username: DOCKERHUB_USERNAME
|
|
||||||
docker-password: DOCKERHUB_PASSWORD
|
|
||||||
- when:
|
|
||||||
condition:
|
|
||||||
equal: [ mainnet, <<parameters.network>> ]
|
|
||||||
steps:
|
|
||||||
- when:
|
|
||||||
condition: <<parameters.push>>
|
|
||||||
steps:
|
|
||||||
- docker/build:
|
|
||||||
image: filecoin/<<parameters.image>>
|
|
||||||
extra_build_args: --target <<parameters.image>>
|
|
||||||
tag: <<parameters.channel>>
|
|
||||||
- run:
|
|
||||||
name: Docker push
|
|
||||||
command: |
|
|
||||||
docker push filecoin/<<parameters.image>>:<<parameters.channel>>
|
|
||||||
if [["[[ ! -z $CIRCLE_SHA ]]"]]; then
|
|
||||||
docker image tag filecoin/<<parameters.image>>:<<parameters.channel>> filecoin/<<parameters.image>>:"${CIRCLE_SHA:0:7}"
|
|
||||||
docker push filecoin/<<parameters.image>>:"${CIRCLE_SHA:0:7}"
|
|
||||||
fi
|
|
||||||
if [["[[ ! -z $CIRCLE_TAG ]]"]]; then
|
|
||||||
docker image tag filecoin/<<parameters.image>>:<<parameters.channel>> filecoin/<<parameters.image>>:"${CIRCLE_TAG}"
|
|
||||||
docker push filecoin/<<parameters.image>>:"${CIRCLE_TAG}"
|
|
||||||
fi
|
|
||||||
- unless:
|
|
||||||
condition: <<parameters.push>>
|
|
||||||
steps:
|
|
||||||
- docker/build:
|
|
||||||
image: filecoin/<<parameters.image>>
|
|
||||||
extra_build_args: --target <<parameters.image>>
|
|
||||||
- when:
|
|
||||||
condition:
|
|
||||||
not:
|
|
||||||
equal: [ mainnet, <<parameters.network>> ]
|
|
||||||
steps:
|
|
||||||
- when:
|
|
||||||
condition: <<parameters.push>>
|
|
||||||
steps:
|
|
||||||
- docker/build:
|
|
||||||
image: filecoin/<<parameters.image>>
|
|
||||||
extra_build_args: --target <<parameters.image>> --build-arg GOFLAGS=-tags=<<parameters.network>>
|
|
||||||
tag: <<parameters.channel>>-<<parameters.network>>
|
|
||||||
- run:
|
|
||||||
name: Docker push
|
|
||||||
command: |
|
|
||||||
docker push filecoin/<<parameters.image>>:<<parameters.channel>>-<<parameters.network>>
|
|
||||||
if [["[[ ! -z $CIRCLE_SHA ]]"]]; then
|
|
||||||
docker image tag filecoin/<<parameters.image>>:<<parameters.channel>>-<<parameters.network>> filecoin/<<parameters.image>>:"${CIRCLE_SHA:0:7}"-<<parameters.network>>
|
|
||||||
docker push filecoin/<<parameters.image>>:"${CIRCLE_SHA:0:7}"-<<parameters.network>>
|
|
||||||
fi
|
|
||||||
if [["[[ ! -z $CIRCLE_TAG ]]"]]; then
|
|
||||||
docker image tag filecoin/<<parameters.image>>:<<parameters.channel>>-<<parameters.network>> filecoin/<<parameters.image>>:"${CIRCLE_TAG}"-<<parameters.network>>
|
|
||||||
docker push filecoin/<<parameters.image>>:"${CIRCLE_TAG}"-<<parameters.network>>
|
|
||||||
fi
|
|
||||||
- unless:
|
|
||||||
condition: <<parameters.push>>
|
|
||||||
steps:
|
|
||||||
- docker/build:
|
|
||||||
image: filecoin/<<parameters.image>>
|
|
||||||
extra_build_args: --target <<parameters.image>> --build-arg GOFLAGS=-tags=<<parameters.network>>
|
|
||||||
|
|
||||||
workflows:
|
|
||||||
ci:
|
|
||||||
jobs:
|
|
||||||
- build
|
|
||||||
- lint-all:
|
|
||||||
requires:
|
|
||||||
- build
|
|
||||||
- mod-tidy-check:
|
|
||||||
requires:
|
|
||||||
- build
|
|
||||||
- gofmt:
|
|
||||||
requires:
|
|
||||||
- build
|
|
||||||
- gen-check:
|
|
||||||
requires:
|
|
||||||
- build
|
|
||||||
- docs-check:
|
|
||||||
requires:
|
|
||||||
- build
|
|
||||||
|
|
||||||
[[- range $file := .ItestFiles -]]
|
|
||||||
[[ with $name := $file | stripSuffix ]]
|
|
||||||
- test:
|
|
||||||
name: test-itest-[[ $name ]]
|
|
||||||
requires:
|
|
||||||
- build
|
|
||||||
suite: itest-[[ $name ]]
|
|
||||||
target: "./itests/[[ $file ]]"
|
|
||||||
[[- if or (eq $name "worker") (eq $name "deals_concurrent") (eq $name "wdpost_worker_config") (eq $name "sector_pledge")]]
|
|
||||||
resource_class: 2xlarge
|
|
||||||
[[- end]]
|
|
||||||
[[- if or (eq $name "wdpost") (eq $name "sector_pledge")]]
|
|
||||||
get-params: true
|
|
||||||
[[end]]
|
|
||||||
[[- end ]][[- end]]
|
|
||||||
|
|
||||||
[[- range $suite, $pkgs := .UnitSuites]]
|
|
||||||
- test:
|
|
||||||
name: test-[[ $suite ]]
|
|
||||||
requires:
|
|
||||||
- build
|
|
||||||
suite: utest-[[ $suite ]]
|
|
||||||
target: "[[ $pkgs ]]"
|
|
||||||
[[- if eq $suite "unit-storage"]]
|
|
||||||
get-params: true
|
|
||||||
[[- end -]]
|
|
||||||
[[- if eq $suite "unit-cli"]]
|
|
||||||
resource_class: 2xlarge
|
|
||||||
get-params: true
|
|
||||||
[[- end -]]
|
|
||||||
[[- if eq $suite "unit-rest"]]
|
|
||||||
resource_class: 2xlarge
|
|
||||||
[[- end -]]
|
|
||||||
[[- end]]
|
|
||||||
- test:
|
|
||||||
go-test-flags: "-run=TestMulticoreSDR"
|
|
||||||
requires:
|
|
||||||
- build
|
|
||||||
suite: multicore-sdr-check
|
|
||||||
target: "./storage/sealer/ffiwrapper"
|
|
||||||
proofs-log-test: "1"
|
|
||||||
- test-conformance:
|
|
||||||
requires:
|
|
||||||
- build
|
|
||||||
suite: conformance
|
|
||||||
target: "./conformance"
|
|
||||||
|
|
||||||
release:
|
|
||||||
jobs:
|
|
||||||
- build-linux-amd64:
|
|
||||||
name: "Build ( linux / amd64 )"
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- /^release\/v\d+\.\d+\.\d+(-rc\d+)?$/
|
|
||||||
- /^ci\/.*$/
|
|
||||||
tags:
|
|
||||||
only:
|
|
||||||
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
|
|
||||||
- build-darwin-amd64:
|
|
||||||
name: "Build ( darwin / amd64 )"
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- /^release\/v\d+\.\d+\.\d+(-rc\d+)?$/
|
|
||||||
- /^ci\/.*$/
|
|
||||||
tags:
|
|
||||||
only:
|
|
||||||
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
|
|
||||||
- build-darwin-arm64:
|
|
||||||
name: "Build ( darwin / arm64 )"
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- /^release\/v\d+\.\d+\.\d+(-rc\d+)?$/
|
|
||||||
- /^ci\/.*$/
|
|
||||||
tags:
|
|
||||||
only:
|
|
||||||
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
|
|
||||||
- release:
|
|
||||||
name: "Release"
|
|
||||||
requires:
|
|
||||||
- "Build ( darwin / amd64 )"
|
|
||||||
- "Build ( linux / amd64 )"
|
|
||||||
- "Build ( darwin / arm64 )"
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
ignore:
|
|
||||||
- /^.*$/
|
|
||||||
tags:
|
|
||||||
only:
|
|
||||||
- /^v\d+\.\d+\.\d+(-rc\d+)?$/
|
|
||||||
- release:
|
|
||||||
name: "Release (dry-run)"
|
|
||||||
dry-run: true
|
|
||||||
requires:
|
|
||||||
- "Build ( darwin / amd64 )"
|
|
||||||
- "Build ( linux / amd64 )"
|
|
||||||
- "Build ( darwin / arm64 )"
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- /^release\/v\d+\.\d+\.\d+(-rc\d+)?$/
|
|
||||||
- /^ci\/.*$/
|
|
||||||
[[- range .Networks]]
|
|
||||||
- build-docker:
|
|
||||||
name: "Docker push (lotus-all-in-one / stable / [[.]])"
|
|
||||||
image: lotus-all-in-one
|
|
||||||
channel: stable
|
|
||||||
network: [[.]]
|
|
||||||
push: true
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
ignore:
|
|
||||||
- /.*/
|
|
||||||
tags:
|
|
||||||
only:
|
|
||||||
- /^v\d+\.\d+\.\d+$/
|
|
||||||
- build-docker:
|
|
||||||
name: "Docker push (lotus-all-in-one / candidate / [[.]])"
|
|
||||||
image: lotus-all-in-one
|
|
||||||
channel: candidate
|
|
||||||
network: [[.]]
|
|
||||||
push: true
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
ignore:
|
|
||||||
- /.*/
|
|
||||||
tags:
|
|
||||||
only:
|
|
||||||
- /^v\d+\.\d+\.\d+-rc\d+$/
|
|
||||||
- build-docker:
|
|
||||||
name: "Docker push (lotus-all-in-one / edge / [[.]])"
|
|
||||||
image: lotus-all-in-one
|
|
||||||
channel: master
|
|
||||||
network: [[.]]
|
|
||||||
push: true
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- master
|
|
||||||
- build-docker:
|
|
||||||
name: "Docker build (lotus-all-in-one / [[.]])"
|
|
||||||
image: lotus-all-in-one
|
|
||||||
network: [[.]]
|
|
||||||
push: false
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- /^release\/v\d+\.\d+\.\d+(-rc\d+)?$/
|
|
||||||
[[- end]]
|
|
||||||
- build-docker:
|
|
||||||
name: "Docker push (lotus / stable / mainnet)"
|
|
||||||
image: lotus
|
|
||||||
channel: stable
|
|
||||||
network: mainnet
|
|
||||||
push: true
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
ignore:
|
|
||||||
- /.*/
|
|
||||||
tags:
|
|
||||||
only:
|
|
||||||
- /^v\d+\.\d+\.\d+$/
|
|
||||||
- build-docker:
|
|
||||||
name: "Docker push (lotus / candidate / mainnet)"
|
|
||||||
image: lotus
|
|
||||||
channel: candidate
|
|
||||||
network: mainnet
|
|
||||||
push: true
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
ignore:
|
|
||||||
- /.*/
|
|
||||||
tags:
|
|
||||||
only:
|
|
||||||
- /^v\d+\.\d+\.\d+-rc\d+$/
|
|
||||||
- build-docker:
|
|
||||||
name: "Docker push (lotus / master / mainnet)"
|
|
||||||
image: lotus
|
|
||||||
channel: master
|
|
||||||
network: mainnet
|
|
||||||
push: true
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- master
|
|
||||||
- build-docker:
|
|
||||||
name: "Docker build (lotus / mainnet)"
|
|
||||||
image: lotus
|
|
||||||
network: mainnet
|
|
||||||
push: false
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- /^release\/v\d+\.\d+\.\d+(-rc\d+)?$/
|
|
||||||
|
|
||||||
nightly:
|
|
||||||
triggers:
|
|
||||||
- schedule:
|
|
||||||
cron: "0 0 * * *"
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- master
|
|
||||||
jobs:
|
|
||||||
[[- range .Networks]]
|
|
||||||
- build-docker:
|
|
||||||
name: "Docker (lotus-all-in-one / nightly / [[.]])"
|
|
||||||
image: lotus-all-in-one
|
|
||||||
channel: nightly
|
|
||||||
network: [[.]]
|
|
||||||
push: true
|
|
||||||
[[- end]]
|
|
14
.github/actions/export-circle-env/action.yml
vendored
14
.github/actions/export-circle-env/action.yml
vendored
@ -1,14 +0,0 @@
|
|||||||
name: Export Circle Env
|
|
||||||
description: Export CircleCI environment variables for Filecoin Lotus
|
|
||||||
|
|
||||||
runs:
|
|
||||||
using: composite
|
|
||||||
steps:
|
|
||||||
- run: |
|
|
||||||
if [[ "$GITHUB_REF" == refs/tags/* ]]; then
|
|
||||||
echo "CIRCLE_TAG=${GITHUB_REF#refs/tags/}" | tee -a $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
echo "CIRCLE_PROJECT_USERNAME=$GITHUB_REPOSITORY_OWNER" | tee -a $GITHUB_ENV
|
|
||||||
echo "CIRCLE_PROJECT_REPONAME=${GITHUB_REPOSITORY#$GITHUB_REPOSITORY_OWNER/}" | tee -a $GITHUB_ENV
|
|
||||||
echo "CIRCLE_SHA1=$GITHUB_SHA" | tee -a $GITHUB_ENV
|
|
||||||
shell: bash
|
|
4
.github/workflows/docker.yml
vendored
4
.github/workflows/docker.yml
vendored
@ -35,9 +35,7 @@ jobs:
|
|||||||
- image: lotus
|
- image: lotus
|
||||||
network: mainnet
|
network: mainnet
|
||||||
env:
|
env:
|
||||||
# Do not publish until CircleCI is deprecated
|
PUBLISH: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') }}
|
||||||
PUBLISH: false
|
|
||||||
# PUBLISH: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') }}
|
|
||||||
steps:
|
steps:
|
||||||
- id: channel
|
- id: channel
|
||||||
env:
|
env:
|
||||||
|
6
.github/workflows/release.yml
vendored
6
.github/workflows/release.yml
vendored
@ -44,7 +44,6 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: 'recursive'
|
submodules: 'recursive'
|
||||||
- uses: ./.github/actions/export-circle-env
|
|
||||||
- uses: ./.github/actions/install-system-dependencies
|
- uses: ./.github/actions/install-system-dependencies
|
||||||
- uses: ./.github/actions/install-go
|
- uses: ./.github/actions/install-go
|
||||||
- env:
|
- env:
|
||||||
@ -68,9 +67,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [build]
|
needs: [build]
|
||||||
env:
|
env:
|
||||||
# Do not publish until CircleCI is deprecated
|
PUBLISH: ${{ startsWith(github.ref, 'refs/tags/') }}
|
||||||
PUBLISH: false
|
|
||||||
# PUBLISH: ${{ startsWith(github.ref, 'refs/tags/') }}
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
@ -88,7 +85,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: lotus-macOS-ARM64
|
name: lotus-macOS-ARM64
|
||||||
path: darwin_arm64
|
path: darwin_arm64
|
||||||
- uses: ./.github/actions/export-circle-env
|
|
||||||
- uses: ./.github/actions/install-go
|
- uses: ./.github/actions/install-go
|
||||||
- uses: ipfs/download-ipfs-distribution-action@v1
|
- uses: ipfs/download-ipfs-distribution-action@v1
|
||||||
with:
|
with:
|
||||||
|
14
.github/workflows/test.yml
vendored
14
.github/workflows/test.yml
vendored
@ -58,14 +58,6 @@ jobs:
|
|||||||
# to extend the available runner capacity (60 default hosted runners).
|
# to extend the available runner capacity (60 default hosted runners).
|
||||||
# We use self-hosted 4xlarge (16 CPU, 32 RAM; and 2xlarge - 8 CPU, 16 RAM) self-hosted
|
# We use self-hosted 4xlarge (16 CPU, 32 RAM; and 2xlarge - 8 CPU, 16 RAM) self-hosted
|
||||||
# to support resource intensive jobs.
|
# to support resource intensive jobs.
|
||||||
# In CircleCI, the jobs defaulted to running on medium+ runners (3 CPU, 6 RAM).
|
|
||||||
# The following jobs were scheduled to run on 2xlarge runners (16 CPU, 32 RAM):
|
|
||||||
# - itest-deals_concurrent (✅)
|
|
||||||
# - itest-sector_pledge (✅)
|
|
||||||
# - itest-wdpost_worker_config (❌)
|
|
||||||
# - itest-worker (✅)
|
|
||||||
# - unit-cli (❌)
|
|
||||||
# - unit-rest (❌)
|
|
||||||
runners: |
|
runners: |
|
||||||
{
|
{
|
||||||
"itest-deals_concurrent": ["self-hosted", "linux", "x64", "4xlarge"],
|
"itest-deals_concurrent": ["self-hosted", "linux", "x64", "4xlarge"],
|
||||||
@ -122,15 +114,9 @@ jobs:
|
|||||||
"unit-node": ["self-hosted", "linux", "x64", "xlarge"]
|
"unit-node": ["self-hosted", "linux", "x64", "xlarge"]
|
||||||
}
|
}
|
||||||
# A list of test groups that require YugabyteDB to be running
|
# A list of test groups that require YugabyteDB to be running
|
||||||
# In CircleCI, all jobs had yugabytedb running as a sidecar.
|
|
||||||
yugabytedb: |
|
yugabytedb: |
|
||||||
["itest-harmonydb", "itest-harmonytask", "itest-curio"]
|
["itest-harmonydb", "itest-harmonytask", "itest-curio"]
|
||||||
# A list of test groups that require Proof Parameters to be fetched
|
# A list of test groups that require Proof Parameters to be fetched
|
||||||
# In CircleCI, only the following jobs had get-params set:
|
|
||||||
# - unit-cli (✅)
|
|
||||||
# - unit-storage (✅)
|
|
||||||
# - itest-sector_pledge (✅)
|
|
||||||
# - itest-wdpost (✅)
|
|
||||||
parameters: |
|
parameters: |
|
||||||
[
|
[
|
||||||
"conformance",
|
"conformance",
|
||||||
|
@ -27,7 +27,7 @@ builds:
|
|||||||
- goos: linux
|
- goos: linux
|
||||||
goarch: arm64
|
goarch: arm64
|
||||||
prebuilt:
|
prebuilt:
|
||||||
path: '{{ if index .Env "GITHUB_WORKSPACE" }}{{ .Env.GITHUB_WORKSPACE }}{{ else }}/tmp/workspace{{ end }}/{{ .Os }}_{{ .Arch }}{{ with .Amd64 }}_{{ . }}{{ end }}/lotus'
|
path: '{{ .Env.GITHUB_WORKSPACE }}/{{ .Os }}_{{ .Arch }}{{ with .Amd64 }}_{{ . }}{{ end }}/lotus'
|
||||||
- id: lotus-miner
|
- id: lotus-miner
|
||||||
binary: lotus-miner
|
binary: lotus-miner
|
||||||
builder: prebuilt
|
builder: prebuilt
|
||||||
@ -43,7 +43,7 @@ builds:
|
|||||||
- goos: linux
|
- goos: linux
|
||||||
goarch: arm64
|
goarch: arm64
|
||||||
prebuilt:
|
prebuilt:
|
||||||
path: '{{ if index .Env "GITHUB_WORKSPACE" }}{{ .Env.GITHUB_WORKSPACE }}{{ else }}/tmp/workspace{{ end }}/{{ .Os }}_{{ .Arch }}{{ with .Amd64 }}_{{ . }}{{ end }}/lotus-miner'
|
path: '{{ .Env.GITHUB_WORKSPACE }}/{{ .Os }}_{{ .Arch }}{{ with .Amd64 }}_{{ . }}{{ end }}/lotus-miner'
|
||||||
- id: lotus-worker
|
- id: lotus-worker
|
||||||
binary: lotus-worker
|
binary: lotus-worker
|
||||||
builder: prebuilt
|
builder: prebuilt
|
||||||
@ -59,7 +59,7 @@ builds:
|
|||||||
- goos: linux
|
- goos: linux
|
||||||
goarch: arm64
|
goarch: arm64
|
||||||
prebuilt:
|
prebuilt:
|
||||||
path: '{{ if index .Env "GITHUB_WORKSPACE" }}{{ .Env.GITHUB_WORKSPACE }}{{ else }}/tmp/workspace{{ end }}/{{ .Os }}_{{ .Arch }}{{ with .Amd64 }}_{{ . }}{{ end }}/lotus-worker'
|
path: '{{ .Env.GITHUB_WORKSPACE }}/{{ .Os }}_{{ .Arch }}{{ with .Amd64 }}_{{ . }}{{ end }}/lotus-worker'
|
||||||
|
|
||||||
archives:
|
archives:
|
||||||
- id: primary
|
- id: primary
|
||||||
|
33
Makefile
33
Makefile
@ -406,7 +406,7 @@ docsgen-openrpc-gateway: docsgen-openrpc-bin
|
|||||||
fiximports:
|
fiximports:
|
||||||
$(GOCC) run ./scripts/fiximports
|
$(GOCC) run ./scripts/fiximports
|
||||||
|
|
||||||
gen: actors-code-gen type-gen cfgdoc-gen docsgen api-gen circleci
|
gen: actors-code-gen type-gen cfgdoc-gen docsgen api-gen
|
||||||
$(GOCC) run ./scripts/fiximports
|
$(GOCC) run ./scripts/fiximports
|
||||||
@echo ">>> IF YOU'VE MODIFIED THE CLI OR CONFIG, REMEMBER TO ALSO RUN 'make docsgen-cli'"
|
@echo ">>> IF YOU'VE MODIFIED THE CLI OR CONFIG, REMEMBER TO ALSO RUN 'make docsgen-cli'"
|
||||||
.PHONY: gen
|
.PHONY: gen
|
||||||
@ -428,5 +428,32 @@ docsgen-cli: lotus lotus-miner lotus-worker curio sptool
|
|||||||
print-%:
|
print-%:
|
||||||
@echo $*=$($*)
|
@echo $*=$($*)
|
||||||
|
|
||||||
circleci:
|
### Curio devnet images
|
||||||
go generate -x ./.circleci
|
curio_docker_user?=curio
|
||||||
|
curio_base_image=$(curio_docker_user)/curio-all-in-one:latest-debug
|
||||||
|
ffi_from_source?=0
|
||||||
|
|
||||||
|
curio-devnet: lotus lotus-miner lotus-shed lotus-seed curio sptool
|
||||||
|
.PHONY: curio-devnet
|
||||||
|
|
||||||
|
curio_docker_build_cmd=docker build --build-arg CURIO_TEST_IMAGE=$(curio_base_image) \
|
||||||
|
--build-arg FFI_BUILD_FROM_SOURCE=$(ffi_from_source) $(docker_args)
|
||||||
|
|
||||||
|
docker/curio-all-in-one:
|
||||||
|
$(curio_docker_build_cmd) -f Dockerfile.curio --target curio-all-in-one \
|
||||||
|
-t $(curio_base_image) --build-arg GOFLAGS=-tags=debug .
|
||||||
|
.PHONY: docker/curio-all-in-one
|
||||||
|
|
||||||
|
docker/%:
|
||||||
|
cd curiosrc/docker/$* && DOCKER_BUILDKIT=1 $(curio_docker_build_cmd) -t $(curio_docker_user)/$*-dev:dev \
|
||||||
|
--build-arg BUILD_VERSION=dev .
|
||||||
|
|
||||||
|
docker/curio-devnet: $(lotus_build_cmd) \
|
||||||
|
docker/curio-all-in-one docker/lotus docker/lotus-miner docker/curio docker/yugabyte
|
||||||
|
.PHONY: docker/curio-devnet
|
||||||
|
|
||||||
|
curio-devnet/up:
|
||||||
|
rm -rf ./curiosrc/docker/data && docker compose -f ./curiosrc/docker/docker-compose.yaml up -d
|
||||||
|
|
||||||
|
curio-devnet/down:
|
||||||
|
docker compose -f ./curiosrc/docker/docker-compose.yaml down --rmi=local && sleep 2 && rm -rf ./curiosrc/docker/data
|
||||||
|
@ -7,10 +7,12 @@
|
|||||||
<h1 align="center">Project Lotus - 莲</h1>
|
<h1 align="center">Project Lotus - 莲</h1>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://circleci.com/gh/filecoin-project/lotus"><img src="https://circleci.com/gh/filecoin-project/lotus.svg?style=svg"></a>
|
![example workflow](https://github.com/github/docs/actions/workflows/main.yml/badge.svg)
|
||||||
<a href="https://codecov.io/gh/filecoin-project/lotus"><img src="https://codecov.io/gh/filecoin-project/lotus/branch/master/graph/badge.svg"></a>
|
<a href="https://github.com/filecoin-project/lotus/actions/workflows/build.yml"><img src="https://github.com/filecoin-project/lotus/actions/workflows/build.yml/badge.svg"></a>
|
||||||
|
<a href="https://github.com/filecoin-project/lotus/actions/workflows/check.yml"><img src="https://github.com/filecoin-project/lotus/actions/workflows/check.yml/badge.svg"></a>
|
||||||
|
<a href="https://github.com/filecoin-project/lotus/actions/workflows/test.yml"><img src="https://github.com/filecoin-project/lotus/actions/workflows/test.yml/badge.svg"></a>
|
||||||
<a href="https://goreportcard.com/report/github.com/filecoin-project/lotus"><img src="https://goreportcard.com/badge/github.com/filecoin-project/lotus" /></a>
|
<a href="https://goreportcard.com/report/github.com/filecoin-project/lotus"><img src="https://goreportcard.com/badge/github.com/filecoin-project/lotus" /></a>
|
||||||
<a href=""><img src="https://img.shields.io/badge/golang-%3E%3D1.18.8-blue.svg" /></a>
|
<a href=""><img src="https://img.shields.io/badge/golang-%3E%3D1.21.7-blue.svg" /></a>
|
||||||
<br>
|
<br>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -9,6 +9,11 @@ if [ -z "${GITHUB_TOKEN}" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$GITHUB_REF" != refs/tags/* ]; then
|
||||||
|
echo "$GITHUB_REF is not a tag, publish failed"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
REQUIRED=(
|
REQUIRED=(
|
||||||
"jq"
|
"jq"
|
||||||
"curl"
|
"curl"
|
||||||
@ -18,12 +23,14 @@ do
|
|||||||
command -v "${REQUIRE}" >/dev/null 2>&1 || echo >&2 "'${REQUIRE}' must be installed"
|
command -v "${REQUIRE}" >/dev/null 2>&1 || echo >&2 "'${REQUIRE}' must be installed"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
GITHUB_TAG="${GITHUB_REF#refs/tags/}"
|
||||||
|
|
||||||
#see if the release already exists by tag
|
#see if the release already exists by tag
|
||||||
RELEASE_RESPONSE=`
|
RELEASE_RESPONSE=`
|
||||||
curl \
|
curl \
|
||||||
--fail \
|
--fail \
|
||||||
--header "Authorization: token ${GITHUB_TOKEN}" \
|
--header "Authorization: token ${GITHUB_TOKEN}" \
|
||||||
"https://api.github.com/repos/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}/releases/tags/${CIRCLE_TAG}"
|
"https://api.github.com/repos/${GITHUB_REPOSITORY}/releases/tags/${GITHUB_TAG}"
|
||||||
`
|
`
|
||||||
RELEASE_ID=`echo "${RELEASE_RESPONSE}" | jq '.id'`
|
RELEASE_ID=`echo "${RELEASE_RESPONSE}" | jq '.id'`
|
||||||
|
|
||||||
@ -32,16 +39,16 @@ if [ "${RELEASE_ID}" = "null" ]; then
|
|||||||
|
|
||||||
COND_CREATE_DISCUSSION=""
|
COND_CREATE_DISCUSSION=""
|
||||||
PRERELEASE=true
|
PRERELEASE=true
|
||||||
if [[ ${CIRCLE_TAG} =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
if [[ ${GITHUB_TAG} =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
||||||
COND_CREATE_DISCUSSION="\"discussion_category_name\": \"announcement\","
|
COND_CREATE_DISCUSSION="\"discussion_category_name\": \"announcement\","
|
||||||
PRERELEASE=false
|
PRERELEASE=false
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE_DATA="{
|
RELEASE_DATA="{
|
||||||
\"tag_name\": \"${CIRCLE_TAG}\",
|
\"tag_name\": \"${GITHUB_TAG}\",
|
||||||
\"target_commitish\": \"${CIRCLE_SHA1}\",
|
\"target_commitish\": \"${GITHUB_SHA}\",
|
||||||
${COND_CREATE_DISCUSSION}
|
${COND_CREATE_DISCUSSION}
|
||||||
\"name\": \"${CIRCLE_TAG}\",
|
\"name\": \"${GITHUB_TAG}\",
|
||||||
\"body\": \"\",
|
\"body\": \"\",
|
||||||
\"prerelease\": ${PRERELEASE}
|
\"prerelease\": ${PRERELEASE}
|
||||||
}"
|
}"
|
||||||
@ -54,7 +61,7 @@ if [ "${RELEASE_ID}" = "null" ]; then
|
|||||||
--header "Authorization: token ${GITHUB_TOKEN}" \
|
--header "Authorization: token ${GITHUB_TOKEN}" \
|
||||||
--header "Content-Type: application/json" \
|
--header "Content-Type: application/json" \
|
||||||
--data "${RELEASE_DATA}" \
|
--data "${RELEASE_DATA}" \
|
||||||
"https://api.github.com/repos/$CIRCLE_PROJECT_USERNAME/${CIRCLE_PROJECT_REPONAME}/releases"
|
"https://api.github.com/repos/${GITHUB_REPOSITORY}/releases"
|
||||||
`
|
`
|
||||||
else
|
else
|
||||||
echo "release already exists"
|
echo "release already exists"
|
||||||
|
@ -32,8 +32,8 @@ function validate_lotus_version_matches_tag(){
|
|||||||
|
|
||||||
_lotus_path=$1
|
_lotus_path=$1
|
||||||
|
|
||||||
if [[ ! -z "${CIRCLE_TAG}" ]]; then
|
if [[ "$GITHUB_REF" != refs/tags/* ]]; then
|
||||||
validate_lotus_version_matches_tag "${_lotus_path}" "${CIRCLE_TAG}"
|
validate_lotus_version_matches_tag "${_lotus_path}" "${GITHUB_REF#refs/tags/}"
|
||||||
else
|
else
|
||||||
echo "No CI tag found. Skipping version check."
|
echo "$GITHUB_REF is not a tag, skipping version check"
|
||||||
fi
|
fi
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
# sector-storage
|
# sector-storage
|
||||||
|
|
||||||
[![](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://ipn.io)
|
[![](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://ipn.io)
|
||||||
[![CircleCI](https://circleci.com/gh/filecoin-project/sector-storage.svg?style=svg)](https://circleci.com/gh/filecoin-project/sector-storage)
|
|
||||||
[![standard-readme compliant](https://img.shields.io/badge/standard--readme-OK-green.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)
|
[![standard-readme compliant](https://img.shields.io/badge/standard--readme-OK-green.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)
|
||||||
|
|
||||||
> a concrete implementation of the [specs-storage](https://github.com/filecoin-project/specs-storage) interface
|
> a concrete implementation of the [specs-storage](https://github.com/filecoin-project/specs-storage) interface
|
||||||
|
Loading…
Reference in New Issue
Block a user