Skip to content

feat: add github action #1

feat: add github action

feat: add github action #1

Workflow file for this run

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