mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 16:24:46 +00:00
ccfcd950b3
CI: add a script for dynamically computing CI job matrix It would be great if was easier to run specific CI workflows locally, and also to allow us to spawn a specific CI workflow by bors, to enable running arbitrary try builds. See discussion [here](https://rust-lang.zulipchat.com/#narrow/stream/242791-t-infra/topic/CI.20workflows.20refactoring). This PR is a first step in that direction. - Moves the definition of CI runners and (for now) PR jobs into a separate `jobs.yml` file. - Adds a simple Python script that reads the file, decides which jobs should be active for the current CI workflow, and prints them as JSON to their output. - The PR job then reads this output and generates its job matrix based on it. By moving the job definitions from `ci.yml` into a separate file, we can handle it programmatically, which should make it easier to both do local execution of CI jobs and also to do arbitrary try builds.
796 lines
32 KiB
YAML
796 lines
32 KiB
YAML
#############################################################
|
|
# WARNING: automatically generated file, DO NOT CHANGE! #
|
|
#############################################################
|
|
|
|
# This file was automatically generated by the expand-yaml-anchors tool. The
|
|
# source file that generated this one is:
|
|
#
|
|
# src/ci/github-actions/ci.yml
|
|
#
|
|
# Once you make changes to that file you need to run:
|
|
#
|
|
# ./x.py run src/tools/expand-yaml-anchors/
|
|
#
|
|
# The CI build will fail if the tool is not run after changes to this file.
|
|
|
|
---
|
|
name: CI
|
|
"on":
|
|
push:
|
|
branches:
|
|
- auto
|
|
- try
|
|
- try-perf
|
|
- automation/bors/try
|
|
- master
|
|
pull_request:
|
|
branches:
|
|
- "**"
|
|
permissions:
|
|
contents: read
|
|
packages: write
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
concurrency:
|
|
group: "${{ github.workflow }}-${{ ((github.ref == 'refs/heads/try' || github.ref == 'refs/heads/try-perf') && github.sha) || github.ref }}"
|
|
cancel-in-progress: true
|
|
jobs:
|
|
calculate_matrix:
|
|
name: Calculate job matrix
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
jobs: "${{ steps.jobs.outputs.jobs }}"
|
|
steps:
|
|
- name: Checkout the source code
|
|
uses: actions/checkout@v4
|
|
- name: Calculate the CI job matrix
|
|
run: python3 src/ci/scripts/calculate-job-matrix.py >> $GITHUB_OUTPUT
|
|
id: jobs
|
|
pr:
|
|
name: "PR - ${{ matrix.name }}"
|
|
needs:
|
|
- calculate_matrix
|
|
env:
|
|
PR_CI_JOB: 1
|
|
CI_JOB_NAME: "${{ matrix.name }}"
|
|
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
|
|
HEAD_SHA: "${{ github.event.pull_request.head.sha || github.sha }}"
|
|
DOCKER_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
|
SCCACHE_BUCKET: rust-lang-ci-sccache2
|
|
TOOLSTATE_REPO: "https://github.com/rust-lang-nursery/rust-toolstate"
|
|
CACHE_DOMAIN: ci-caches.rust-lang.org
|
|
if: "github.event_name == 'pull_request'"
|
|
continue-on-error: "${{ matrix.name == 'mingw-check-tidy' }}"
|
|
strategy:
|
|
matrix:
|
|
include: "${{ fromJSON(needs.calculate_matrix.outputs.jobs) }}"
|
|
defaults:
|
|
run:
|
|
shell: "${{ contains(matrix.os, 'windows') && 'msys2 {0}' || 'bash' }}"
|
|
timeout-minutes: 600
|
|
runs-on: "${{ matrix.os }}"
|
|
steps:
|
|
- if: "contains(matrix.os, 'windows')"
|
|
uses: msys2/setup-msys2@v2.22.0
|
|
with:
|
|
msystem: "${{ contains(matrix.name, 'i686') && 'mingw32' || 'mingw64' }}"
|
|
update: false
|
|
release: true
|
|
path-type: inherit
|
|
install: "make dos2unix diffutils\n"
|
|
- name: disable git crlf conversion
|
|
run: git config --global core.autocrlf false
|
|
- name: checkout the source code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 2
|
|
- name: configure the PR in which the error message will be posted
|
|
run: "echo \"[CI_PR_NUMBER=$num]\""
|
|
env:
|
|
num: "${{ github.event.number }}"
|
|
if: "success() && !env.SKIP_JOB && github.event_name == 'pull_request'"
|
|
- name: add extra environment variables
|
|
run: src/ci/scripts/setup-environment.sh
|
|
env:
|
|
EXTRA_VARIABLES: "${{ toJson(matrix.env) }}"
|
|
if: success() && !env.SKIP_JOB
|
|
- name: decide whether to skip this job
|
|
run: src/ci/scripts/should-skip-this.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure the channel matches the target branch
|
|
run: src/ci/scripts/verify-channel.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: collect CPU statistics
|
|
run: src/ci/scripts/collect-cpu-stats.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: show the current environment
|
|
run: src/ci/scripts/dump-environment.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install awscli
|
|
run: src/ci/scripts/install-awscli.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install sccache
|
|
run: src/ci/scripts/install-sccache.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: select Xcode
|
|
run: src/ci/scripts/select-xcode.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install clang
|
|
run: src/ci/scripts/install-clang.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install tidy
|
|
run: src/ci/scripts/install-tidy.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install WIX
|
|
run: src/ci/scripts/install-wix.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: disable git crlf conversion
|
|
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: checkout submodules
|
|
run: src/ci/scripts/checkout-submodules.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install MSYS2
|
|
run: src/ci/scripts/install-msys2.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install MinGW
|
|
run: src/ci/scripts/install-mingw.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install ninja
|
|
run: src/ci/scripts/install-ninja.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: enable ipv6 on Docker
|
|
run: src/ci/scripts/enable-docker-ipv6.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: disable git crlf conversion
|
|
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure line endings are correct
|
|
run: src/ci/scripts/verify-line-endings.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure backported commits are in upstream branches
|
|
run: src/ci/scripts/verify-backported-commits.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure the stable version number is correct
|
|
run: src/ci/scripts/verify-stable-version-number.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: run the build
|
|
run: src/ci/scripts/run-build-from-ci.sh 2>&1
|
|
env:
|
|
AWS_ACCESS_KEY_ID: "${{ env.CACHES_AWS_ACCESS_KEY_ID }}"
|
|
AWS_SECRET_ACCESS_KEY: "${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.CACHES_AWS_ACCESS_KEY_ID)] }}"
|
|
TOOLSTATE_REPO_ACCESS_TOKEN: "${{ secrets.TOOLSTATE_REPO_ACCESS_TOKEN }}"
|
|
if: success() && !env.SKIP_JOB
|
|
- name: create github artifacts
|
|
run: src/ci/scripts/create-doc-artifacts.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: upload artifacts to github
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: "${{ env.DOC_ARTIFACT_NAME }}"
|
|
path: obj/artifacts/doc
|
|
if-no-files-found: ignore
|
|
retention-days: 5
|
|
if: success() && !env.SKIP_JOB
|
|
- name: upload artifacts to S3
|
|
run: src/ci/scripts/upload-artifacts.sh
|
|
env:
|
|
AWS_ACCESS_KEY_ID: "${{ env.ARTIFACTS_AWS_ACCESS_KEY_ID }}"
|
|
AWS_SECRET_ACCESS_KEY: "${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.ARTIFACTS_AWS_ACCESS_KEY_ID)] }}"
|
|
if: "success() && !env.SKIP_JOB && (github.event_name == 'push' || env.DEPLOY == '1' || env.DEPLOY_ALT == '1')"
|
|
auto:
|
|
name: "auto - ${{ matrix.name }}"
|
|
env:
|
|
CI_JOB_NAME: "${{ matrix.name }}"
|
|
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
|
|
HEAD_SHA: "${{ github.event.pull_request.head.sha || github.sha }}"
|
|
DOCKER_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
|
SCCACHE_BUCKET: rust-lang-ci-sccache2
|
|
DEPLOY_BUCKET: rust-lang-ci2
|
|
TOOLSTATE_REPO: "https://github.com/rust-lang-nursery/rust-toolstate"
|
|
TOOLSTATE_ISSUES_API_URL: "https://api.github.com/repos/rust-lang/rust/issues"
|
|
TOOLSTATE_PUBLISH: 1
|
|
CACHES_AWS_ACCESS_KEY_ID: AKIA46X5W6CZI5DHEBFL
|
|
ARTIFACTS_AWS_ACCESS_KEY_ID: AKIA46X5W6CZN24CBO55
|
|
AWS_REGION: us-west-1
|
|
CACHE_DOMAIN: ci-caches.rust-lang.org
|
|
if: "github.event_name == 'push' && github.ref == 'refs/heads/auto' && github.repository == 'rust-lang-ci/rust'"
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- name: aarch64-gnu
|
|
os:
|
|
- self-hosted
|
|
- ARM64
|
|
- linux
|
|
- name: arm-android
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: armhf-gnu
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-aarch64-linux
|
|
env:
|
|
CODEGEN_BACKENDS: "llvm,cranelift"
|
|
os: ubuntu-20.04-8core-32gb
|
|
- name: dist-android
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-arm-linux
|
|
os: ubuntu-20.04-16core-64gb
|
|
env: {}
|
|
- name: dist-armhf-linux
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-armv7-linux
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-i586-gnu-i586-i686-musl
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-i686-linux
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-loongarch64-linux
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-ohos
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-powerpc-linux
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-powerpc64-linux
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-powerpc64le-linux
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-riscv64-linux
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-s390x-linux
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-various-1
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-various-2
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-x86_64-freebsd
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-x86_64-illumos
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-x86_64-linux
|
|
env:
|
|
CODEGEN_BACKENDS: "llvm,cranelift"
|
|
os: ubuntu-20.04-16core-64gb
|
|
- name: dist-x86_64-linux-alt
|
|
env:
|
|
IMAGE: dist-x86_64-linux
|
|
CODEGEN_BACKENDS: "llvm,cranelift"
|
|
os: ubuntu-20.04-16core-64gb
|
|
- name: dist-x86_64-musl
|
|
env:
|
|
CODEGEN_BACKENDS: "llvm,cranelift"
|
|
os: ubuntu-20.04-8core-32gb
|
|
- name: dist-x86_64-netbsd
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: i686-gnu
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: i686-gnu-nopt
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: mingw-check
|
|
os: ubuntu-20.04-4core-16gb
|
|
env: {}
|
|
- name: test-various
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: x86_64-gnu
|
|
os: ubuntu-20.04-4core-16gb
|
|
env: {}
|
|
- name: x86_64-gnu-stable
|
|
env:
|
|
IMAGE: x86_64-gnu
|
|
RUST_CI_OVERRIDE_RELEASE_CHANNEL: stable
|
|
CI_ONLY_WHEN_CHANNEL: nightly
|
|
os: ubuntu-20.04-4core-16gb
|
|
- name: x86_64-gnu-aux
|
|
os: ubuntu-20.04-4core-16gb
|
|
env: {}
|
|
- name: x86_64-gnu-integration
|
|
env:
|
|
CI_ONLY_WHEN_CHANNEL: nightly
|
|
os: ubuntu-20.04-8core-32gb
|
|
- name: x86_64-gnu-debug
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: x86_64-gnu-distcheck
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: x86_64-gnu-llvm-18
|
|
env:
|
|
RUST_BACKTRACE: 1
|
|
os: ubuntu-20.04-8core-32gb
|
|
- name: x86_64-gnu-llvm-17
|
|
env:
|
|
RUST_BACKTRACE: 1
|
|
os: ubuntu-20.04-8core-32gb
|
|
- name: x86_64-gnu-nopt
|
|
os: ubuntu-20.04-4core-16gb
|
|
env: {}
|
|
- name: x86_64-gnu-tools
|
|
env:
|
|
DEPLOY_TOOLSTATES_JSON: toolstates-linux.json
|
|
os: ubuntu-20.04-8core-32gb
|
|
- name: dist-x86_64-apple
|
|
env:
|
|
SCRIPT: "./x.py dist bootstrap --include-default-paths --host=x86_64-apple-darwin --target=x86_64-apple-darwin"
|
|
RUST_CONFIGURE_ARGS: "--enable-full-tools --enable-sanitizers --enable-profiler --set rust.jemalloc --set rust.lto=thin --set rust.codegen-units=1"
|
|
RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
|
|
MACOSX_DEPLOYMENT_TARGET: 10.12
|
|
SELECT_XCODE: /Applications/Xcode_14.3.1.app
|
|
NO_LLVM_ASSERTIONS: 1
|
|
NO_DEBUG_ASSERTIONS: 1
|
|
NO_OVERFLOW_CHECKS: 1
|
|
DIST_REQUIRE_ALL_TOOLS: 1
|
|
CODEGEN_BACKENDS: "llvm,cranelift"
|
|
os: macos-13
|
|
- name: dist-apple-various
|
|
env:
|
|
SCRIPT: "./x.py dist bootstrap --include-default-paths --host='' --target=aarch64-apple-ios,x86_64-apple-ios,aarch64-apple-ios-sim"
|
|
RUST_CONFIGURE_ARGS: "--enable-sanitizers --enable-profiler --set rust.jemalloc"
|
|
RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
|
|
MACOSX_DEPLOYMENT_TARGET: 10.12
|
|
SELECT_XCODE: /Applications/Xcode_14.3.1.app
|
|
NO_LLVM_ASSERTIONS: 1
|
|
NO_DEBUG_ASSERTIONS: 1
|
|
NO_OVERFLOW_CHECKS: 1
|
|
os: macos-13
|
|
- name: x86_64-apple-1
|
|
env:
|
|
SCRIPT: "./x.py --stage 2 test --skip tests/ui --skip tests/rustdoc --skip tests/run-make-fulldeps"
|
|
RUST_CONFIGURE_ARGS: "--build=x86_64-apple-darwin --enable-sanitizers --enable-profiler --set rust.jemalloc"
|
|
RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
|
|
MACOSX_DEPLOYMENT_TARGET: 10.12
|
|
MACOSX_STD_DEPLOYMENT_TARGET: 10.12
|
|
SELECT_XCODE: /Applications/Xcode_14.3.1.app
|
|
NO_LLVM_ASSERTIONS: 1
|
|
NO_DEBUG_ASSERTIONS: 1
|
|
NO_OVERFLOW_CHECKS: 1
|
|
os: macos-13
|
|
- name: x86_64-apple-2
|
|
env:
|
|
SCRIPT: "./x.py --stage 2 test tests/ui tests/rustdoc tests/run-make-fulldeps"
|
|
RUST_CONFIGURE_ARGS: "--build=x86_64-apple-darwin --enable-sanitizers --enable-profiler --set rust.jemalloc"
|
|
RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
|
|
MACOSX_DEPLOYMENT_TARGET: 10.12
|
|
MACOSX_STD_DEPLOYMENT_TARGET: 10.12
|
|
SELECT_XCODE: /Applications/Xcode_14.3.1.app
|
|
NO_LLVM_ASSERTIONS: 1
|
|
NO_DEBUG_ASSERTIONS: 1
|
|
NO_OVERFLOW_CHECKS: 1
|
|
os: macos-13
|
|
- name: dist-aarch64-apple
|
|
env:
|
|
SCRIPT: "./x.py dist bootstrap --include-default-paths --host=aarch64-apple-darwin --target=aarch64-apple-darwin"
|
|
RUST_CONFIGURE_ARGS: "--enable-full-tools --enable-sanitizers --enable-profiler --set rust.jemalloc --set llvm.ninja=false --set rust.lto=thin"
|
|
RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
|
|
SELECT_XCODE: /Applications/Xcode_14.3.1.app
|
|
USE_XCODE_CLANG: 1
|
|
MACOSX_DEPLOYMENT_TARGET: 11.0
|
|
MACOSX_STD_DEPLOYMENT_TARGET: 11.0
|
|
NO_LLVM_ASSERTIONS: 1
|
|
NO_DEBUG_ASSERTIONS: 1
|
|
NO_OVERFLOW_CHECKS: 1
|
|
DIST_REQUIRE_ALL_TOOLS: 1
|
|
os: macos-14
|
|
- name: aarch64-apple
|
|
env:
|
|
SCRIPT: "./x.py --stage 2 test --host=aarch64-apple-darwin --target=aarch64-apple-darwin"
|
|
RUST_CONFIGURE_ARGS: "--enable-sanitizers --enable-profiler --set rust.jemalloc"
|
|
RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
|
|
SELECT_XCODE: /Applications/Xcode_14.3.1.app
|
|
USE_XCODE_CLANG: 1
|
|
MACOSX_DEPLOYMENT_TARGET: 11.0
|
|
MACOSX_STD_DEPLOYMENT_TARGET: 11.0
|
|
NO_LLVM_ASSERTIONS: 1
|
|
NO_DEBUG_ASSERTIONS: 1
|
|
NO_OVERFLOW_CHECKS: 1
|
|
os: macos-14
|
|
- name: x86_64-msvc
|
|
env:
|
|
RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-msvc --enable-profiler"
|
|
SCRIPT: make ci-msvc
|
|
os: windows-2019-8core-32gb
|
|
- name: i686-msvc
|
|
env:
|
|
RUST_CONFIGURE_ARGS: "--build=i686-pc-windows-msvc"
|
|
SCRIPT: make ci-msvc
|
|
os: windows-2019-8core-32gb
|
|
- name: x86_64-msvc-ext
|
|
env:
|
|
SCRIPT: python x.py --stage 2 test src/tools/cargotest src/tools/cargo && src/ci/docker/host-x86_64/x86_64-gnu-tools/checktools.sh x.py /tmp/toolstate/toolstates.json windows
|
|
HOST_TARGET: x86_64-pc-windows-msvc
|
|
RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-msvc --enable-lld --save-toolstates=/tmp/toolstate/toolstates.json"
|
|
DEPLOY_TOOLSTATES_JSON: toolstates-windows.json
|
|
os: windows-2019-8core-32gb
|
|
- name: i686-mingw
|
|
env:
|
|
RUST_CONFIGURE_ARGS: "--build=i686-pc-windows-gnu"
|
|
SCRIPT: make ci-mingw
|
|
NO_DOWNLOAD_CI_LLVM: 1
|
|
CUSTOM_MINGW: 1
|
|
os: windows-2019-8core-32gb
|
|
- name: x86_64-mingw
|
|
env:
|
|
SCRIPT: make ci-mingw
|
|
RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-gnu --enable-profiler"
|
|
NO_DOWNLOAD_CI_LLVM: 1
|
|
CUSTOM_MINGW: 1
|
|
os: windows-2019-8core-32gb
|
|
- name: dist-x86_64-msvc
|
|
env:
|
|
RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-msvc --host=x86_64-pc-windows-msvc --target=x86_64-pc-windows-msvc --enable-full-tools --enable-profiler --set rust.codegen-units=1"
|
|
SCRIPT: python x.py build --set rust.debug=true opt-dist && PGO_HOST=x86_64-pc-windows-msvc ./build/x86_64-pc-windows-msvc/stage0-tools-bin/opt-dist windows-ci -- python x.py dist bootstrap --include-default-paths
|
|
DIST_REQUIRE_ALL_TOOLS: 1
|
|
os: windows-2019-8core-32gb
|
|
- name: dist-i686-msvc
|
|
env:
|
|
RUST_CONFIGURE_ARGS: "--build=i686-pc-windows-msvc --host=i686-pc-windows-msvc --target=i686-pc-windows-msvc,i586-pc-windows-msvc --enable-full-tools --enable-profiler"
|
|
SCRIPT: python x.py dist bootstrap --include-default-paths
|
|
DIST_REQUIRE_ALL_TOOLS: 1
|
|
os: windows-2019-8core-32gb
|
|
- name: dist-aarch64-msvc
|
|
env:
|
|
RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-msvc --host=aarch64-pc-windows-msvc --enable-full-tools --enable-profiler"
|
|
SCRIPT: python x.py dist bootstrap --include-default-paths
|
|
DIST_REQUIRE_ALL_TOOLS: 1
|
|
os: windows-2019-8core-32gb
|
|
- name: dist-i686-mingw
|
|
env:
|
|
RUST_CONFIGURE_ARGS: "--build=i686-pc-windows-gnu --enable-full-tools --enable-profiler"
|
|
NO_DOWNLOAD_CI_LLVM: 1
|
|
SCRIPT: python x.py dist bootstrap --include-default-paths
|
|
CUSTOM_MINGW: 1
|
|
DIST_REQUIRE_ALL_TOOLS: 1
|
|
os: windows-2019-8core-32gb
|
|
- name: dist-x86_64-mingw
|
|
env:
|
|
SCRIPT: python x.py dist bootstrap --include-default-paths
|
|
RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-gnu --enable-full-tools --enable-profiler"
|
|
NO_DOWNLOAD_CI_LLVM: 1
|
|
CUSTOM_MINGW: 1
|
|
DIST_REQUIRE_ALL_TOOLS: 1
|
|
os: windows-2019-8core-32gb
|
|
- name: dist-x86_64-msvc-alt
|
|
env:
|
|
RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-msvc --enable-extended --enable-profiler"
|
|
SCRIPT: python x.py dist bootstrap --include-default-paths
|
|
os: windows-2019-8core-32gb
|
|
defaults:
|
|
run:
|
|
shell: "${{ contains(matrix.os, 'windows') && 'msys2 {0}' || 'bash' }}"
|
|
timeout-minutes: 600
|
|
runs-on: "${{ matrix.os }}"
|
|
steps:
|
|
- if: "contains(matrix.os, 'windows')"
|
|
uses: msys2/setup-msys2@v2.22.0
|
|
with:
|
|
msystem: "${{ contains(matrix.name, 'i686') && 'mingw32' || 'mingw64' }}"
|
|
update: false
|
|
release: true
|
|
path-type: inherit
|
|
install: "make dos2unix diffutils\n"
|
|
- name: disable git crlf conversion
|
|
run: git config --global core.autocrlf false
|
|
- name: checkout the source code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 2
|
|
- name: configure the PR in which the error message will be posted
|
|
run: "echo \"[CI_PR_NUMBER=$num]\""
|
|
env:
|
|
num: "${{ github.event.number }}"
|
|
if: "success() && !env.SKIP_JOB && github.event_name == 'pull_request'"
|
|
- name: add extra environment variables
|
|
run: src/ci/scripts/setup-environment.sh
|
|
env:
|
|
EXTRA_VARIABLES: "${{ toJson(matrix.env) }}"
|
|
if: success() && !env.SKIP_JOB
|
|
- name: decide whether to skip this job
|
|
run: src/ci/scripts/should-skip-this.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure the channel matches the target branch
|
|
run: src/ci/scripts/verify-channel.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: collect CPU statistics
|
|
run: src/ci/scripts/collect-cpu-stats.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: show the current environment
|
|
run: src/ci/scripts/dump-environment.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install awscli
|
|
run: src/ci/scripts/install-awscli.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install sccache
|
|
run: src/ci/scripts/install-sccache.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: select Xcode
|
|
run: src/ci/scripts/select-xcode.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install clang
|
|
run: src/ci/scripts/install-clang.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install tidy
|
|
run: src/ci/scripts/install-tidy.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install WIX
|
|
run: src/ci/scripts/install-wix.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: disable git crlf conversion
|
|
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: checkout submodules
|
|
run: src/ci/scripts/checkout-submodules.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install MSYS2
|
|
run: src/ci/scripts/install-msys2.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install MinGW
|
|
run: src/ci/scripts/install-mingw.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install ninja
|
|
run: src/ci/scripts/install-ninja.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: enable ipv6 on Docker
|
|
run: src/ci/scripts/enable-docker-ipv6.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: disable git crlf conversion
|
|
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure line endings are correct
|
|
run: src/ci/scripts/verify-line-endings.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure backported commits are in upstream branches
|
|
run: src/ci/scripts/verify-backported-commits.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure the stable version number is correct
|
|
run: src/ci/scripts/verify-stable-version-number.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: run the build
|
|
run: src/ci/scripts/run-build-from-ci.sh 2>&1
|
|
env:
|
|
AWS_ACCESS_KEY_ID: "${{ env.CACHES_AWS_ACCESS_KEY_ID }}"
|
|
AWS_SECRET_ACCESS_KEY: "${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.CACHES_AWS_ACCESS_KEY_ID)] }}"
|
|
TOOLSTATE_REPO_ACCESS_TOKEN: "${{ secrets.TOOLSTATE_REPO_ACCESS_TOKEN }}"
|
|
if: success() && !env.SKIP_JOB
|
|
- name: create github artifacts
|
|
run: src/ci/scripts/create-doc-artifacts.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: upload artifacts to github
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: "${{ env.DOC_ARTIFACT_NAME }}"
|
|
path: obj/artifacts/doc
|
|
if-no-files-found: ignore
|
|
retention-days: 5
|
|
if: success() && !env.SKIP_JOB
|
|
- name: upload artifacts to S3
|
|
run: src/ci/scripts/upload-artifacts.sh
|
|
env:
|
|
AWS_ACCESS_KEY_ID: "${{ env.ARTIFACTS_AWS_ACCESS_KEY_ID }}"
|
|
AWS_SECRET_ACCESS_KEY: "${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.ARTIFACTS_AWS_ACCESS_KEY_ID)] }}"
|
|
if: "success() && !env.SKIP_JOB && (github.event_name == 'push' || env.DEPLOY == '1' || env.DEPLOY_ALT == '1')"
|
|
try:
|
|
name: "try - ${{ matrix.name }}"
|
|
env:
|
|
DIST_TRY_BUILD: 1
|
|
CI_JOB_NAME: "${{ matrix.name }}"
|
|
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
|
|
HEAD_SHA: "${{ github.event.pull_request.head.sha || github.sha }}"
|
|
DOCKER_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
|
SCCACHE_BUCKET: rust-lang-ci-sccache2
|
|
DEPLOY_BUCKET: rust-lang-ci2
|
|
TOOLSTATE_REPO: "https://github.com/rust-lang-nursery/rust-toolstate"
|
|
TOOLSTATE_ISSUES_API_URL: "https://api.github.com/repos/rust-lang/rust/issues"
|
|
TOOLSTATE_PUBLISH: 1
|
|
CACHES_AWS_ACCESS_KEY_ID: AKIA46X5W6CZI5DHEBFL
|
|
ARTIFACTS_AWS_ACCESS_KEY_ID: AKIA46X5W6CZN24CBO55
|
|
AWS_REGION: us-west-1
|
|
CACHE_DOMAIN: ci-caches.rust-lang.org
|
|
if: "github.event_name == 'push' && (((github.ref == 'refs/heads/try' || github.ref == 'refs/heads/try-perf') && github.repository == 'rust-lang-ci/rust') || ((github.ref == 'refs/heads/automation/bors/try') && github.repository == 'rust-lang/rust'))"
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- name: dist-x86_64-linux
|
|
env:
|
|
CODEGEN_BACKENDS: "llvm,cranelift"
|
|
os: ubuntu-20.04-16core-64gb
|
|
defaults:
|
|
run:
|
|
shell: "${{ contains(matrix.os, 'windows') && 'msys2 {0}' || 'bash' }}"
|
|
timeout-minutes: 600
|
|
runs-on: "${{ matrix.os }}"
|
|
steps:
|
|
- if: "contains(matrix.os, 'windows')"
|
|
uses: msys2/setup-msys2@v2.22.0
|
|
with:
|
|
msystem: "${{ contains(matrix.name, 'i686') && 'mingw32' || 'mingw64' }}"
|
|
update: false
|
|
release: true
|
|
path-type: inherit
|
|
install: "make dos2unix diffutils\n"
|
|
- name: disable git crlf conversion
|
|
run: git config --global core.autocrlf false
|
|
- name: checkout the source code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 2
|
|
- name: configure the PR in which the error message will be posted
|
|
run: "echo \"[CI_PR_NUMBER=$num]\""
|
|
env:
|
|
num: "${{ github.event.number }}"
|
|
if: "success() && !env.SKIP_JOB && github.event_name == 'pull_request'"
|
|
- name: add extra environment variables
|
|
run: src/ci/scripts/setup-environment.sh
|
|
env:
|
|
EXTRA_VARIABLES: "${{ toJson(matrix.env) }}"
|
|
if: success() && !env.SKIP_JOB
|
|
- name: decide whether to skip this job
|
|
run: src/ci/scripts/should-skip-this.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure the channel matches the target branch
|
|
run: src/ci/scripts/verify-channel.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: collect CPU statistics
|
|
run: src/ci/scripts/collect-cpu-stats.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: show the current environment
|
|
run: src/ci/scripts/dump-environment.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install awscli
|
|
run: src/ci/scripts/install-awscli.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install sccache
|
|
run: src/ci/scripts/install-sccache.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: select Xcode
|
|
run: src/ci/scripts/select-xcode.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install clang
|
|
run: src/ci/scripts/install-clang.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install tidy
|
|
run: src/ci/scripts/install-tidy.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install WIX
|
|
run: src/ci/scripts/install-wix.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: disable git crlf conversion
|
|
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: checkout submodules
|
|
run: src/ci/scripts/checkout-submodules.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install MSYS2
|
|
run: src/ci/scripts/install-msys2.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install MinGW
|
|
run: src/ci/scripts/install-mingw.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install ninja
|
|
run: src/ci/scripts/install-ninja.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: enable ipv6 on Docker
|
|
run: src/ci/scripts/enable-docker-ipv6.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: disable git crlf conversion
|
|
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure line endings are correct
|
|
run: src/ci/scripts/verify-line-endings.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure backported commits are in upstream branches
|
|
run: src/ci/scripts/verify-backported-commits.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure the stable version number is correct
|
|
run: src/ci/scripts/verify-stable-version-number.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: run the build
|
|
run: src/ci/scripts/run-build-from-ci.sh 2>&1
|
|
env:
|
|
AWS_ACCESS_KEY_ID: "${{ env.CACHES_AWS_ACCESS_KEY_ID }}"
|
|
AWS_SECRET_ACCESS_KEY: "${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.CACHES_AWS_ACCESS_KEY_ID)] }}"
|
|
TOOLSTATE_REPO_ACCESS_TOKEN: "${{ secrets.TOOLSTATE_REPO_ACCESS_TOKEN }}"
|
|
if: success() && !env.SKIP_JOB
|
|
- name: create github artifacts
|
|
run: src/ci/scripts/create-doc-artifacts.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: upload artifacts to github
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: "${{ env.DOC_ARTIFACT_NAME }}"
|
|
path: obj/artifacts/doc
|
|
if-no-files-found: ignore
|
|
retention-days: 5
|
|
if: success() && !env.SKIP_JOB
|
|
- name: upload artifacts to S3
|
|
run: src/ci/scripts/upload-artifacts.sh
|
|
env:
|
|
AWS_ACCESS_KEY_ID: "${{ env.ARTIFACTS_AWS_ACCESS_KEY_ID }}"
|
|
AWS_SECRET_ACCESS_KEY: "${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.ARTIFACTS_AWS_ACCESS_KEY_ID)] }}"
|
|
if: "success() && !env.SKIP_JOB && (github.event_name == 'push' || env.DEPLOY == '1' || env.DEPLOY_ALT == '1')"
|
|
master:
|
|
name: master
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
SCCACHE_BUCKET: rust-lang-ci-sccache2
|
|
DEPLOY_BUCKET: rust-lang-ci2
|
|
TOOLSTATE_REPO: "https://github.com/rust-lang-nursery/rust-toolstate"
|
|
TOOLSTATE_ISSUES_API_URL: "https://api.github.com/repos/rust-lang/rust/issues"
|
|
TOOLSTATE_PUBLISH: 1
|
|
CACHES_AWS_ACCESS_KEY_ID: AKIA46X5W6CZI5DHEBFL
|
|
ARTIFACTS_AWS_ACCESS_KEY_ID: AKIA46X5W6CZN24CBO55
|
|
AWS_REGION: us-west-1
|
|
CACHE_DOMAIN: ci-caches.rust-lang.org
|
|
if: "github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository == 'rust-lang-ci/rust'"
|
|
steps:
|
|
- name: checkout the source code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 2
|
|
- name: publish toolstate
|
|
run: src/ci/publish_toolstate.sh
|
|
shell: bash
|
|
env:
|
|
TOOLSTATE_REPO_ACCESS_TOKEN: "${{ secrets.TOOLSTATE_REPO_ACCESS_TOKEN }}"
|
|
if: success() && !env.SKIP_JOB
|
|
try-success:
|
|
needs:
|
|
- try
|
|
if: "success() && github.event_name == 'push' && (github.ref == 'refs/heads/try' || github.ref == 'refs/heads/try-perf') && github.repository == 'rust-lang-ci/rust'"
|
|
steps:
|
|
- name: mark the job as a success
|
|
run: exit 0
|
|
shell: bash
|
|
name: bors build finished
|
|
runs-on: ubuntu-latest
|
|
try-failure:
|
|
needs:
|
|
- try
|
|
if: "!success() && github.event_name == 'push' && (github.ref == 'refs/heads/try' || github.ref == 'refs/heads/try-perf') && github.repository == 'rust-lang-ci/rust'"
|
|
steps:
|
|
- name: mark the job as a failure
|
|
run: exit 1
|
|
shell: bash
|
|
name: bors build finished
|
|
runs-on: ubuntu-latest
|
|
auto-success:
|
|
needs:
|
|
- auto
|
|
if: "success() && github.event_name == 'push' && github.ref == 'refs/heads/auto' && github.repository == 'rust-lang-ci/rust'"
|
|
steps:
|
|
- name: mark the job as a success
|
|
run: exit 0
|
|
shell: bash
|
|
name: bors build finished
|
|
runs-on: ubuntu-latest
|
|
auto-failure:
|
|
needs:
|
|
- auto
|
|
if: "!success() && github.event_name == 'push' && github.ref == 'refs/heads/auto' && github.repository == 'rust-lang-ci/rust'"
|
|
steps:
|
|
- name: mark the job as a failure
|
|
run: exit 1
|
|
shell: bash
|
|
name: bors build finished
|
|
runs-on: ubuntu-latest
|