* ci: run substream checks only on changed substream modules * ci: move substream package extraction code to a composite action
114 lines
3.7 KiB
YAML
114 lines
3.7 KiB
YAML
name: Substreams CI
|
|
|
|
on:
|
|
pull_request:
|
|
|
|
jobs:
|
|
lint:
|
|
name: Substreams Lint
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 30
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Check if any Substreams files changed
|
|
id: substreams-files-changed
|
|
uses: tj-actions/changed-files@v35
|
|
with:
|
|
files: substreams/**
|
|
|
|
- name: Setup toolchain
|
|
if: steps.substreams-files-changed.outputs.any_changed == 'true'
|
|
uses: dtolnay/rust-toolchain@v1
|
|
with:
|
|
toolchain: nightly
|
|
components: clippy, rustfmt
|
|
|
|
- name: Setup Rust Cache
|
|
if: steps.substreams-files-changed.outputs.any_changed == 'true'
|
|
uses: Swatinem/rust-cache@v2
|
|
with:
|
|
cache-on-failure: true
|
|
|
|
- name: Get changed Substreams package names
|
|
if: steps.substreams-files-changed.outputs.any_changed == 'true'
|
|
id: changed_packages
|
|
uses: ./.github/actions/substreams-check
|
|
with:
|
|
changed-files: ${{ steps.substreams-files-changed.outputs.all_changed_files }}
|
|
|
|
- name: Run checks
|
|
if: steps.substreams-files-changed.outputs.any_changed == 'true'
|
|
shell: bash
|
|
run: |
|
|
cd substreams
|
|
if [ -n "${{ steps.changed_packages.outputs.package_names }}" ]; then
|
|
for package in ${{ steps.changed_packages.outputs.package_names }}; do
|
|
echo "Running checks for package: $package"
|
|
cargo +nightly fmt --package "$package" -- --check
|
|
cargo +nightly clippy --package "$package" -- -D warnings
|
|
done
|
|
else
|
|
echo "No packages to check"
|
|
fi
|
|
|
|
- name: Skip check
|
|
if: steps.substreams-files-changed.outputs.any_changed != 'true'
|
|
run: echo "No changes to substreams directory, skipping lint check"
|
|
|
|
test:
|
|
name: Substreams Test
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 30
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Check if any Substreams files changed
|
|
id: substreams-files-changed
|
|
uses: tj-actions/changed-files@v35
|
|
with:
|
|
files: substreams/**
|
|
|
|
- name: Setup toolchain
|
|
if: steps.substreams-files-changed.outputs.any_changed == 'true'
|
|
uses: dtolnay/rust-toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
targets: wasm32-unknown-unknown
|
|
|
|
- name: Setup Rust Cache
|
|
if: steps.substreams-files-changed.outputs.any_changed == 'true'
|
|
uses: Swatinem/rust-cache@v2
|
|
with:
|
|
cache-on-failure: true
|
|
|
|
- name: Get changed Substreams package names
|
|
if: steps.substreams-files-changed.outputs.any_changed == 'true'
|
|
id: changed_packages
|
|
uses: ./.github/actions/substreams-check
|
|
with:
|
|
changed-files: ${{ steps.substreams-files-changed.outputs.all_changed_files }}
|
|
|
|
- name: Run checks
|
|
if: steps.substreams-files-changed.outputs.any_changed == 'true'
|
|
shell: bash
|
|
run: |
|
|
cd substreams
|
|
if [ -n "${{ steps.changed_packages.outputs.package_names }}" ]; then
|
|
for package in ${{ steps.changed_packages.outputs.package_names }}; do
|
|
echo "Running checks for package: $package"
|
|
cargo build --package "$package" --target wasm32-unknown-unknown
|
|
cargo test --package "$package"
|
|
done
|
|
else
|
|
echo "No packages to check"
|
|
fi
|
|
|
|
- name: Skip check
|
|
if: steps.substreams-files-changed.outputs.any_changed != 'true'
|
|
run: echo "No changes to substreams directory, skipping test check"
|