feat: add github action #1
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
env: | |
GO_VERSION: 1.22.3 | |
jobs: | |
ci-lint: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup Go | |
uses: ./.github/actions/setup-go | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
- name: Install actionlint | |
run: go install github.com/rhysd/actionlint/cmd/actionlint@latest | |
- name: Run actionlint | |
run: actionlint -shellcheck= -pyflakes= | |
setup-params: | |
runs-on: [self-hosted, docker] | |
needs: [ci-lint] | |
steps: | |
- name: Fetch parameters | |
run: lotus fetch-params 8388608 | |
shell: bash | |
build-mainnet: | |
runs-on: ubuntu-latest | |
needs: [ci-lint] | |
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 FFI | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
run: | | |
make deps | |
shell: bash | |
- name: Build Go | |
run: make build | |
shell: bash | |
build-calibnet: | |
runs-on: ubuntu-latest | |
needs: [ ci-lint ] | |
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 FFI | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
run: | | |
make deps | |
shell: bash | |
- name: Build Go | |
run: make build | |
shell: bash | |
build-debug: | |
runs-on: ubuntu-latest | |
needs: [ ci-lint ] | |
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 FFI | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
run: | | |
make deps | |
shell: bash | |
- name: Build Go | |
run: make build | |
shell: bash | |
build-2k: | |
runs-on: ubuntu-latest | |
needs: [ ci-lint ] | |
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 FFI | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
run: | | |
make deps | |
shell: bash | |
- name: Build Go | |
run: make build | |
shell: bash | |
build-forest: | |
runs-on: ubuntu-latest | |
needs: [ ci-lint ] | |
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 FFI | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
run: | | |
make deps | |
shell: bash | |
- name: Build Forest | |
run: make forest-test | |
shell: bash | |
test: | |
runs-on: [self-hosted, docker] | |
needs: [setup-params] | |
env: | |
CONTAINER_NAME: yugabyte-${{ github.run_id }} | |
strategy: | |
matrix: | |
test-suite: | |
- name: test-itest-curio | |
target: "./itests/curio_test.go" | |
- name: test-all | |
target: "`go list ./... | grep -v curio/itests`" | |
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 FFI | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
run: | | |
make deps | |
shell: bash | |
- name: Start YugabyteDB | |
run: docker run --rm --name ${{ env.CONTAINER_NAME }} -d -p 5433:5433 yugabytedb/yugabyte:2024.1.2.0-b77 bin/yugabyted start --daemon=false | |
shell: bash | |
- run: | | |
while true; do | |
status=$(docker exec ${{ env.CONTAINER_NAME }} bin/yugabyted status); | |
echo $status; | |
echo $status | grep Running && break; | |
sleep 1; | |
done | |
shell: bash | |
- name: Run tests | |
run: | | |
go test -v --tags=debug -timeout 30m ${{ matrix.test-suite.target }} | |
shell: bash | |
- name: Clean up YugabyteDB | |
if: always() | |
run: docker stop ${{ env.CONTAINER_NAME }} | |
shell: bash | |
lint: | |
runs-on: ubuntu-latest | |
needs: [ci-lint] | |
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 FFI | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
run: | | |
make deps | |
shell: bash | |
- 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 --concurrency 4 | |
shell: bash | |
gofmt: | |
runs-on: ubuntu-latest | |
needs: [ci-lint] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Go | |
uses: ./.github/actions/setup-go | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
- name: Check gofmt | |
run: | | |
go fmt ./... | |
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 | |
needs: [ci-lint] | |
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: [self-hosted, docker] | |
needs: [setup-params] | |
env: | |
CONTAINER_NAME: yugabyte-${{ github.run_id }} | |
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: Start YugabyteDB | |
run: docker run --rm --name ${{ env.CONTAINER_NAME }} -d -p 5433:5433 yugabytedb/yugabyte:2.21.1.0-b271 bin/yugabyted start --daemon=false | |
shell: bash | |
- run: | | |
while true; do | |
status=$(docker exec ${{ env.CONTAINER_NAME }} bin/yugabyted status); | |
echo $status; | |
echo $status | grep Running && break; | |
sleep 1; | |
done | |
shell: bash | |
- run: | | |
cd extern/boostd-data | |
go test -v ./... | |
- name: Clean up YugabyteDB | |
if: always() | |
run: docker stop ${{ env.CONTAINER_NAME }} | |
shell: bash | |
mod-tidy-check: | |
runs-on: ubuntu-latest | |
needs: [ci-lint] | |
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 |