mirror of
https://github.com/rust-lang/rust.git
synced 2026-01-20 13:20:40 +00:00
289 lines
9.4 KiB
YAML
289 lines
9.4 KiB
YAML
name: CI
|
|
on:
|
|
pull_request:
|
|
merge_group:
|
|
|
|
jobs:
|
|
style:
|
|
name: Check Style
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Install Rust
|
|
run: rustup update nightly --no-self-update && rustup default nightly
|
|
- run: ci/style.sh
|
|
|
|
docs:
|
|
name: Build Documentation
|
|
needs: [style]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Install Rust
|
|
run: rustup update nightly --no-self-update && rustup default nightly
|
|
- run: ci/dox.sh
|
|
env:
|
|
CI: 1
|
|
|
|
verify:
|
|
name: Automatic intrinsic verification
|
|
needs: [style]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Install Rust
|
|
run: rustup update nightly --no-self-update && rustup default nightly
|
|
- run: cargo test --manifest-path crates/stdarch-verify/Cargo.toml
|
|
|
|
test:
|
|
needs: [style]
|
|
name: Test
|
|
runs-on: ${{ matrix.target.os }}
|
|
strategy:
|
|
matrix:
|
|
profile:
|
|
- dev
|
|
- release
|
|
target:
|
|
# Dockers that are run through docker on linux
|
|
- tuple: i686-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
- tuple: x86_64-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
- tuple: arm-unknown-linux-gnueabihf
|
|
os: ubuntu-latest
|
|
- tuple: armv7-unknown-linux-gnueabihf
|
|
os: ubuntu-latest
|
|
- tuple: aarch64-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
- tuple: aarch64_be-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
- tuple: riscv32gc-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
- tuple: riscv64gc-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
- tuple: powerpc-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
- tuple: powerpc64-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
- tuple: powerpc64le-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
# MIPS targets disabled since they are dropped to tier 3.
|
|
# See https://github.com/rust-lang/compiler-team/issues/648
|
|
#- tuple: mips-unknown-linux-gnu
|
|
# os: ubuntu-latest
|
|
#- tuple: mips64-unknown-linux-gnuabi64
|
|
# os: ubuntu-latest
|
|
#- tuple: mips64el-unknown-linux-gnuabi64
|
|
# os: ubuntu-latest
|
|
#- tuple: mipsel-unknown-linux-musl
|
|
# os: ubuntu-latest
|
|
- tuple: s390x-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
- tuple: i586-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
- tuple: nvptx64-nvidia-cuda
|
|
os: ubuntu-latest
|
|
- tuple: thumbv6m-none-eabi
|
|
os: ubuntu-latest
|
|
- tuple: thumbv7m-none-eabi
|
|
os: ubuntu-latest
|
|
- tuple: thumbv7em-none-eabi
|
|
os: ubuntu-latest
|
|
- tuple: thumbv7em-none-eabihf
|
|
os: ubuntu-latest
|
|
- tuple: loongarch64-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
- tuple: wasm32-wasip1
|
|
os: ubuntu-latest
|
|
|
|
# macOS targets
|
|
- tuple: x86_64-apple-darwin
|
|
os: macos-15-large
|
|
- tuple: x86_64-apple-ios-macabi
|
|
os: macos-15-large
|
|
- tuple: aarch64-apple-darwin
|
|
os: macos-15
|
|
- tuple: aarch64-apple-ios-macabi
|
|
os: macos-15
|
|
# FIXME: gh-actions build environment doesn't have linker support
|
|
# - tuple: i686-apple-darwin
|
|
# os: macos-13
|
|
|
|
# Windows targets
|
|
- tuple: x86_64-pc-windows-msvc
|
|
os: windows-2025
|
|
- tuple: i686-pc-windows-msvc
|
|
os: windows-2025
|
|
- tuple: aarch64-pc-windows-msvc
|
|
os: windows-11-arm
|
|
- tuple: x86_64-pc-windows-gnu
|
|
os: windows-2025
|
|
# - tuple: i686-pc-windows-gnu
|
|
# os: windows-latest
|
|
|
|
# Add additional variables to the matrix variations generated above using `include`:
|
|
include:
|
|
# `TEST_EVERYTHING` setups - there should be at least 1 for each architecture
|
|
- target:
|
|
tuple: aarch64-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
test_everything: true
|
|
- target:
|
|
tuple: aarch64_be-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
test_everything: true
|
|
build_std: true
|
|
- target:
|
|
tuple: armv7-unknown-linux-gnueabihf
|
|
os: ubuntu-latest
|
|
test_everything: true
|
|
- target:
|
|
tuple: loongarch64-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
test_everything: true
|
|
- target:
|
|
tuple: powerpc-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
disable_assert_instr: true
|
|
test_everything: true
|
|
- target:
|
|
tuple: powerpc64-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
disable_assert_instr: true
|
|
test_everything: true
|
|
- target:
|
|
tuple: powerpc64le-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
test_everything: true
|
|
- target:
|
|
tuple: riscv32gc-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
test_everything: true
|
|
build_std: true
|
|
- target:
|
|
tuple: riscv64gc-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
test_everything: true
|
|
- target:
|
|
tuple: s390x-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
test_everything: true
|
|
- target:
|
|
tuple: x86_64-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
test_everything: true
|
|
# MIPS targets disabled since they are dropped to tier 3.
|
|
# See https://github.com/rust-lang/compiler-team/issues/648
|
|
#- target:
|
|
# tuple: mips-unknown-linux-gnu
|
|
# os: ubuntu-latest
|
|
# norun: true
|
|
#- target:
|
|
# tuple: mips64-unknown-linux-gnuabi64
|
|
# os: ubuntu-latest
|
|
# norun: true
|
|
#- target:
|
|
# tuple: mips64el-unknown-linux-gnuabi64
|
|
# os: ubuntu-latest
|
|
# norun: true
|
|
#- target:
|
|
# tuple: mipsel-unknown-linux-musl
|
|
# os: ubuntu-latest
|
|
# norun: true
|
|
- target:
|
|
tuple: aarch64-apple-darwin
|
|
os: macos-15
|
|
norun: true # https://github.com/rust-lang/stdarch/issues/1206
|
|
- target:
|
|
tuple: aarch64-apple-ios-macabi
|
|
os: macos-15
|
|
norun: true # https://github.com/rust-lang/stdarch/issues/1206
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Install Rust
|
|
run: |
|
|
rustup update nightly --no-self-update
|
|
rustup default nightly
|
|
shell: bash
|
|
if: matrix.target.os != 'windows-11-arm'
|
|
- name: Install Rust for `windows-11-arm` runners
|
|
# The arm runners don't have Rust pre-installed (https://github.com/actions/partner-runner-images/issues/77)
|
|
run: |
|
|
curl https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly
|
|
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
|
|
shell: bash
|
|
if: matrix.target.os == 'windows-11-arm'
|
|
|
|
- run: rustup target add ${{ matrix.target.tuple }}
|
|
shell: bash
|
|
if: matrix.build_std == ''
|
|
- run: |
|
|
rustup component add rust-src
|
|
echo "CARGO_UNSTABLE_BUILD_STD=std" >> $GITHUB_ENV
|
|
shell: bash
|
|
if: matrix.build_std != ''
|
|
|
|
# Configure some env vars based on matrix configuration
|
|
- run: echo "PROFILE=--profile=${{matrix.profile}}" >> $GITHUB_ENV
|
|
shell: bash
|
|
- run: echo "NORUN=1" >> $GITHUB_ENV
|
|
shell: bash
|
|
if: matrix.norun != '' || startsWith(matrix.target.tuple, 'thumb') || matrix.target.tuple == 'nvptx64-nvidia-cuda'
|
|
- run: echo "STDARCH_TEST_EVERYTHING=1" >> $GITHUB_ENV
|
|
shell: bash
|
|
if: matrix.test_everything != ''
|
|
- run: echo "STDARCH_DISABLE_ASSERT_INSTR=1" >> $GITHUB_ENV
|
|
shell: bash
|
|
if: matrix.disable_assert_instr != ''
|
|
- run: echo "NOSTD=1" >> $GITHUB_ENV
|
|
shell: bash
|
|
if: startsWith(matrix.target.tuple, 'thumb') || matrix.target.tuple == 'nvptx64-nvidia-cuda'
|
|
|
|
# Windows & OSX go straight to `run.sh` ...
|
|
- run: ./ci/run.sh
|
|
shell: bash
|
|
if: matrix.target.os != 'ubuntu-latest' || startsWith(matrix.target.tuple, 'thumb')
|
|
env:
|
|
TARGET: ${{ matrix.target.tuple }}
|
|
|
|
# ... while Linux goes to `run-docker.sh`
|
|
- run: ./ci/run-docker.sh ${{ matrix.target.tuple }}
|
|
shell: bash
|
|
if: matrix.target.os == 'ubuntu-latest' && !startsWith(matrix.target.tuple, 'thumb')
|
|
env:
|
|
TARGET: ${{ matrix.target.tuple }}
|
|
|
|
build-std-detect:
|
|
needs: [style]
|
|
name: Build std_detect
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Install Rust
|
|
run: rustup update nightly && rustup default nightly
|
|
- run: ./ci/build-std-detect.sh
|
|
|
|
conclusion:
|
|
needs:
|
|
- docs
|
|
- verify
|
|
- test
|
|
- build-std-detect
|
|
runs-on: ubuntu-latest
|
|
# We need to ensure this job does *not* get skipped if its dependencies fail,
|
|
# because a skipped job is considered a success by GitHub. So we have to
|
|
# overwrite `if:`. We use `!cancelled()` to ensure the job does still not get run
|
|
# when the workflow is canceled manually.
|
|
#
|
|
# ALL THE PREVIOUS JOBS NEED TO BE ADDED TO THE `needs` SECTION OF THIS JOB!
|
|
if: ${{ !cancelled() }} # make sure this is never "skipped"
|
|
steps:
|
|
- name: Conclusion
|
|
run: |
|
|
# Print the dependent jobs to see them in the CI log
|
|
jq -C <<< '${{ toJson(needs) }}'
|
|
# Check if all jobs that we depend on (in the needs array) were successful.
|
|
jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}'
|