From 2d3cc2e30db0dd42458853067775c99d49124fc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Ber=C3=A1nek?= Date: Thu, 4 Apr 2024 12:21:24 +0200 Subject: [PATCH] CI: allow running arbitrary try builds --- .github/workflows/ci.yml | 566 +++++++++++++++++++---------------- src/ci/github-actions/ci.yml | 174 ++++++----- 2 files changed, 397 insertions(+), 343 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f1c87b0a76e15..117ea85552fba 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -54,17 +54,17 @@ jobs: include: - name: mingw-check os: ubuntu-20.04-4core-16gb - env: {} + env: { } - name: mingw-check-tidy os: ubuntu-20.04-4core-16gb - env: {} + env: { } - name: x86_64-gnu-llvm-17 env: ENABLE_GCC_CODEGEN: "1" os: ubuntu-20.04-16core-64gb - name: x86_64-gnu-tools os: ubuntu-20.04-16core-64gb - env: {} + env: { } defaults: run: shell: "${{ contains(matrix.os, 'windows') && 'msys2 {0}' || 'bash' }}" @@ -206,65 +206,65 @@ jobs: - linux - name: arm-android os: ubuntu-20.04-8core-32gb - env: {} + env: { } - name: armhf-gnu os: ubuntu-20.04-8core-32gb - env: {} + 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: {} + env: { } - name: dist-arm-linux os: ubuntu-20.04-16core-64gb - env: {} + env: { } - name: dist-armhf-linux os: ubuntu-20.04-8core-32gb - env: {} + env: { } - name: dist-armv7-linux os: ubuntu-20.04-8core-32gb - env: {} + env: { } - name: dist-i586-gnu-i586-i686-musl os: ubuntu-20.04-8core-32gb - env: {} + env: { } - name: dist-i686-linux os: ubuntu-20.04-8core-32gb - env: {} + env: { } - name: dist-loongarch64-linux os: ubuntu-20.04-8core-32gb - env: {} + env: { } - name: dist-ohos os: ubuntu-20.04-8core-32gb - env: {} + env: { } - name: dist-powerpc-linux os: ubuntu-20.04-8core-32gb - env: {} + env: { } - name: dist-powerpc64-linux os: ubuntu-20.04-8core-32gb - env: {} + env: { } - name: dist-powerpc64le-linux os: ubuntu-20.04-8core-32gb - env: {} + env: { } - name: dist-riscv64-linux os: ubuntu-20.04-8core-32gb - env: {} + env: { } - name: dist-s390x-linux os: ubuntu-20.04-8core-32gb - env: {} + env: { } - name: dist-various-1 os: ubuntu-20.04-8core-32gb - env: {} + env: { } - name: dist-various-2 os: ubuntu-20.04-8core-32gb - env: {} + env: { } - name: dist-x86_64-freebsd os: ubuntu-20.04-8core-32gb - env: {} + env: { } - name: dist-x86_64-illumos os: ubuntu-20.04-8core-32gb - env: {} + env: { } - name: dist-x86_64-linux env: CODEGEN_BACKENDS: "llvm,cranelift" @@ -280,22 +280,22 @@ jobs: os: ubuntu-20.04-8core-32gb - name: dist-x86_64-netbsd os: ubuntu-20.04-8core-32gb - env: {} + env: { } - name: i686-gnu os: ubuntu-20.04-8core-32gb - env: {} + env: { } - name: i686-gnu-nopt os: ubuntu-20.04-8core-32gb - env: {} + env: { } - name: mingw-check os: ubuntu-20.04-4core-16gb - env: {} + env: { } - name: test-various os: ubuntu-20.04-8core-32gb - env: {} + env: { } - name: x86_64-gnu os: ubuntu-20.04-4core-16gb - env: {} + env: { } - name: x86_64-gnu-stable env: IMAGE: x86_64-gnu @@ -304,17 +304,17 @@ jobs: os: ubuntu-20.04-4core-16gb - name: x86_64-gnu-aux os: ubuntu-20.04-4core-16gb - env: {} + 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: {} + env: { } - name: x86_64-gnu-distcheck os: ubuntu-20.04-8core-32gb - env: {} + env: { } - name: x86_64-gnu-llvm-18 env: RUST_BACKTRACE: 1 @@ -325,7 +325,7 @@ jobs: os: ubuntu-20.04-8core-32gb - name: x86_64-gnu-nopt os: ubuntu-20.04-4core-16gb - env: {} + env: { } - name: x86_64-gnu-tools env: DEPLOY_TOOLSTATES_JSON: toolstates-linux.json @@ -475,120 +475,6 @@ jobs: 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 - 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: @@ -606,128 +492,286 @@ jobs: 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'))" + if: "( ( contains(github.event.head_commit.message, 'bors-workflow') && contains(github.event.head_commit.message, format('bors-workflow: {0}', matrix.name)) ) || ( !contains(github.event.head_commit.message, 'bors-workflow') && matrix.name == 'dist-x86_64-linux' )) &&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: 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 - 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 - 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')" + - 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 master: name: master runs-on: ubuntu-latest diff --git a/src/ci/github-actions/ci.yml b/src/ci/github-actions/ci.yml index 80e2357440432..4255c5ec77366 100644 --- a/src/ci/github-actions/ci.yml +++ b/src/ci/github-actions/ci.yml @@ -74,7 +74,7 @@ x--expand-yaml-anchors--remove: CACHE_DOMAIN: ci-caches-gha.rust-lang.org - &base-job - env: {} + env: { } - &job-linux-4c os: ubuntu-20.04-4core-16gb @@ -105,7 +105,7 @@ x--expand-yaml-anchors--remove: <<: *base-job - &job-aarch64-linux - os: [self-hosted, ARM64, linux] + os: [ self-hosted, ARM64, linux ] - &step if: success() && !env.SKIP_JOB @@ -304,73 +304,7 @@ x--expand-yaml-anchors--remove: shell: bash <<: *base-outcome-job -########################### -# Builders definition # -########################### - -name: CI -on: - push: - branches: - - auto - - try - - try-perf - - automation/bors/try - - master - pull_request: - branches: - - "**" - -permissions: - contents: read - packages: write - -defaults: - run: - # On Linux, macOS, and Windows, use the system-provided bash as the default - # shell. (This should only make a difference on Windows, where the default - # shell is PowerShell.) - shell: bash - -concurrency: - # For a given workflow, if we push to the same branch, cancel all previous builds on that branch. - # We add an exception for try builds (try branch) and unrolled rollup builds (try-perf), which - # are all triggered on the same branch, but which should be able to run concurrently. - group: ${{ github.workflow }}-${{ ((github.ref == 'refs/heads/try' || github.ref == 'refs/heads/try-perf') && github.sha) || github.ref }} - cancel-in-progress: true - -jobs: - pr: - <<: *base-ci-job - name: PR - ${{ matrix.name }} - env: - <<: [*shared-ci-variables, *public-variables] - PR_CI_JOB: 1 - if: github.event_name == 'pull_request' - continue-on-error: ${{ matrix.name == 'mingw-check-tidy' }} - strategy: - matrix: - include: - - name: mingw-check - <<: *job-linux-4c - - - name: mingw-check-tidy - <<: *job-linux-4c - - - name: x86_64-gnu-llvm-17 - env: - ENABLE_GCC_CODEGEN: "1" - <<: *job-linux-16c - - - name: x86_64-gnu-tools - <<: *job-linux-16c - - auto: - <<: *base-ci-job - name: auto - ${{ matrix.name }} - env: - <<: [*shared-ci-variables, *prod-variables] - if: github.event_name == 'push' && github.ref == 'refs/heads/auto' && github.repository == 'rust-lang-ci/rust' + - &full-matrix strategy: matrix: include: @@ -749,28 +683,104 @@ jobs: SCRIPT: python x.py dist bootstrap --include-default-paths <<: *job-windows-8c - try: +########################### +# Builders definition # +########################### + +name: CI +on: + push: + branches: + - auto + - try + - try-perf + - automation/bors/try + - master + pull_request: + branches: + - "**" + +permissions: + contents: read + packages: write + +defaults: + run: + # On Linux, macOS, and Windows, use the system-provided bash as the default + # shell. (This should only make a difference on Windows, where the default + # shell is PowerShell.) + shell: bash + +concurrency: + # For a given workflow, if we push to the same branch, cancel all previous builds on that branch. + # We add an exception for try builds (try branch) and unrolled rollup builds (try-perf), which + # are all triggered on the same branch, but which should be able to run concurrently. + group: ${{ github.workflow }}-${{ ((github.ref == 'refs/heads/try' || github.ref == 'refs/heads/try-perf') && github.sha) || github.ref }} + cancel-in-progress: true + +jobs: + pr: <<: *base-ci-job - name: try - ${{ matrix.name }} + name: PR - ${{ matrix.name }} env: - DIST_TRY_BUILD: 1 - <<: [*shared-ci-variables, *prod-variables] - 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')) + <<: [ *shared-ci-variables, *public-variables ] + PR_CI_JOB: 1 + if: github.event_name == 'pull_request' + continue-on-error: ${{ matrix.name == 'mingw-check-tidy' }} strategy: matrix: include: - - &dist-x86_64-linux - name: dist-x86_64-linux + - name: mingw-check + <<: *job-linux-4c + + - name: mingw-check-tidy + <<: *job-linux-4c + + - name: x86_64-gnu-llvm-17 env: - CODEGEN_BACKENDS: llvm,cranelift + ENABLE_GCC_CODEGEN: "1" + <<: *job-linux-16c + + - name: x86_64-gnu-tools <<: *job-linux-16c + auto: + <<: *base-ci-job + name: auto - ${{ matrix.name }} + env: + <<: [ *shared-ci-variables, *prod-variables ] + if: github.event_name == 'push' && github.ref == 'refs/heads/auto' && github.repository == 'rust-lang-ci/rust' + <<: *full-matrix + + try: + <<: *base-ci-job + name: try - ${{ matrix.name }} + env: + DIST_TRY_BUILD: 1 + <<: [ *shared-ci-variables, *prod-variables ] + if: | + ( + ( + contains(github.event.head_commit.message, 'bors-workflow') && + contains(github.event.head_commit.message, format('bors-workflow: {0}', matrix.name)) + ) || + ( + !contains(github.event.head_commit.message, 'bors-workflow') && + matrix.name == 'dist-x86_64-linux' + ) + ) && + 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') + ) + <<: *full-matrix master: name: master runs-on: ubuntu-latest env: - <<: [*prod-variables] + <<: [ *prod-variables ] if: github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository == 'rust-lang-ci/rust' steps: - name: checkout the source code @@ -789,18 +799,18 @@ jobs: # build completed, as there is no practical way to detect when a workflow is # successful listening to webhooks only. try-success: - needs: [try] + 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'" <<: *base-success-job try-failure: - needs: [try] + 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'" <<: *base-failure-job auto-success: - needs: [auto] + needs: [ auto ] if: "success() && github.event_name == 'push' && github.ref == 'refs/heads/auto' && github.repository == 'rust-lang-ci/rust'" <<: *base-success-job auto-failure: - needs: [auto] + needs: [ auto ] if: "!success() && github.event_name == 'push' && github.ref == 'refs/heads/auto' && github.repository == 'rust-lang-ci/rust'" <<: *base-failure-job