feat: add github action #4
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 }}-${{ matrix.test-suite.name }} | |
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 with random ports | |
id: start-db | |
run: | | |
# Run YugabyteDB container with random ports for 5433 (Postgres) and 9042 (YCQL) | |
docker run --rm --name ${{ env.CONTAINER_NAME }} -d \ | |
-p 0:5433 -p 0:9042 \ | |
yugabytedb/yugabyte:2024.1.2.0-b77 bin/yugabyted start --daemon=false | |
shell: bash | |
- name: Get the random port bindings | |
id: get-ports | |
run: | | |
# Extract the dynamically assigned ports | |
POSTGRES_PORT=$(docker inspect ${{ env.CONTAINER_NAME }} --format='{{ (index (index .NetworkSettings.Ports "5433/tcp") 0).HostPort }}') | |
YCQL_PORT=$(docker inspect ${{ env.CONTAINER_NAME }} --format='{{ (index (index .NetworkSettings.Ports "9042/tcp") 0).HostPort }}') | |
echo "Postgres is mapped to port: $POSTGRES_PORT" | |
echo "YCQL is mapped to port: $YCQL_PORT" | |
# Use the new syntax to set output | |
echo "postgres_port=$POSTGRES_PORT" >> $GITHUB_OUTPUT | |
echo "ycql_port=$YCQL_PORT" >> $GITHUB_OUTPUT | |
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: | | |
# Use the dynamically assigned ports for the tests | |
POSTGRES_PORT=${{ steps.get-ports.outputs.postgres_port }} | |
YCQL_PORT=${{ steps.get-ports.outputs.ycql_port }} | |
echo "Using Postgres Port: $POSTGRES_PORT" | |
echo "Using YCQL Port: $YCQL_PORT" | |
# Pass these port numbers to the test environment or test runner | |
export YB_POSTGRES_PORT=$POSTGRES_PORT | |
export YB_YCQL_PORT=$YCQL_PORT | |
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 | |
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 |