2019-07-01 20:17:00 +00:00
|
|
|
version: 2.1
|
|
|
|
orbs:
|
|
|
|
go: gotest/tools@0.0.9
|
|
|
|
|
2019-09-23 11:43:32 +00:00
|
|
|
executors:
|
|
|
|
golang:
|
|
|
|
docker:
|
|
|
|
- image: circleci/golang:1.13
|
2019-12-04 01:13:27 +00:00
|
|
|
resource_class: 2xlarge
|
2019-07-01 20:17:00 +00:00
|
|
|
|
2019-07-08 14:31:43 +00:00
|
|
|
commands:
|
2019-07-08 14:45:47 +00:00
|
|
|
install-deps:
|
|
|
|
steps:
|
|
|
|
- go/install-ssh
|
|
|
|
- go/install: {package: git}
|
2019-07-08 14:31:43 +00:00
|
|
|
prepare:
|
2019-12-04 01:13:27 +00:00
|
|
|
parameters:
|
|
|
|
linux:
|
|
|
|
default: true
|
|
|
|
description: is a linux build environment?
|
|
|
|
type: boolean
|
|
|
|
darwin:
|
|
|
|
default: false
|
|
|
|
description: is a darwin build environment?
|
|
|
|
type: boolean
|
2019-07-08 14:31:43 +00:00
|
|
|
steps:
|
|
|
|
- checkout
|
2019-12-04 01:13:27 +00:00
|
|
|
- when:
|
|
|
|
condition: << parameters.linux >>
|
|
|
|
steps:
|
|
|
|
- run: sudo apt-get update
|
|
|
|
- run: sudo apt-get install ocl-icd-opencl-dev
|
2019-07-08 14:31:43 +00:00
|
|
|
- run: git submodule sync
|
|
|
|
- run: git submodule update --init
|
2019-09-06 23:27:16 +00:00
|
|
|
download-params:
|
|
|
|
steps:
|
|
|
|
- restore_cache:
|
|
|
|
name: Restore parameters cache
|
2019-12-04 01:13:27 +00:00
|
|
|
keys:
|
2019-12-04 19:49:36 +00:00
|
|
|
- 'v20-1k-lotus-params-{{ checksum "build/proof-params/parameters.json" }}-{{ checksum "build/paramfetch.go" }}'
|
|
|
|
- 'v20-1k-lotus-params-{{ checksum "build/proof-params/parameters.json" }}-'
|
2019-09-06 23:27:16 +00:00
|
|
|
paths:
|
|
|
|
- /var/tmp/filecoin-proof-parameters/
|
2019-12-04 19:49:36 +00:00
|
|
|
- run: ./lotus fetch-params --proving-params 1024
|
2019-09-06 23:27:16 +00:00
|
|
|
- save_cache:
|
|
|
|
name: Save parameters cache
|
2019-12-04 19:49:36 +00:00
|
|
|
key: 'v20-1k-lotus-params-{{ checksum "build/proof-params/parameters.json" }}-{{ checksum "build/paramfetch.go" }}'
|
2019-09-06 23:27:16 +00:00
|
|
|
paths:
|
|
|
|
- /var/tmp/filecoin-proof-parameters/
|
2019-07-08 14:31:43 +00:00
|
|
|
|
|
|
|
|
2019-07-02 09:19:48 +00:00
|
|
|
jobs:
|
|
|
|
mod-tidy-check:
|
2019-09-23 11:43:32 +00:00
|
|
|
executor: golang
|
2019-07-02 09:19:48 +00:00
|
|
|
steps:
|
2019-07-08 14:47:19 +00:00
|
|
|
- install-deps
|
|
|
|
- prepare
|
2019-07-02 09:42:22 +00:00
|
|
|
- go/mod-download
|
2019-07-02 09:19:48 +00:00
|
|
|
- go/mod-tidy-check
|
|
|
|
|
2019-11-30 08:21:01 +00:00
|
|
|
build-all:
|
|
|
|
executor: golang
|
|
|
|
steps:
|
|
|
|
- install-deps
|
|
|
|
- prepare
|
|
|
|
- go/mod-download
|
2019-12-02 20:05:38 +00:00
|
|
|
- run: sudo apt-get update
|
|
|
|
- run: sudo apt-get install npm
|
2019-12-04 01:13:27 +00:00
|
|
|
- restore_cache:
|
|
|
|
name: restore go mod cache
|
|
|
|
key: v1-go-deps-{{ arch }}-{{ checksum "~/go/src/github.com/filecoin-project/lotus/go.mod" }}
|
2019-11-30 08:21:01 +00:00
|
|
|
- run:
|
|
|
|
command: make buildall
|
2019-12-04 01:13:27 +00:00
|
|
|
- store_artifacts:
|
|
|
|
path: lotus
|
|
|
|
- store_artifacts:
|
|
|
|
path: lotus-storage-miner
|
2019-11-30 08:21:01 +00:00
|
|
|
|
2019-07-08 14:31:43 +00:00
|
|
|
test:
|
|
|
|
description: |
|
|
|
|
Run tests with gotestsum.
|
|
|
|
parameters:
|
|
|
|
executor:
|
|
|
|
type: executor
|
2019-09-23 11:43:32 +00:00
|
|
|
default: golang
|
2019-07-08 14:31:43 +00:00
|
|
|
go-test-flags:
|
|
|
|
type: string
|
2019-12-05 12:28:44 +00:00
|
|
|
default: "-timeout 30m"
|
2019-07-08 14:31:43 +00:00
|
|
|
description: Flags passed to go test.
|
|
|
|
packages:
|
|
|
|
type: string
|
|
|
|
default: "./..."
|
|
|
|
description: Import paths of packages to be tested.
|
|
|
|
test-suite-name:
|
|
|
|
type: string
|
|
|
|
default: unit
|
|
|
|
description: Test suite name to report to CircleCI.
|
|
|
|
gotestsum-format:
|
|
|
|
type: string
|
|
|
|
default: short
|
|
|
|
description: gotestsum format. https://github.com/gotestyourself/gotestsum#format
|
|
|
|
coverage:
|
|
|
|
type: string
|
|
|
|
default: -coverprofile=coverage.txt
|
|
|
|
description: Coverage flag. Set to the empty string to disable.
|
|
|
|
codecov-upload:
|
|
|
|
type: boolean
|
|
|
|
default: false
|
|
|
|
description: |
|
|
|
|
Upload coverage report to https://codecov.io/. Requires the codecov API token to be
|
|
|
|
set as an environment variable for private projects.
|
|
|
|
executor: << parameters.executor >>
|
|
|
|
steps:
|
2019-07-08 14:45:47 +00:00
|
|
|
- install-deps
|
2019-07-08 14:31:43 +00:00
|
|
|
- prepare
|
|
|
|
- go/mod-download
|
2019-12-04 01:13:27 +00:00
|
|
|
- restore_cache:
|
|
|
|
name: restore go mod cache
|
|
|
|
key: v1-go-deps-{{ arch }}-{{ checksum "~/go/src/github.com/filecoin-project/lotus/go.mod" }}
|
2019-08-29 19:08:12 +00:00
|
|
|
- run:
|
2019-10-04 20:10:49 +00:00
|
|
|
command: make deps lotus
|
2019-08-29 19:08:12 +00:00
|
|
|
no_output_timeout: 30m
|
2019-10-04 20:10:49 +00:00
|
|
|
- download-params
|
2019-07-08 14:56:06 +00:00
|
|
|
- go/install-gotestsum:
|
2019-07-08 14:55:01 +00:00
|
|
|
gobin: $HOME/.local/bin
|
2019-07-08 14:31:43 +00:00
|
|
|
- run:
|
|
|
|
name: go test
|
|
|
|
environment:
|
|
|
|
GOTESTSUM_JUNITFILE: /tmp/test-reports/<< parameters.test-suite-name >>/junit.xml
|
|
|
|
GOTESTSUM_FORMAT: << parameters.gotestsum-format >>
|
|
|
|
command: |
|
|
|
|
mkdir -p /tmp/test-reports/<< parameters.test-suite-name >>
|
|
|
|
gotestsum -- \
|
|
|
|
<< parameters.coverage >> \
|
|
|
|
<< parameters.go-test-flags >> \
|
|
|
|
<< parameters.packages >>
|
2019-12-05 12:04:34 +00:00
|
|
|
no_output_timeout: 30m
|
2019-07-08 14:31:43 +00:00
|
|
|
- store_test_results:
|
|
|
|
path: /tmp/test-reports
|
|
|
|
- when:
|
|
|
|
condition: << parameters.codecov-upload >>
|
|
|
|
steps:
|
|
|
|
- go/install: {package: bash}
|
|
|
|
- go/install: {package: curl}
|
|
|
|
- run:
|
|
|
|
shell: /bin/bash -eo pipefail
|
|
|
|
command: |
|
|
|
|
bash <(curl -s https://codecov.io/bash)
|
2019-12-04 01:13:27 +00:00
|
|
|
- save_cache:
|
|
|
|
name: save go mod cache
|
|
|
|
key: v1-go-deps-{{ arch }}-{{ checksum "~/go/src/github.com/filecoin-project/lotus/go.mod" }}
|
|
|
|
paths:
|
|
|
|
- "~/go/pkg"
|
|
|
|
- "~/go/src/github.com"
|
|
|
|
- "~/go/src/golang.org"
|
|
|
|
|
|
|
|
build_macos:
|
|
|
|
description: build darwin lotus binary
|
|
|
|
macos:
|
|
|
|
xcode: "10.0.0"
|
|
|
|
working_directory: ~/go/src/github.com/filecoin-project/lotus
|
|
|
|
steps:
|
|
|
|
- prepare:
|
|
|
|
linux: false
|
|
|
|
darwin: true
|
|
|
|
- run:
|
|
|
|
name: Install go
|
|
|
|
command: |
|
|
|
|
curl -O https://dl.google.com/go/go1.13.4.darwin-amd64.pkg && \
|
|
|
|
sudo installer -pkg go1.13.4.darwin-amd64.pkg -target /
|
|
|
|
- run:
|
|
|
|
name: Install pkg-config
|
|
|
|
command: HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config
|
|
|
|
- run: go version
|
|
|
|
- run:
|
|
|
|
name: Install Rust
|
|
|
|
command: |
|
|
|
|
curl https://sh.rustup.rs -sSf | sh -s -- -y
|
|
|
|
- run:
|
|
|
|
name: Install jq
|
|
|
|
command: |
|
|
|
|
mkdir $HOME/.bin
|
|
|
|
curl --location https://github.com/stedolan/jq/releases/download/jq-1.6/jq-osx-amd64 --output $HOME/.bin/jq
|
|
|
|
chmod +x $HOME/.bin/jq
|
|
|
|
- restore_cache:
|
|
|
|
name: restore go mod and cargo cache
|
|
|
|
key: v1-go-deps-{{ arch }}-{{ checksum "~/go/src/github.com/filecoin-project/lotus/go.mod" }}
|
|
|
|
- install-deps
|
|
|
|
- go/mod-download
|
|
|
|
- run:
|
|
|
|
command: make build
|
|
|
|
no_output_timeout: 30m
|
|
|
|
- store_artifacts:
|
|
|
|
path: lotus
|
|
|
|
- store_artifacts:
|
|
|
|
path: lotus-storage-miner
|
|
|
|
- save_cache:
|
|
|
|
name: save go mod and cargo cache
|
|
|
|
key: v1-go-deps-{{ arch }}-{{ checksum "~/go/src/github.com/filecoin-project/lotus/go.mod" }}
|
|
|
|
paths:
|
|
|
|
- "~/go/pkg"
|
|
|
|
- "~/go/src/github.com"
|
|
|
|
- "~/go/src/golang.org"
|
|
|
|
- "~/.rustup"
|
|
|
|
- "~/.cargo"
|
2019-07-08 14:31:43 +00:00
|
|
|
|
2019-07-10 13:35:00 +00:00
|
|
|
lint: &lint
|
2019-07-08 14:31:43 +00:00
|
|
|
description: |
|
|
|
|
Run golangci-lint.
|
|
|
|
parameters:
|
|
|
|
executor:
|
|
|
|
type: executor
|
2019-09-23 11:43:32 +00:00
|
|
|
default: golang
|
2019-07-08 14:31:43 +00:00
|
|
|
golangci-lint-version:
|
|
|
|
type: string
|
2019-07-08 15:36:24 +00:00
|
|
|
default: 1.17.1
|
2019-07-08 14:31:43 +00:00
|
|
|
concurrency:
|
|
|
|
type: string
|
|
|
|
default: '2'
|
|
|
|
description: |
|
|
|
|
Concurrency used to run linters. Defaults to 2 because NumCPU is not
|
|
|
|
aware of container CPU limits.
|
2019-07-08 15:36:24 +00:00
|
|
|
args:
|
|
|
|
type: string
|
|
|
|
default: ''
|
|
|
|
description: |
|
|
|
|
Arguments to pass to golangci-lint
|
2019-07-08 14:31:43 +00:00
|
|
|
executor: << parameters.executor >>
|
|
|
|
steps:
|
2019-07-08 14:45:47 +00:00
|
|
|
- install-deps
|
2019-07-08 14:31:43 +00:00
|
|
|
- prepare
|
|
|
|
- go/mod-download
|
2019-08-29 19:08:12 +00:00
|
|
|
- run:
|
2019-08-30 11:26:20 +00:00
|
|
|
command: make deps
|
|
|
|
no_output_timeout: 30m
|
2019-07-08 14:31:43 +00:00
|
|
|
- go/install-golangci-lint:
|
2019-07-08 14:55:01 +00:00
|
|
|
gobin: $HOME/.local/bin
|
2019-07-08 14:31:43 +00:00
|
|
|
version: << parameters.golangci-lint-version >>
|
|
|
|
- run:
|
|
|
|
name: Lint
|
|
|
|
command: |
|
2019-08-06 12:16:49 +00:00
|
|
|
$HOME/.local/bin/golangci-lint run -v \
|
2019-07-08 15:36:24 +00:00
|
|
|
--concurrency << parameters.concurrency >> << parameters.args >>
|
2019-07-10 13:35:00 +00:00
|
|
|
lint-changes:
|
|
|
|
<<: *lint
|
|
|
|
|
|
|
|
lint-all:
|
|
|
|
<<: *lint
|
2019-07-08 14:31:43 +00:00
|
|
|
|
|
|
|
|
2019-07-01 20:17:00 +00:00
|
|
|
workflows:
|
2019-11-08 20:39:40 +00:00
|
|
|
version: 2.1
|
2019-07-01 20:17:00 +00:00
|
|
|
ci:
|
|
|
|
jobs:
|
2019-07-10 13:35:00 +00:00
|
|
|
- lint-changes:
|
|
|
|
args: "--new-from-rev origin/master"
|
2019-07-08 14:31:43 +00:00
|
|
|
- test:
|
2019-07-02 09:42:22 +00:00
|
|
|
codecov-upload: true
|
2019-07-02 09:19:48 +00:00
|
|
|
- mod-tidy-check
|
2019-12-04 01:13:27 +00:00
|
|
|
- build-all
|
|
|
|
- build_macos:
|
|
|
|
filters:
|
|
|
|
branches:
|
|
|
|
only: master
|