############################################################# # 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 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/github-actions/calculate-job-matrix.py >> $GITHUB_OUTPUT id: jobs job: name: "${{ matrix.name }}" needs: - calculate_matrix runs-on: "${{ matrix.os }}" defaults: run: shell: "${{ contains(matrix.os, 'windows') && 'msys2 {0}' || 'bash' }}" timeout-minutes: 600 env: CI_JOB_NAME: "${{ matrix.image }}" 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 continue-on-error: "${{ matrix.continue_on_error || false }}" strategy: matrix: include: "${{ fromJSON(needs.calculate_matrix.outputs.jobs) }}" if: "fromJSON(needs.calculate_matrix.outputs.jobs)[0] != null" 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() && github.event_name == 'pull_request'" - name: add extra environment variables run: src/ci/scripts/setup-environment.sh env: EXTRA_VARIABLES: "${{ toJson(matrix.env) }}" - name: ensure the channel matches the target branch run: src/ci/scripts/verify-channel.sh - name: collect CPU statistics run: src/ci/scripts/collect-cpu-stats.sh - name: show the current environment run: src/ci/scripts/dump-environment.sh - name: install awscli run: src/ci/scripts/install-awscli.sh - name: install sccache run: src/ci/scripts/install-sccache.sh - name: select Xcode run: src/ci/scripts/select-xcode.sh - name: install clang run: src/ci/scripts/install-clang.sh - name: install tidy run: src/ci/scripts/install-tidy.sh - name: install WIX run: src/ci/scripts/install-wix.sh - name: disable git crlf conversion run: src/ci/scripts/disable-git-crlf-conversion.sh - name: checkout submodules run: src/ci/scripts/checkout-submodules.sh - name: install MSYS2 run: src/ci/scripts/install-msys2.sh - name: install MinGW run: src/ci/scripts/install-mingw.sh - name: install ninja run: src/ci/scripts/install-ninja.sh - name: enable ipv6 on Docker run: src/ci/scripts/enable-docker-ipv6.sh - name: disable git crlf conversion run: src/ci/scripts/disable-git-crlf-conversion.sh - name: ensure line endings are correct run: src/ci/scripts/verify-line-endings.sh - name: ensure backported commits are in upstream branches run: src/ci/scripts/verify-backported-commits.sh - name: ensure the stable version number is correct run: src/ci/scripts/verify-stable-version-number.sh - 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 }}" - name: create github artifacts run: src/ci/scripts/create-doc-artifacts.sh - 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 - 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() && (github.event_name == 'push' || env.DEPLOY == '1' || env.DEPLOY_ALT == '1')" try-success: needs: - job 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: - job 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: - job if: "success() && github.event_name == 'push' && github.ref == 'refs/heads/auto' && github.repository == 'rust-lang-ci/rust'" steps: - name: publish toolstate run: src/ci/publish_toolstate.sh shell: bash env: TOOLSTATE_REPO_ACCESS_TOKEN: "${{ secrets.TOOLSTATE_REPO_ACCESS_TOKEN }}" name: bors build finished runs-on: ubuntu-latest auto-failure: needs: - job 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