Skip to content

ci updates

ci updates #8

Workflow file for this run

name: Rust Jobs
on: [push]
concurrency:
# limit concurrency of entire workflow runs for a specific branch
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
NODE_VERSION: 22.1.0
BUF_VERSION: 1.42.0
jobs:
lint:
name: Lint
runs-on: ubuntu-20.04
steps:
- uses: rui314/setup-mold@v1
with:
make-default: true
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
cache: "pnpm"
- uses: arduino/setup-protoc@v3
with:
version: "25.3"
- uses: bufbuild/buf-action@v1
with:
version: ${{ env.BUF_VERSION }}
setup_only: true
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: clippy, rustfmt
cache-key: "rust-tests"
- name: Install Package Dependencies
run: make install
- name: Lint (Rustfmt)
run: cargo fmt --all -- --check
- name: Lint (Clippy)
run: cargo clippy -- -D warnings
- name: Lint (pnpm)
run: pnpm --recursive run lint
- name: Lint (Protobuf)
run: |
cd protobufs
buf format --diff --exit-code
buf lint
- name: Typecheck (pnpm)
run: pnpm --recursive typecheck
unit-tests:
name: Run Unit Tests
runs-on: ubuntu-20.04
steps:
- uses: rui314/setup-mold@v1
with:
make-default: true
- uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
cache-key: "rust-tests"
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
cache: "pnpm"
- uses: arduino/setup-protoc@v3
with:
version: "25.3"
- uses: taiki-e/install-action@v2
with:
tool: [email protected]
- name: Install Package Dependencies
run: make install
- name: Run Unit Tests
run: make test
integration-tests:
name: Run Integration Tests
runs-on: ubuntu-20.04
steps:
- uses: rui314/setup-mold@v1
with:
make-default: true
- uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
cache-key: "rust-tests"
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
cache: "pnpm"
- uses: arduino/setup-protoc@v3
with:
version: "25.3"
- uses: taiki-e/install-action@v2
with:
tool: [email protected]
- name: Install Package Dependencies
run: make install
- name: Start Integration Test Environment
run: make integration-env-up-ci
- name: Run Integration Tests
run: make integration-test
contracts:
name: Run Contract Checks
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
cache: "pnpm"
- name: Install Package Dependencies
run: pnpm install
working-directory: ./contracts
- name: Generate Contract Docs and Types
run: pnpm build
working-directory: ./contracts
- name: Ensure Git is Clean
id: gitStatus
run: git diff --no-ext-diff --exit-code
continue-on-error: true
- name: Error Message if Git is Dirty
if: steps.gitStatus.outcome == 'failure'
run: |
echo "::error::Git is dirty. Make sure you ran \`make build\` before pushing."
exit 1