Skip to content

Split install action into the new crate cargo-gpu-install #434

Split install action into the new crate cargo-gpu-install

Split install action into the new crate cargo-gpu-install #434

Workflow file for this run

name: push
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
env:
# For setup-rust, see https://github.com/moonrepo/setup-rust/issues/22
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
test-os:
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
runs-on: ${{ matrix.os }}
env:
RUST_LOG: debug
steps:
- uses: actions/checkout@v4
- uses: cargo-bins/cargo-binstall@main
- run: cargo binstall cargo-nextest
- run: cargo fetch --locked
- name: shader-crate-template cargo fetch --locked
run: |
cd ./crates/shader-crate-template
cargo fetch --locked
- run: cargo nextest run
- name: Run a full build
run: cargo xtask test-build
test-rust-gpu:
strategy:
fail-fast: false
matrix:
include:
# As well as testing on each OS, we also want to test to make sure we're still supporting
# older versions of `rust-gpu`. However, we can assume that these tests are already okay
# across platforms, so we only need to test on Linux, the chepeast in terms of minutes.
#
# `0.7.0` currently fails building `spirv-builder-cli` with:
# """
# package `is_terminal_polyfill v1.70.1` cannot be built because it requires rustc
# 1.70.0 or newer, while the currently active rustc version is 1.69.0-nightly
# """
# It's probably easily fixable. But also `0.7.0` was released in April 2023, so there's
# unlikely many users of it?
- rust-gpu-version: 0.8.0
glam-version: 0.24.2
- rust-gpu-version: 0.9.0
glam-version: 0.24.2
# target spec introduction
# last version before
# * fails: compiler too old, `serde` using `#[diagnostic]`
# - rust-gpu-version: cc752312c3de6813a41189e46476d5c1be5e0bbe
# glam-version: 0.30.7
# first version requiring target specs
# * fails: target spec mismatch!
# * resolution: Since this is just a few commits, I'd be fine ignoring it.
# - rust-gpu-version: 02cefd101014f66b79dffb20a2c2b5b7c9038401
# glam-version: 0.30.7
# target specs change again just a few commits later
# * fails: compiler too old, `proc-macro2` using `Literal::byte_character`.
# * resolution: want to support, can't be bothered to hack in old proc-macro2 versions
# - rust-gpu-version: bbb61f58b3d24f3f64745050eb214b90bf6dcce9
# glam-version: 0.30.7
# testing rustc 1.5 months later
- rust-gpu-version: eea8998df9dc2fd8e7a65c5b5b7ae20c238a665a
glam-version: 0.29.3
# just after target specs v2 refactor, we updated to rustc 1.85 and needed to change them again
# before
- rust-gpu-version: a547c6e45266d613d9fec673e869d7a96181e47b
glam-version: =0.30.7
# after
- rust-gpu-version: 2326b87fe1542eeb898065e36ac949307b55386d
glam-version: =0.30.7
# glam semver breakage due to vector type refactor
# before, glam was fixed to <=0.30.7 in this commit
- rust-gpu-version: f79c4181a5dc2d37303947b113f190930c6c1ce6
glam-version: =0.30.7
# after, glam >0.30.8
- rust-gpu-version: e767f24f2565baf1a71bbaf84d453d181cab2417
runs-on: ubuntu-latest
env:
RUST_LOG: debug
steps:
- uses: actions/checkout@v4
- if: ${{ matrix.glam-version }}
name: set glam version
run: cargo xtask set-dependency glam ${{ matrix.glam-version }}
- name: Run a full build
run: cargo xtask test-build --rust-gpu-version ${{ matrix.rust-gpu-version }}
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: cargo-bins/cargo-binstall@main
- run: cargo binstall cargo-shear
- run: cargo fetch --locked
- run: cargo clippy -- --deny warnings
- run: cargo fmt --check
- run: cargo shear
# This allows us to have a single job we can branch protect on, rather than needing
# to update the branch protection rules when the test matrix changes
test_success:
runs-on: ubuntu-24.04
needs: [test-os, test-rust-gpu, lint]
# Hack for buggy GitHub Actions behavior with skipped checks: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks#handling-skipped-but-required-checks
if: ${{ always() }}
steps:
# Another hack is to actually check the status of the dependencies or else it'll fall through
- run: |
echo "Checking statuses..."
[[ "${{ needs.test-os.result }}" == "success" ]] || exit 1
[[ "${{ needs.test-rust-gpu.result }}" == "success" ]] || exit 1
[[ "${{ needs.lint.result }}" == "success" ]] || exit 1
defaults:
run:
shell: bash