Rust CI #721
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 galileo 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: "15 18 * * *" | |
pull_request: {} | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
# Job to look up the most recent tag for a stable testnet, so we can specify | |
# that tag when building. | |
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 galileo | |
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 Protoc | |
uses: arduino/setup-protoc@v3 | |
- 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 | |
# The "preview" jobs build against upstream main. | |
build-preview: | |
name: Build Preview | |
runs-on: buildjet-16vcpu-ubuntu-2004 | |
steps: | |
- name: Checkout galileo | |
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 Protoc | |
uses: arduino/setup-protoc@v3 | |
- 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 | |
check-preview: | |
name: Check Preview | |
runs-on: buildjet-8vcpu-ubuntu-2004 | |
steps: | |
- name: Checkout galileo | |
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 Protoc | |
uses: arduino/setup-protoc@v3 | |
- 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 | |
fmt: | |
name: Rustfmt | |
runs-on: buildjet-8vcpu-ubuntu-2004 | |
steps: | |
- name: Checkout galileo | |
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 |