Auto merge of https://github.com/ScuffleCloud/scuffle/pull/240 - lenn… #185
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: ci | |
on: | |
push: | |
branches: | |
- automation/brawl/try/* | |
- automation/brawl/merge/* | |
pull_request: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
RUST_TOOLCHAIN: nightly | |
jobs: | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup nasm | |
run: | | |
sudo apt-get install nasm | |
- uses: dtolnay/rust-toolchain@stable | |
id: setup-rust | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN }} | |
components: clippy | |
- uses: Swatinem/rust-cache@v2 | |
id: cache-rust | |
with: | |
prefix-key: "v0-rust-${{ steps.setup-rust.outputs.cachekey }}" | |
shared-key: clippy | |
- name: Make sure code is linted | |
run: cargo +${{ env.RUST_TOOLCHAIN }} clippy | |
fmt: | |
name: Fmt | |
runs-on: ubuntu-24.04 | |
permissions: | |
checks: write | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
id: setup-rust | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN }} | |
components: rustfmt | |
- name: Make sure code is formatted | |
run: cargo +${{ env.RUST_TOOLCHAIN }} fmt --check | |
hakari: | |
name: Hakari | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
id: setup-rust | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN }} | |
- uses: taiki-e/install-action@v2 | |
with: | |
tool: cargo-hakari | |
- name: Make sure Hakari is up-to-date | |
run: | | |
set -xeo pipefail | |
cargo +${{ env.RUST_TOOLCHAIN }} hakari manage-deps --dry-run | |
cargo +${{ env.RUST_TOOLCHAIN }} hakari generate --diff | |
cargo +${{ env.RUST_TOOLCHAIN }} hakari verify | |
test: | |
name: Test | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup nasm | |
run: | | |
sudo apt-get install nasm | |
- uses: dtolnay/rust-toolchain@stable | |
id: setup-rust | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN }} | |
components: llvm-tools-preview | |
- name: Install ffmpeg | |
run: | | |
set -xeo pipefail | |
curl -L https://sourceforge.net/projects/avbuild/files/linux/ffmpeg-7.1-linux-clang-default.tar.xz/download -o ffmpeg.tar.xz | |
tar -xvf ffmpeg.tar.xz | |
sudo mv ffmpeg-7.1-linux-clang-default/include/* /usr/include | |
sudo mv ffmpeg-7.1-linux-clang-default/lib/amd64/* /usr/local/lib | |
sudo mv ffmpeg-7.1-linux-clang-default/bin/amd64/* /usr/local/bin | |
sudo rm -rf ffmpeg-7.1-linux-clang-default | |
sudo rm -rf ffmpeg.tar.xz | |
sudo ldconfig | |
- name: Install ffmpeg dependencies | |
run: | | |
sudo apt-get install -y --no-install-recommends libdrm2 libxcb1 libasound2t64 libxv1 libc++1 libvdpau1 libva2 | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
prefix-key: "v0-rust-${{ steps.setup-rust.outputs.cachekey }}" | |
shared-key: test | |
- uses: taiki-e/install-action@v2 | |
with: | |
tool: cargo-nextest,cargo-llvm-cov | |
# Note; we don't run the powerset here because it's very slow on CI | |
# Perhaps we should consider it at some point. | |
# | |
# Coverage for doctests is currently broken in llvm-cov. | |
# Once it fully works we can add the `--doctests` flag to the test and report command again. | |
- name: Run tests | |
run: | | |
cargo +${{ env.RUST_TOOLCHAIN }} llvm-cov nextest --no-fail-fast --all-features --profile ci --no-report | |
cargo +${{ env.RUST_TOOLCHAIN }} llvm-cov test --all-features --doc --no-report | |
cargo +${{ env.RUST_TOOLCHAIN }} llvm-cov report --lcov --output-path ./lcov.info | |
- name: Codecov Override | |
if: ${{ startsWith(github.ref, 'refs/heads/automation/brawl/try/') }} | |
run: | | |
PR_NUMBER=$(echo ${{ github.ref }} | sed -n 's/^refs\/heads\/automation\/brawl\/try\/\([0-9]*\)$/\1/p') | |
echo "PR_NUMBER=$PR_NUMBER" >> $GITHUB_ENV | |
RUN_COMMIT_SHA=$(git log -1 --pretty=format:%H) | |
echo "RUN_COMMIT_SHA=$RUN_COMMIT_SHA" >> $GITHUB_ENV | |
- uses: codecov/codecov-action@v5 | |
with: | |
fail_ci_if_error: true | |
files: ./lcov.info | |
token: ${{ secrets.CODECOV_TOKEN }} | |
override_pr: ${{ env.PR_NUMBER || github.event.pull_request.number || '' }} | |
override_commit: ${{ env.RUN_COMMIT_SHA || github.sha }} | |
verbose: true | |
- name: Upload test results to Codecov | |
if: ${{ !cancelled() }} | |
uses: codecov/test-results-action@v1 | |
with: | |
files: ./target/nextest/ci/junit.xml | |
override_pr: ${{ env.PR_NUMBER || github.event.pull_request.number || '' }} | |
override_commit: ${{ env.RUN_COMMIT_SHA || github.sha }} | |
token: ${{ secrets.CODECOV_TOKEN }} | |
brawl-done: | |
runs-on: ubuntu-24.04 | |
needs: [hakari, test, clippy, fmt] | |
if: ${{ !cancelled() && github.event_name == 'push' }} | |
steps: | |
- name: calculate the correct exit status | |
run: jq --exit-status 'all(.result == "success" or .result == "skipped")' <<< '${{ toJson(needs) }}' |