Skip to content

ci: Naming adjustments and cleanup #16

ci: Naming adjustments and cleanup

ci: Naming adjustments and cleanup #16

Workflow file for this run

name: full CI
on:
merge_group:
pull_request:
types: [opened, synchronize, reopened]
env:
CARGO_TERM_VERBOSE: true
LIBC_CI: 1
jobs:
style_check:
name: Style check
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Setup Rust toolchain
run: ./ci/install-rust.sh
- name: Check style
run: ./ci/style.sh
build_channels_linux:
name: Build Channels Linux
runs-on: ubuntu-22.04
strategy:
fail-fast: true
max-parallel: 5
matrix:
toolchain:
- stable
- beta
- nightly
- 1.63.0
env:
OS: linux
TOOLCHAIN: ${{ matrix.toolchain }}
steps:
- uses: actions/checkout@v4
- name: Setup Rust toolchain
run: ./ci/install-rust.sh
- name: Execute build.sh
run: ./ci/build.sh
build_channels_macos:
name: Build Channels macOS
needs: macos
strategy:
fail-fast: true
max-parallel: 4
matrix:
target:
- { toolchain: stable, os: macos-14 }
- { toolchain: beta, os: macos-14 }
- { toolchain: nightly, os: macos-14 }
- { toolchain: 1.63.0, os: macos-14 }
runs-on: ${{ matrix.target.os }}
env:
OS: macos
TOOLCHAIN: ${{ matrix.toolchain }}
steps:
- uses: actions/checkout@v4
- name: Setup Rust toolchain
run: ./ci/install-rust.sh
- name: Execute build.sh
run: ./ci/build.sh
build_channels_windows:
name: Build Channels Windows
runs-on: windows-2022
strategy:
fail-fast: true
matrix:
toolchain:
- 1.63.0
- stable
env:
OS: windows
TOOLCHAIN: ${{ matrix.toolchain }}
steps:
- uses: actions/checkout@v4
- name: Self-update rustup
run: rustup self update
shell: bash
- name: Execute build.sh
run: ./ci/build.sh
shell: bash
macos:
name: macOS
runs-on: macos-14
strategy:
fail-fast: true
matrix:
target:
- aarch64-apple-darwin
env:
TARGET: ${{ matrix.target }}
steps:
- uses: actions/checkout@v4
- name: Setup Rust toolchain
run: ./ci/install-rust.sh
- name: Execute run.sh
run: ./ci/run.sh ${{ matrix.target }}
windows:
name: Windows
runs-on: windows-2022
strategy:
fail-fast: true
matrix:
include:
- target: x86_64-pc-windows-gnu
env:
ARCH_BITS: 64
ARCH: x86_64
- target: x86_64-pc-windows-msvc
# FIXME: It currently causes segfaults.
#- target: i686-pc-windows-gnu
# env:
# ARCH_BITS: 32
# ARCH: i686
- target: i686-pc-windows-msvc
env:
OS: windows
TARGET: ${{ matrix.target }}
steps:
- uses: actions/checkout@v4
- name: Self-update rustup
run: rustup self update
shell: bash
- name: Setup Rust toolchain
run: ./ci/install-rust.sh
shell: bash
- name: Execute run.sh
run: ./ci/run.sh ${{ matrix.target }}
shell: bash
docker_linux_tier1:
name: Docker Linux Tier1
runs-on: ubuntu-22.04
strategy:
fail-fast: true
matrix:
target:
- i686-unknown-linux-gnu
- x86_64-unknown-linux-gnu
env:
TARGET: ${{ matrix.target }}
steps:
- uses: actions/checkout@v4
- name: Setup Rust toolchain
run: ./ci/install-rust.sh
- name: Execute run-docker.sh
run: ./ci/run-docker.sh ${{ matrix.target }}
docker_linux_tier2:
name: Docker Linux Tier2
needs: [docker_linux_tier1, style_check]
runs-on: ubuntu-22.04
strategy:
fail-fast: true
max-parallel: 12
matrix:
target:
- aarch64-linux-android
- aarch64-unknown-linux-gnu
- aarch64-unknown-linux-musl
- arm-linux-androideabi
- arm-unknown-linux-gnueabihf
- arm-unknown-linux-musleabihf
- i686-linux-android
- i686-unknown-linux-musl
- loongarch64-unknown-linux-gnu
- loongarch64-unknown-linux-musl
- powerpc-unknown-linux-gnu
- powerpc64-unknown-linux-gnu
- powerpc64le-unknown-linux-gnu
- s390x-unknown-linux-gnu
- riscv64gc-unknown-linux-gnu
- wasm32-wasip1
- wasm32-wasip2
- sparc64-unknown-linux-gnu
- wasm32-unknown-emscripten
- x86_64-linux-android
# FIXME: Exec format error (os error 8)
# - x86_64-unknown-linux-gnux32
- x86_64-unknown-linux-musl
# FIXME: It seems some items in `src/unix/mod.rs`
# aren't defined on redox actually.
# - x86_64-unknown-redox
env:
TARGET: ${{ matrix.target }}
steps:
- uses: actions/checkout@v4
- name: Setup Rust toolchain
run: ./ci/install-rust.sh
- name: Execute run-docker.sh
run: ./ci/run-docker.sh ${{ matrix.target }}
solaris:
name: Solaris
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
target:
- x86_64-pc-solaris
steps:
- uses: actions/checkout@v4
- name: test on Solaris
uses: vmactions/solaris-vm@v1
with:
release: "11.4-gcc"
usesh: true
mem: 4096
copyback: false
prepare: |
source <(curl -s https://raw.githubusercontent.com/psumbera/solaris-rust/refs/heads/main/sh.rust-web-install)
echo "~~~~ rustc --version ~~~~"
rustc --version
echo "~~~~ Solaris-version ~~~~"
uname -a
run: |
export PATH=$HOME/.rust_solaris/bin:$PATH
./ci/run.sh ${{ matrix.target }}
check_cfg:
name: "Check #[cfg]s"
runs-on: ubuntu-22.04
env:
TOOLCHAIN: nightly
steps:
- uses: actions/checkout@v4
- name: Setup Rust toolchain
run: ./ci/install-rust.sh
- name: Build with check-cfg
run: LIBC_CHECK_CFG=1 cargo build -Z unstable-options -Z check-cfg
# One job that "summarizes" the success state of this pipeline. This can then be added to branch
# protection, rather than having to add each job separately.
success:
name: success
runs-on: ubuntu-22.04
needs:
- docker_linux_tier1
- docker_linux_tier2
- macos
- windows
- solaris
- style_check
- build_channels_linux
- build_channels_macos
- build_channels_windows
# Github branch protection is exceedingly silly and treats "jobs skipped because a dependency
# failed" as success. So we have to do some contortions to ensure the job fails if any of its
# dependencies fails.
if: always() # make sure this is never "skipped"
steps:
# Manually check the status of all dependencies. `if: failure()` does not work.
- name: check if any dependency failed
run: jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}'