Compare commits

...

19 Commits

Author SHA1 Message Date
J / Jacob Babich
4c04f21dcb ci: string quote the paths because starting with * was trying to reference a YAML alias
Some checks are pending
Release-plz / Release-plz (push) Waiting to run
2024-10-04 22:05:31 -04:00
J / Jacob Babich
c0ec64f06c ci: prevent irrelevant file changes from triggering the check, build, and test workflow 2024-10-04 19:22:16 -04:00
J / Jacob Babich
70e20e2e04 ci: remove requirement to build for aarch64-pc-windows-gnullvm until I can understand how to do it in GitHub Actions 2024-10-04 18:52:08 -04:00
J / Jacob Babich
12107daf6b ci: install Nextest for the test job (because I accidentally deleted it) 2024-10-04 18:09:10 -04:00
J / Jacob Babich
839f219469 ci: turn fail-fast back on 2024-10-04 18:07:24 -04:00
J / Jacob Babich
56ad1de3d4 ci: phrasing change from "direct minimal dependencies" to "minimal direct dependencies" 2024-10-04 18:06:50 -04:00
J / Jacob Babich
30dee5efa7 ci: lower all job timeouts because they shouldn't reasonably take that long and I would like it to be raised as a problem with my project if it ever starts exceeding the time specified 2024-10-04 18:06:02 -04:00
J / Jacob Babich
52297c7b43 ci: split testing off from checking and building 2024-10-04 18:04:31 -04:00
J / Jacob Babich
b1520ae76b ci: specify prerequisite_install for aarch64 linux like I meant to (whereas it was on x86_64-unknown-linux-gnu before) 2024-10-04 17:55:18 -04:00
J / Jacob Babich
ac42b4861c ci: use sudo for prerequisite installation 2024-10-04 17:53:04 -04:00
J / Jacob Babich
499562853c ci: write a cleaner name for the check / build / test job 2024-10-04 17:51:50 -04:00
J / Jacob Babich
d6922c30c5 ci: specify CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER too 2024-10-04 17:50:15 -04:00
J / Jacob Babich
b5935b8ab5 ci: try having prerequisite installation step where needed 2024-10-04 17:49:19 -04:00
J / Jacob Babich
5e0a2326ca ci: try working around https://github.com/rust-lang/cargo/issues/4133 2024-10-04 17:25:06 -04:00
J / Jacob Babich
1493425540 ci: I must've hallucinated aarch64-pc-windows-gnu because it seems to actually be aarch64-pc-windows-gnullvm 2024-10-04 17:12:46 -04:00
J / Jacob Babich
576a8e99c0 ci: rewrite step for installing Rust to specify the toolchain as an argument rather than - where it seems to be invalid when using a variable - the uses: revision 2024-10-04 17:10:03 -04:00
J / Jacob Babich
01ce1e85a8 ci: it seems aarch64-pc-windows-gnu requires a nightly toolchain for now 2024-10-04 17:06:35 -04:00
J / Jacob Babich
cd788e1ab8 ci: split checking formatting off into its own job that only needs to run once 2024-10-04 17:01:45 -04:00
J / Jacob Babich
65487b2378 ci: see if this basic matrix of build targets and runners works for checking, building, and testing 2024-10-04 16:59:08 -04:00

View File

