Skip to content

ci: optimize ci setup #10222

ci: optimize ci setup

ci: optimize ci setup #10222

Workflow file for this run

name: Continuous Integration
on:
push:
branches: [master]
pull_request:
branches: [master]
permissions:
contents: read
concurrency:
cancel-in-progress: true
group: ${{ github.workflow }}-${{ github.ref }}
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: full
RUSTFLAGS: "-C link-arg=-fuse-ld=lld -D warnings"
THEGRAPH_STORE_POSTGRES_DIESEL_URL: "postgresql://graph:graph@localhost:5432/graph-test"
jobs:
unit-tests:
name: Run unit tests
runs-on: nscloud-ubuntu-22.04-amd64-16x32
timeout-minutes: 20
services:
ipfs:
image: ipfs/go-ipfs:v0.10.0
ports:
- 5001:5001
postgres:
image: bitnami/postgresql
env:
POSTGRESQL_PASSWORD: graph
POSTGRESQL_USERNAME: graph
POSTGRESQL_DB: graph-test
POSTGRESQL_INITDB_ARGS: "-E UTF8 --locale=C"
POSTGRESQL_MAX_CONNECTIONS: 500
POSTGRESQL_REPLICATION_USE_PASSFILE: no
options: >-
--health-cmd "pg_isready -U graph"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4
- name: Setup dependencies
run: |
sudo apt-get update
sudo apt-get install -y lld protobuf-compiler
- uses: actions-rust-lang/setup-rust-toolchain@fb51252c7ba57d633bc668f941da052e410add48 # v1
- name: Setup just
uses: extractions/setup-just@e33e0265a09d6d736e2ee1e0eb685ef1de4669ff # v3
- name: Install cargo-nextest
uses: baptiste0928/cargo-install@e38323ef017552d7f7af73a3f4db467f278310ed # v3
with:
crate: cargo-nextest
version: ^0.9
- name: Run unit tests
run: just test-unit --verbose
runner-tests:
name: Subgraph Runner integration tests
runs-on: nscloud-ubuntu-22.04-amd64-16x32
timeout-minutes: 20
services:
ipfs:
image: ipfs/go-ipfs:v0.10.0
ports:
- 5001:5001
postgres:
image: bitnami/postgresql
env:
POSTGRESQL_PASSWORD: graph
POSTGRESQL_USERNAME: graph
POSTGRESQL_DB: graph-test
POSTGRESQL_INITDB_ARGS: "-E UTF8 --locale=C"
POSTGRESQL_MAX_CONNECTIONS: 500
POSTGRESQL_REPLICATION_USE_PASSFILE: no
options: >-
--health-cmd "pg_isready -U graph"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4
- name: Setup dependencies
run: |
sudo apt-get update
sudo apt-get install -y lld protobuf-compiler
- uses: actions-rust-lang/setup-rust-toolchain@fb51252c7ba57d633bc668f941da052e410add48 # v1
- name: Setup just
uses: extractions/setup-just@e33e0265a09d6d736e2ee1e0eb685ef1de4669ff # v3
- name: Install cargo-nextest
uses: baptiste0928/cargo-install@e38323ef017552d7f7af73a3f4db467f278310ed # v3
with:
crate: cargo-nextest
version: ^0.9
- name: Install pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4
- name: Install Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 20
cache: pnpm
- name: Install Node.js dependencies
run: pnpm install
- name: Run runner tests
run: just test-runner --verbose
integration-tests:
name: Run integration tests
runs-on: nscloud-ubuntu-22.04-amd64-16x32
timeout-minutes: 20
services:
ipfs:
image: ipfs/go-ipfs:v0.10.0
ports:
- 3001:5001
postgres:
image: bitnami/postgresql
env:
POSTGRESQL_PASSWORD: let-me-in
POSTGRESQL_USERNAME: graph-node
POSTGRESQL_DB: graph-node
POSTGRESQL_INITDB_ARGS: "-E UTF8 --locale=C"
POSTGRESQL_MAX_CONNECTIONS: 500
POSTGRESQL_REPLICATION_USE_PASSFILE: no
options: >-
--health-cmd "pg_isready -U graph-node"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 3011:5432
steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4
- name: Setup dependencies
run: |
sudo apt-get update
sudo apt-get install -y lld protobuf-compiler
- uses: actions-rust-lang/setup-rust-toolchain@fb51252c7ba57d633bc668f941da052e410add48 # v1
- name: Setup just
uses: extractions/setup-just@e33e0265a09d6d736e2ee1e0eb685ef1de4669ff # v3
- name: Install cargo-nextest
uses: baptiste0928/cargo-install@e38323ef017552d7f7af73a3f4db467f278310ed # v3
with:
crate: cargo-nextest
version: ^0.9
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@82dee4ba654bd2146511f85f0d013af94670c4de # v1
with:
# Pinned to specific version since newer versions do not produce
# deterministic block hashes. Unpin once that's fixed upstream
version: v1.2.3
- name: Install pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4
- name: Install Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 20
cache: pnpm
- name: Install Node.js dependencies
run: pnpm install
- name: Start anvil
run: anvil --gas-limit 100000000000 --base-fee 1 --block-time 2 --timestamp 1743944919 --port 3021 &
- name: Build graph-node
run: just build --test integration_tests
- name: Run integration tests
run: just test-integration --verbose
- name: Cat graph-node.log
if: always()
run: cat tests/integration-tests/graph-node.log || echo "No graph-node.log"
rustfmt:
name: Check rustfmt style
runs-on: ubuntu-latest
timeout-minutes: 10
env:
RUSTFLAGS: "-D warnings"
steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4
- uses: actions-rust-lang/setup-rust-toolchain@fb51252c7ba57d633bc668f941da052e410add48 # v1
- name: Setup just
uses: extractions/setup-just@e33e0265a09d6d736e2ee1e0eb685ef1de4669ff # v3
- name: Check formatting
run: just format --check
release-check:
name: Build in release mode
runs-on: ubuntu-latest
timeout-minutes: 60
env:
RUSTFLAGS: "-D warnings"
steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4
- name: Setup dependencies
run: |
sudo apt-get update
sudo apt-get install -y protobuf-compiler
- uses: actions-rust-lang/setup-rust-toolchain@fb51252c7ba57d633bc668f941da052e410add48 # v1
- name: Setup just
uses: extractions/setup-just@e33e0265a09d6d736e2ee1e0eb685ef1de4669ff # v3
- name: Cargo check (release)
run: just check --release