diff --git a/.github/workflows/main.yml b/.github/workflows/issue-project.yml similarity index 100% rename from .github/workflows/main.yml rename to .github/workflows/issue-project.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 000000000..48df8043b --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,303 @@ +name: CI + +on: + push: + branches: + - main + pull_request: + branches: + - main + +env: + GO_VERSION: 1.22.3 + +jobs: + install-deps: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: ${{ env.GO_VERSION }} + - name: Install SSH + run: | + sudo apt-get update + sudo apt-get install -y openssh-client git + + prepare: + runs-on: ubuntu-latest + needs: install-deps + steps: + - uses: actions/checkout@v2 + - name: Fetch all tags + run: git fetch --all + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y ocl-icd-opencl-dev libhwloc-dev + - name: Sync submodules + run: git submodule sync + - name: Update submodules + run: git submodule update --init + + download-params: + runs-on: ubuntu-latest + steps: + - name: Restore parameters cache + uses: actions/cache@v2 + with: + path: /var/tmp/filecoin-proof-parameters/ + key: v25-8mb-lotus-params + - name: Fetch parameters + run: ./boostci fetch-params 8388608 + - name: Save parameters cache + uses: actions/cache@v2 + with: + path: /var/tmp/filecoin-proof-parameters/ + key: v25-8mb-lotus-params + - name: Upload parameters + uses: actions/upload-artifact@v2 + with: + name: filecoin-proof-parameters + path: /var/tmp/filecoin-proof-parameters/ + + build-all: + runs-on: ubuntu-latest + needs: [install-deps, prepare, download-params] + steps: + - uses: actions/checkout@v2 + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y npm + - name: Download parameters + uses: actions/download-artifact@v2 + with: + name: filecoin-proof-parameters + path: /var/tmp/filecoin-proof-parameters/ + - name: Build Go + run: make build-go + - name: Store Artifacts + uses: actions/upload-artifact@v2 + with: + name: boost + path: boost + - name: Create Linux directory and move boost + run: | + mkdir linux + mv boost linux/ + - name: Persist to workspace + uses: actions/upload-artifact@v2 + with: + name: linux + path: linux + + test: + runs-on: ubuntu-latest + needs: [install-deps, prepare, download-params] + strategy: + matrix: + test-suite: + - itest-dummydeal_offline + - itest-dummydeal + - itest-graphsync_identity_cid + - itest-retrieval + - itest-direct_deal + - all + - itest-data-segment-index + - itest-ipni + - itest-multiminer-graphsync + - booster-http + - booster-bitswap + steps: + - uses: actions/checkout@v2 + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: ${{ env.GO_VERSION }} + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y ocl-icd-opencl-dev libhwloc-dev + - name: Download parameters + uses: actions/download-artifact@v2 + with: + name: filecoin-proof-parameters + path: /var/tmp/filecoin-proof-parameters/ + - name: Run tests + run: | + make boostci + go test -v --tags=debug -timeout 30m ./... + + build-macos: + runs-on: macos-latest + needs: install-deps + steps: + - uses: actions/checkout@v2 + - name: Install dependencies + run: | + brew update + brew install pkg-config + - name: Install Rust + run: | + curl https://sh.rustup.rs -sSf | sh -s -- -y + - name: Install hwloc + run: | + mkdir ~/hwloc + curl --location https://download.open-mpi.org/release/hwloc/v2.4/hwloc-2.4.1.tar.gz --output ~/hwloc/hwloc-2.4.1.tar.gz + cd ~/hwloc + tar -xvzpf hwloc-2.4.1.tar.gz + cd hwloc-2.4.1 + ./configure && make && sudo make install + - name: Build MacOS + run: make debug + - name: Check tag and version output match + run: ./scripts/version-check.sh ./boost + - name: Store Artifacts + uses: actions/upload-artifact@v2 + with: + name: boost + path: boost + - name: Create Darwin directory and move boost + run: | + mkdir darwin + mv boost darwin/ + - name: Persist to workspace + uses: actions/upload-artifact@v2 + with: + name: darwin + path: darwin + + lint: + runs-on: ubuntu-latest + needs: install-deps + steps: + - uses: actions/checkout@v2 + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: ${{ env.GO_VERSION }} + - name: Install golangci-lint + run: | + curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.56.2 + - name: Lint + run: | + golangci-lint run -v --timeout 2m + + gofmt: + runs-on: ubuntu-latest + needs: install-deps + steps: + - uses: actions/checkout@v2 + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: ${{ env.GO_VERSION }} + - name: Check gofmt + run: | + ! go fmt ./... 2>&1 | read + - name: Git diff check + run: git --no-pager diff + - name: Git diff quiet + run: git --no-pager diff --quiet + + cbor-check: + runs-on: ubuntu-latest + needs: install-deps + steps: + - uses: actions/checkout@v2 + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: ${{ env.GO_VERSION }} + - name: Install goimports + run: go install golang.org/x/tools/cmd/goimports + - name: Install cbor-gen-for + run: go install github.com/hannahhoward/cbor-gen-for + - name: Generate CBOR + run: make cbor-gen + - name: Git diff check + run: git --no-pager diff + - name: Git diff quiet + run: git --no-pager diff --quiet + + docs-check: + runs-on: ubuntu-latest + needs: install-deps + steps: + - uses: actions/checkout@v2 + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: ${{ env.GO_VERSION }} + - name: Install goimports + run: go install golang.org/x/tools/cmd/goimports + - name: Generate Docs + run: make docsgen + - name: Git diff check + run: git --no-pager diff + - name: Git diff quiet + run: git --no-pager diff --quiet + + gen-check: + runs-on: ubuntu-latest + needs: install-deps + steps: + - uses: actions/checkout@v2 + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: ${{ env.GO_VERSION }} + - name: Install goimports + run: go install golang.org/x/tools/cmd/goimports + - name: Install cbor-gen-for + run: go install github.com/hannahhoward/cbor-gen-for + - name: Generate Code + run: make gen + - name: Git diff check + run: git --no-pager diff + - name: Git diff quiet + run: git --no-pager diff --quiet + + lid-docker-compose: + runs-on: ubuntu-latest + needs: [install-deps, prepare, download-params, yugabyte] + steps: + - uses: actions/checkout@v2 + - name: Run LID integration tests + run: | + set -x + make test-lid + + yugabyte: + runs-on: ubuntu-latest + needs: install-deps + steps: + - name: Start YugabyteDB + run: docker run --rm --name yugabyte -d -p 5433:5433 yugabytedb/yugabyte:2.18.0.0-b65 bin/yugabyted start --daemon=false + shell: bash + - run: | + while true; do + status=$(docker exec yugabyte bin/yugabyted status); + echo $status; + echo $status | grep Running && break; + sleep 1; + done + shell: bash + + mod-tidy-check: + runs-on: ubuntu-latest + needs: install-deps + steps: + - uses: actions/checkout@v2 + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: ${{ env.GO_VERSION }} + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y git + - name: Run mod tidy check + run: go mod tidy -v