Skip to content

chore: switch to Github Actions #14

chore: switch to Github Actions

chore: switch to Github Actions #14

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
env:
GO_VERSION: 1.22.3
jobs:
setup-params:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- 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@v4
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
outputs:
make_deps_key: ${{ steps.make_deps.outputs.key }}
make_deps_path: ${{ steps.make_deps.outputs.path }}
steps:
- uses: actions/checkout@v4
- 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@v4
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 project dependencies
make deps
shell: bash
- name: Save dependencies to cache
if: steps.restore_make_deps.outputs.cache-hit != 'true'
uses: actions/cache@v4
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@v4
- 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@v4
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
test:
runs-on: ubuntu-latest
needs: [setup-params, 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@v4
- 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@v4
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@v4
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
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- 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@v4
- 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@v4
- 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@v4
- 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@v4
- 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-params, setup-deps]
steps:
- uses: actions/checkout@v4
- 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
uses: actions/cache@v4
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@v4
- 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