v1.24 #4042
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: Rust | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
paths: | |
- .cargo/config.toml | |
- .github/workflows/rust.yml | |
- crates/** | |
- nextgen/** | |
- tests/** | |
- Cargo.lock | |
- Cargo.toml | |
- Makefile.toml | |
- rust-toolchain.toml | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build-wasm: | |
name: Build WASM | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: moonrepo/setup-rust@v1 | |
with: | |
bins: just,cargo-wasi | |
cache: false | |
- run: rustup target add wasm32-wasi | |
- name: Building crates | |
run: just build-wasm | |
format: | |
name: Format | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: moonrepo/setup-rust@v1 | |
with: | |
bins: just | |
cache: false | |
components: rustfmt | |
- name: Check formatting | |
run: just format-check | |
lint: | |
name: Lint | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: moonrepo/setup-rust@v1 | |
with: | |
bins: just | |
cache: false | |
components: clippy | |
- name: Run linter | |
run: just lint | |
test: | |
name: Test | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [buildjet-4vcpu-ubuntu-2204, self-hosted-laptop-macos-m1, self-hosted-laptop-windows-i7] | |
fail-fast: false | |
env: | |
# sccache | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
# RUST_LOG: trace | |
RUSTC_WRAPPER: ${{ vars.ENABLE_SCCACHE == 'true' && 'sccache' || '' }} | |
SCCACHE_BUCKET: moon-ci-sccache | |
SCCACHE_GHA_ENABLED: ${{ vars.ENABLE_SCCACHE == 'true' }} | |
# SCCACHE_LOG: debug | |
# SCCACHE_NO_DAEMON: 1 | |
SCCACHE_REGION: us-east-2 | |
SCCACHE_S3_SERVER_SIDE_ENCRYPTION: true | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: moonrepo/setup-rust@v1 | |
with: | |
bins: just, cargo-nextest, cargo-llvm-cov | |
cache: false | |
components: llvm-tools-preview | |
- uses: moonrepo/setup-toolchain@v0 | |
with: | |
auto-install: true | |
cache: ${{ runner.os == 'Linux' }} | |
proto-version: '0.34.4' # Keep in sync | |
- uses: mozilla-actions/[email protected] | |
if: ${{ vars.ENABLE_SCCACHE == 'true' }} | |
- name: Checking coverage status | |
id: coverage | |
shell: bash | |
run: echo "coverage=$WITH_COVERAGE" >> $GITHUB_OUTPUT | |
env: | |
WITH_COVERAGE: | |
${{ (github.event_name == 'pull_request' && contains(github.head_ref, 'develop-') || | |
github.event_name == 'push' && github.ref_name == 'master') && runner.os != 'Linux' }} | |
- name: Run tests | |
if: ${{ steps.coverage.outputs.coverage == 'false' }} | |
run: just test-ci | |
- name: Run tests with coverage | |
if: ${{ steps.coverage.outputs.coverage == 'true' }} | |
run: just cov | |
- name: Generate code coverage | |
if: ${{ steps.coverage.outputs.coverage == 'true' }} | |
run: just gen-report | |
- name: Upload coverage report | |
uses: actions/upload-artifact@v4 | |
if: ${{ steps.coverage.outputs.coverage == 'true' }} | |
with: | |
name: coverage-${{ runner.os }} | |
path: ./report.txt | |
if-no-files-found: error | |
coverage: | |
if: | |
${{ github.event_name == 'pull_request' && contains(github.head_ref, 'develop-') || | |
github.event_name == 'push' && github.ref_name == 'master' }} | |
name: Code coverage | |
runs-on: ubuntu-latest | |
needs: | |
- test | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v4 | |
name: Download coverage reports | |
with: | |
path: coverage | |
- uses: codecov/codecov-action@v4 | |
name: Upload to Codecov | |
with: | |
# files: ./coverage/coverage-Linux/report.txt,./coverage/coverage-macOS/report.txt,./coverage/coverage-Windows/report.txt | |
files: ./coverage/coverage-macOS/report.txt,./coverage/coverage-Windows/report.txt | |
flags: rust | |
token: ${{ secrets.CODECOV_TOKEN }} | |
verbose: true |