@@ -3,6 +3,14 @@ name: Check, build, and test
on: on:
push: push:
branches: ["main"] branches: ["main"]
# This workflow is definitely expensive for GitHub,
# so let's not let files that won't affect the project's ability to build and test trigger it
paths-ignore:
- ".github/**"
- "**/.gitignore"
- "**/CHANGELOG.md"
- "**/README.md"
- "**/LICENSE-*"
pull_request: pull_request:
branches: ["main"] branches: ["main"]
@@ -10,35 +18,143 @@ env:
CARGO_TERM_COLOR: always CARGO_TERM_COLOR: always
jobs: jobs:
check-build-and-test: formatting:
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 15 timeout-minutes: 2
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Install Rust toolchain - name: Install stable Rust toolchain
uses: dtolnay/rust-toolchain@stable uses: dtolnay/rust-toolchain@stable
- name: Formatting
run: cargo fmt --check --verbose
check-and-build:
strategy:
matrix:
supporteds:
- runner: macos-latest
target: aarch64-apple-darwin
- runner: macos-latest
target: x86_64-apple-darwin
- install_prerequisite: sudo apt-get update && sudo apt-get install gcc-aarch64-linux-gnu
runner: ubuntu-latest
target: aarch64-unknown-linux-gnu
- install_prerequisite: sudo apt-get update && sudo apt-get install gcc-aarch64-linux-gnu
runner: ubuntu-latest
target: aarch64-unknown-linux-musl
- runner: ubuntu-latest
target: x86_64-unknown-linux-gnu
- runner: ubuntu-latest
target: x86_64-unknown-linux-musl
# I would like to support this but I don't know how to install the dependencies to be able to
# - runner: windows-latest
# target: aarch64-pc-windows-gnullvm
- runner: windows-latest
target: aarch64-pc-windows-msvc
- runner: windows-latest
target: x86_64-pc-windows-gnu
- runner: windows-latest
target: x86_64-pc-windows-msvc
name: Check and build ${{ matrix.supporteds.target }} (on ${{ matrix.supporteds.runner }})
runs-on: ${{ matrix.supporteds.runner }}
timeout-minutes: 5
env:
# https://github.com/rust-lang/stacker/issues/80#issuecomment-1547991131
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER: aarch64-linux-gnu-gcc # TODO: shouldn't this be something to do with musl, not gcc?
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install prerequisite build chain
if: matrix.supporteds.install_prerequisite
run: ${{ matrix.supporteds.install_prerequisite }}
- name: Install stable Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.supporteds.target }}
- uses: Swatinem/rust-cache@v2
- name: Check
run: cargo check --verbose --target ${{ matrix.supporteds.target }}
- name: Build
run: cargo build --verbose --target ${{ matrix.supporteds.target }}
test:
strategy:
matrix:
supporteds:
- runner: macos-latest
target: aarch64-apple-darwin
- runner: macos-latest
target: x86_64-apple-darwin
# Not able to be tested in GitHub Actions (without emulation, at least)
# - runner: ubuntu-latest
# target: aarch64-unknown-linux-gnu
# Not able to be tested in GitHub Actions (without emulation, at least)
# - runner: ubuntu-latest
# target: aarch64-unknown-linux-musl
- runner: ubuntu-latest
target: x86_64-unknown-linux-gnu
- runner: ubuntu-latest
target: x86_64-unknown-linux-musl
# Not able to be tested in GitHub Actions (without emulation, at least)
# - runner: windows-latest
# target: aarch64-pc-windows-gnullvm
# Not able to be tested in GitHub Actions (without emulation, at least)
# - runner: windows-latest
# target: aarch64-pc-windows-msvc
- runner: windows-latest
target: x86_64-pc-windows-gnu
- runner: windows-latest
target: x86_64-pc-windows-msvc
name: Test ${{ matrix.supporteds.target }} (on ${{ matrix.supporteds.runner }})
runs-on: ${{ matrix.supporteds.runner }}
timeout-minutes: 5
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install stable Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.supporteds.target }}
- name: Install Nextest - name: Install Nextest
uses: taiki-e/install-action@cargo-nextest uses: taiki-e/install-action@cargo-nextest
- uses: Swatinem/rust-cache@v2 - uses: Swatinem/rust-cache@v2
- name: Check
run: cargo check --verbose
- name: Formatting
run: cargo fmt --check --verbose
- name: Build
run: cargo build --verbose
- name: Test - name: Test
run: cargo nextest run run: cargo nextest run --target ${{ matrix.supporteds.target }}
minimal-dependencies-check-build-and-test: minimal-dependencies-check-build-and-test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 15 timeout-minutes: 5
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
@@ -52,11 +168,11 @@ jobs:
- uses: Swatinem/rust-cache@v2 - uses: Swatinem/rust-cache@v2
- name: Check (direct minimal dependencies) - name: Check (minimal direct dependencies)
run: cargo minimal-versions check --direct --workspace run: cargo minimal-versions check --direct --workspace
- name: Build (direct minimal dependencies) - name: Build (minimal direct dependencies)
run: cargo minimal-versions build --direct --workspace run: cargo minimal-versions build --direct --workspace
- name: Test (direct minimal dependencies) - name: Test (minimal direct dependencies)
run: cargo minimal-versions test --direct --workspace run: cargo minimal-versions test --direct --workspace