Skip to content

chore: switch to Github Actions #1

chore: switch to Github Actions

chore: switch to Github Actions #1

Workflow file for this run

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