Skip to content

chore: switch to Github Actions #6

chore: switch to Github Actions

chore: switch to Github Actions #6

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
env:
GO_VERSION: 1.22.3
jobs:
setup-cache:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Go
uses: ./.github/actions/setup-go
with:
go-version: ${{ env.GO_VERSION }}
- name: Install Dependencies
uses: ./.github/actions/install-deps
- name: Cache boostci params
id: cache-params
uses: actions/cache@v2
with:
path: /var/tmp/filecoin-proof-parameters/
key: v25-8mb-lotus-params
- name: Run boostci
if: steps.cache-params.outputs.cache-hit != 'true'
run: make boostci
shell: bash
- name: Fetch parameters
if: steps.cache-params.outputs.cache-hit != 'true'
run: ./boostci fetch-params 8388608
shell: bash
- name: Save parameters to cache
if: steps.cache-params.outputs.cache-hit != 'true'
run: echo "Cache saved"
setup-deps:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Go
uses: ./.github/actions/setup-go
with:
go-version: ${{ env.GO_VERSION }}
- name: Install Dependencies
uses: ./.github/actions/install-deps
- name: Generate cache key for dependencies
id: make_deps
env:
CACHE_KEY: ${{ runner.os }}-${{ runner.arch }}-make-deps-${{ hashFiles('./.git/modules/extern/filecoin-ffi/HEAD') }}
CACHE_PATH: |
./extern/filecoin-ffi/filcrypto.h
./extern/filecoin-ffi/libfilcrypto.a
./extern/filecoin-ffi/filcrypto.pc
run: |
echo "key=${CACHE_KEY}" >> $GITHUB_OUTPUT
echo -e "path<<EOF\n$CACHE_PATH\nEOF" | tee -a $GITHUB_OUTPUT
shell: bash
- name: Restore cache for dependencies
id: restore_make_deps
uses: actions/cache@v2
with:
key: ${{ steps.make_deps.outputs.key }}
path: ${{ steps.make_deps.outputs.path }}
restore-keys: |
make-deps-
- name: Install dependencies if cache miss
if: steps.restore_make_deps.outputs.cache-hit != 'true'
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
# Install system dependencies
sudo apt-get update
sudo apt-get install -y required-packages
# Setup Go
uses: actions/setup-go@v2
with:
go-version: ${{ env.GO_VERSION }}
# Install project dependencies
make deps
shell: bash
- name: Save dependencies to cache
if: steps.restore_make_deps.outputs.cache-hit != 'true'
uses: actions/cache@v2
with:
key: ${{ steps.make_deps.outputs.key }}
path: ${{ steps.make_deps.outputs.path }}
build-all:
runs-on: ubuntu-latest
needs: setup-deps
steps:
- uses: actions/checkout@v2
- name: Setup Go
uses: ./.github/actions/setup-go
with:
go-version: ${{ env.GO_VERSION }}
- name: Install Dependencies
uses: ./.github/actions/install-deps
- name: Restore dependencies cache
uses: actions/cache@v2
with:
key: ${{ needs.setup-deps.outputs.make_deps_key }}
path: ${{ needs.setup-deps.outputs.make_deps_path }}
restore-keys: |
make-deps-
- name: Build Go
run: make build-go
shell: bash
- 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/
shell: bash
- name: Persist to workspace
uses: actions/upload-artifact@v2
with:
name: linux
path: linux
test:
runs-on: ubuntu-latest
needs: [setup-cache, setup-deps]
strategy:
matrix:
test-suite:
- name: test-itest-dummydeal_offline
target: "./itests/dummydeal_offline_test.go"
- name: test-itest-dummydeal
target: "./itests/dummydeal_test.go"
- name: test-graphsync_identity_cid
target: "./itests/graphsync_identity_cid_test.go"
- name: test-itest-retrieval
target: "./itests/graphsync_retrieval_test.go"
- name: test-itest-direct_deal
target: "./itests/ddo_test.go"
- name: test-all
target: "`go list ./... | grep -v boost/itests | grep -v cmd/booster-http | grep -v cmd/booster-bitswap`"
- name: test-itest-data-segment-index
target: "./itests/data_segment_index_retrieval_test.go"
- name: test-itest-ipni
target: "./itests/ipni_publish_test.go"
- name: test-itest-multiminer-graphsync
target: "./itests/multiminer_retrieval_graphsync_test.go"
- name: test-booster-http
target: "./cmd/booster-http"
- name: test-booster-bitswap
target: "./cmd/booster-bitswap"
- name: test-itest-lid-cleanup
target: "./itests/lid_cleanup_test.go"
steps:
- uses: actions/checkout@v2
- name: Setup Go
uses: ./.github/actions/setup-go
with:
go-version: ${{ env.GO_VERSION }}
- name: Install Dependencies
uses: ./.github/actions/install-deps
- name: Restore dependencies cache
uses: actions/cache@v2
with:
key: ${{ needs.setup-deps.outputs.make_deps_key }}
path: ${{ needs.setup-deps.outputs.make_deps_path }}
restore-keys: |
make-deps-
- name: Cache boostci params
uses: actions/cache@v2
with:
path: /var/tmp/filecoin-proof-parameters/
key: v25-8mb-lotus-params
- name: Run tests
run: |
go test -v --tags=debug -timeout 30m ${{ matrix.test-suite.target }}
shell: bash
# build-macos:
# runs-on: macos-latest
# steps:
# - uses: actions/checkout@v2
#
# - name: Setup Go
# uses: ./.github/actions/setup-go
# with:
# go-version: ${{ env.GO_VERSION }}
#
# - name: Install dependencies
# run: |
# brew update
# brew install pkg-config
# shell: bash
#
# - name: Install Rust
# run: |
# curl https://sh.rustup.rs -sSf | sh -s -- -y
# shell: bash
#
# - 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
# shell: bash
#
# - name: Build MacOS
# run: make debug
# shell: bash
#
# - name: Check tag and version output match
# run: ./scripts/version-check.sh ./boost
# shell: bash
#
# - 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/
# shell: bash
#
# - name: Persist to workspace
# uses: actions/upload-artifact@v2
# with:
# name: darwin
# path: darwin
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Go
uses: ./.github/actions/setup-go
with:
go-version: ${{ env.GO_VERSION }}
- name: Install Dependencies
uses: ./.github/actions/install-deps
- 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.58.1
shell: bash
- name: Lint
run: |
golangci-lint run -v --timeout 15m
shell: bash
gofmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Go
uses: ./.github/actions/setup-go
with:
go-version: ${{ env.GO_VERSION }}
- name: Install Dependencies
uses: ./.github/actions/install-deps
- name: Check gofmt
run: |
! go fmt ./... 2>&1 | read
shell: bash
- name: Git diff check
run: git --no-pager diff
shell: bash
- name: Git diff quiet
run: git --no-pager diff --quiet
shell: bash
cbor-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Go
uses: ./.github/actions/setup-go
with:
go-version: ${{ env.GO_VERSION }}
- name: Install Dependencies
uses: ./.github/actions/install-deps
- name: Install goimports
run: go install golang.org/x/tools/cmd/goimports
shell: bash
- name: Install cbor-gen-for
run: go install github.com/hannahhoward/cbor-gen-for
shell: bash
- name: Generate CBOR
run: make cbor-gen
shell: bash
- name: Git diff check
run: git --no-pager diff
shell: bash
- name: Git diff quiet
run: git --no-pager diff --quiet
shell: bash
docs-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Go
uses: ./.github/actions/setup-go
with:
go-version: ${{ env.GO_VERSION }}
- name: Install Dependencies
uses: ./.github/actions/install-deps
- name: Install goimports
run: go install golang.org/x/tools/cmd/goimports
shell: bash
- name: Generate Docs
run: make docsgen
shell: bash
- name: Git diff check
run: git --no-pager diff
shell: bash
- name: Git diff quiet
run: git --no-pager diff --quiet
shell: bash
gen-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Go
uses: ./.github/actions/setup-go
with:
go-version: ${{ env.GO_VERSION }}
- name: Install Dependencies
uses: ./.github/actions/install-deps
- name: Install goimports
run: go install golang.org/x/tools/cmd/goimports
shell: bash
- name: Install cbor-gen-for
run: go install github.com/hannahhoward/cbor-gen-for
shell: bash
- name: Generate Code
run: make gen
shell: bash
- name: Git diff check
run: git --no-pager diff
shell: bash
- name: Git diff quiet
run: git --no-pager diff --quiet
shell: bash
lid-docker-compose:
runs-on: ubuntu-latest
needs: [setup-cache, setup-deps]
steps:
- uses: actions/checkout@v2
- name: Setup Go
uses: ./.github/actions/setup-go
with:
go-version: ${{ env.GO_VERSION }}
- name: Install Dependencies
uses: ./.github/actions/install-deps
- name: Restore dependencies cache
uses: actions/cache@v2
with:
key: ${{ needs.setup-deps.outputs.make_deps_key }}
path: ${{ needs.setup-deps.outputs.make_deps_path }}
restore-keys: |
make-deps-
- name: Cache boostci params
uses: actions/cache@v2
with:
path: /var/tmp/filecoin-proof-parameters/
key: v25-8mb-lotus-params
- 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
- name: Run LID integration tests
run: |
set -x
make test-lid
shell: bash
mod-tidy-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Go
uses: ./.github/actions/setup-go
with:
go-version: ${{ env.GO_VERSION }}
- name: Install Dependencies
uses: ./.github/actions/install-deps
- name: Run mod tidy check
run: go mod tidy -v
shell: bash