Filipe/substreams triggers #6622
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: Continuous Integration | |
on: | |
push: | |
branches: [master] | |
pull_request: | |
types: [opened, synchronize, reopened] | |
env: | |
CARGO_TERM_COLOR: always | |
RUST_BACKTRACE: full | |
THEGRAPH_STORE_POSTGRES_DIESEL_URL: "postgresql://postgres:postgres@localhost:5432/graph_node_test" | |
jobs: | |
unit-tests: | |
name: Run unit tests | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
services: | |
ipfs: | |
image: ipfs/go-ipfs:v0.10.0 | |
ports: | |
- 5001:5001 | |
postgres: | |
image: postgres | |
env: | |
POSTGRES_PASSWORD: postgres | |
POSTGRES_DB: graph_node_test | |
POSTGRES_INITDB_ARGS: "-E UTF8 --locale=C" | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
ports: | |
- 5432:5432 | |
env: | |
RUSTFLAGS: "-C link-arg=-fuse-ld=lld -D warnings" | |
steps: | |
- name: Tune GitHub hosted runner to reduce flakiness | |
# https://github.com/smorimoto/tune-github-hosted-runner-network/blob/main/action.yml | |
run: sudo ethtool -K eth0 tx off rx off | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
- uses: Swatinem/rust-cache@v2 | |
- name: Install lld | |
run: sudo apt-get install -y lld protobuf-compiler | |
- name: Run unit tests | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: --verbose --workspace --exclude graph-tests -- --nocapture | |
runner-tests: | |
name: Subgraph Runner integration tests | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
services: | |
ipfs: | |
image: ipfs/go-ipfs:v0.10.0 | |
ports: | |
- 5001:5001 | |
postgres: | |
image: bitnami/postgresql | |
env: | |
POSTGRES_PASSWORD: postgres | |
POSTGRES_DB: graph_node_test | |
POSTGRES_INITDB_ARGS: "-E UTF8 --locale=C" | |
POSTGRESQL_EXTRA_FLAGS: "-c max_connections=1000" | |
options: >- | |
--health-cmd "pg_isready -U postgres" | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 10 | |
ports: | |
- 5432:5432 | |
env: | |
RUSTFLAGS: "-C link-arg=-fuse-ld=lld -D warnings" | |
steps: | |
- name: Tune GitHub hosted runner to reduce flakiness | |
# https://github.com/smorimoto/tune-github-hosted-runner-network/blob/main/action.yml | |
run: sudo ethtool -K eth0 tx off rx off | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
- uses: Swatinem/rust-cache@v2 | |
- name: Install lld | |
run: sudo apt-get install -y lld protobuf-compiler | |
- name: Run runner tests | |
id: runner-tests-1 | |
uses: actions-rs/cargo@v1 | |
env: | |
TESTS_GANACHE_HARD_WAIT_SECONDS: "60" | |
with: | |
command: test | |
args: --verbose --package graph-tests -- --skip parallel_integration_tests | |
integration-tests: | |
name: Run integration tests | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
env: | |
RUSTFLAGS: "-C link-arg=-fuse-ld=lld -D warnings" | |
steps: | |
- name: Tune GitHub hosted runner to reduce flakiness | |
# https://github.com/smorimoto/tune-github-hosted-runner-network/blob/main/action.yml | |
run: sudo ethtool -K eth0 tx off rx off | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
- uses: Swatinem/rust-cache@v2 | |
- name: Install Node 16 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: "16" | |
cache: yarn | |
cache-dependency-path: "tests/integration-tests/yarn.lock" | |
- name: Install lld and jq | |
run: sudo apt-get install -y lld jq protobuf-compiler | |
- name: Build graph-node | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --bin graph-node | |
# Integration tests are a bit flaky, running them twice increases the | |
# chances of one run succeeding. | |
- name: Run integration tests (round 1) | |
id: integration-tests-1 | |
uses: actions-rs/cargo@v1 | |
env: | |
N_CONCURRENT_TESTS: "4" | |
TESTS_GANACHE_HARD_WAIT_SECONDS: "30" | |
# Reduce how long a batch will stick around to avoid timeouts | |
GRAPH_STORE_WRITE_BATCH_DURATION: 30 | |
with: | |
command: test | |
args: --verbose --package graph-tests parallel_integration_tests -- --nocapture | |
continue-on-error: true | |
- name: Run integration tests (round 2) | |
id: integration-tests-2 | |
uses: actions-rs/cargo@v1 | |
if: ${{ steps.integration-tests-1.outcome == 'failure' }} | |
env: | |
N_CONCURRENT_TESTS: "4" | |
TESTS_GANACHE_HARD_WAIT_SECONDS: "30" | |
# Reduce how long a batch will stick around to avoid timeouts | |
GRAPH_STORE_WRITE_BATCH_DURATION: 30 | |
with: | |
command: test | |
args: --verbose --package graph-tests parallel_integration_tests -- --nocapture | |
rustfmt: | |
name: Check rustfmt style | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
env: | |
RUSTFLAGS: "-D warnings" | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Check formatting | |
uses: actions-rs/cargo@v1 | |
with: | |
command: fmt | |
args: --all -- --check | |
clippy: | |
name: Clippy linting | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
steps: | |
- uses: actions/checkout@v2 | |
# Unlike rustfmt, Clippy actually compiles stuff so it benefits from | |
# caching. | |
- uses: Swatinem/rust-cache@v2 | |
- name: Install deps | |
run: sudo apt-get install -y protobuf-compiler | |
- name: Run Clippy | |
uses: actions-rs/cargo@v1 | |
with: | |
command: check-clippy | |
release-check: | |
name: Build in release mode | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
env: | |
RUSTFLAGS: "-D warnings" | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: Swatinem/rust-cache@v2 | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get -y install libpq-dev protobuf-compiler | |
- name: Cargo check (release) | |
uses: actions-rs/cargo@v1 | |
with: | |
command: check | |
args: --release |