Rust CI #321
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: Rust CI | |
on: | |
workflow_call: | |
workflow_dispatch: | |
# Run periodically to check for breakage, since we seldom update the osiris repo. | |
# This allows us to determine approximately when a breaking change was merged into | |
# the penumbra repo, so we can fix it ahead of a testnet release. | |
schedule: | |
- cron: "25 18 * * *" | |
pull_request: {} | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
lookup-testnet: | |
name: Look up testnet | |
runs-on: ubuntu-latest | |
outputs: | |
testnet_tag: ${{ steps.testnet_tag.outputs.testnet_tag }} | |
steps: | |
- id: testnet_tag | |
run: >- | |
printf "testnet_tag=%s" "$(curl -sSfL https://api.github.com/repos/penumbra-zone/penumbra/releases/latest | jq -r .tag_name)" | |
>> "$GITHUB_OUTPUT" | |
# Let's make sure we can still build against the currently active stable testnet. | |
check-testnet: | |
name: Check Testnet | |
runs-on: buildjet-8vcpu-ubuntu-2004 | |
needs: lookup-testnet | |
steps: | |
- name: Checkout osiris | |
uses: actions/checkout@v4 | |
- name: Check out penumbra repo | |
uses: actions/checkout@v4 | |
with: | |
repository: penumbra-zone/penumbra | |
path: penumbra-repo | |
lfs: true | |
ref: ${{needs.lookup-testnet.outputs.testnet_tag}} | |
- name: Move penumbra repo to relative path | |
run: mv penumbra-repo ../penumbra | |
- name: Install rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: Configure rust cache | |
uses: Swatinem/rust-cache@v2 | |
- name: Run cargo check | |
run: cargo check --release | |
build-preview: | |
name: Build Preview | |
runs-on: buildjet-16vcpu-ubuntu-2004 | |
steps: | |
- name: Checkout osiris | |
uses: actions/checkout@v4 | |
- name: Check out penumbra repo | |
uses: actions/checkout@v4 | |
with: | |
repository: penumbra-zone/penumbra | |
path: penumbra-repo | |
lfs: true | |
ref: main | |
- name: Move penumbra repo to relative path | |
run: mv penumbra-repo ../penumbra | |
- name: Install rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: Configure rust cache | |
uses: Swatinem/rust-cache@v2 | |
- name: Run cargo build release | |
run: cargo build --release | |
env: | |
# The `-D warnings` option causes an error on warnings; | |
# we must duplicate the rustflags from penumbra repo's `.cargo/config.toml`. | |
RUSTFLAGS: "-D warnings --cfg tokio_unstable" | |
fmt: | |
name: Rustfmt | |
runs-on: buildjet-8vcpu-ubuntu-2004 | |
steps: | |
- name: Checkout osiris | |
uses: actions/checkout@v4 | |
# N.B. `cargo fmt` does not require relpath dependencies to be present, | |
# so we don't need to clone the penumbra repo here. | |
- name: Install rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: Configure rust cache | |
uses: Swatinem/rust-cache@v2 | |
- name: Run cargo fmt | |
run: cargo fmt --all -- --check |