Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

CI

CI #2834

Workflow file for this run

# GitHub Actions workflow generated by ci/actions-templates/gen-workflows.sh
# Do not edit this file in .github/workflows
name:CI
on:
merge_group:
pull_request:
branches:
-"*"
push:
branches:
-master
-stable
schedule:
-cron:"30 0 * * 1,3,5"# At 00:30 UTC on Monday, Wednesday, and Friday
jobs:
# This is ci/actions-templates/windows-builds-template.yaml
# Do not edit this file in .github/workflows
build-windows-pr:# job-name skip-master skip-stable
runs-on:${{ matrix.os || 'windows-latest' }}
if:${{ contains('["pull_request", "merge_group"]', github.event_name) }}# skip-master skip-stable
env:
RUSTFLAGS:-Ctarget-feature=+crt-static
RUST_MIN_STACK:16777216
permissions:
id-token:write
contents:read
strategy:
fail-fast:false
matrix:
mode:
-dev
-release
target:
-x86_64-pc-windows-msvc
-aarch64-pc-windows-msvc
-x86_64-pc-windows-gnu
include:
-target:x86_64-pc-windows-msvc
run_tests:YES
-target:x86_64-pc-windows-gnu
arch:x86_64
mingwdir:mingw64
gcc:x86_64-w64-mingw32-gcc
-target:aarch64-pc-windows-msvc
# Architecture of the rustup build that installs Rust in this workflow.
rustup_arch:aarch64
os:windows-11-arm
run_tests:YES
steps:
-uses:actions/checkout@v4
# v2 defaults to a shallow checkout, but we need at least to the previous tag
with:
fetch-depth:0
-name:Acquire tags for the repo
run:|
git fetch --no-tags --prune --depth=1 origin +refs/tags/*:refs/tags/*
-name:Display the current git status
run:|
git status
git describe
-name:Prep cargo dirs
run:|
New-Item "${env:USERPROFILE}\.cargo\registry" -ItemType Directory -Force
New-Item "${env:USERPROFILE}\.cargo\git" -ItemType Directory -Force
shell:powershell
-name:Install NASM
# Building `aws-lc-rs` for Windows MSVC depends on `NASM`.
# See: https://aws.github.io/aws-lc-rs/requirements/windows.html
uses:ilammy/setup-nasm@v1
if:matrix.mingwdir == ''
-name:Install mingw
uses:bwoodsend/setup-winlibs-action@v1
if:matrix.mingwdir != ''
with:
architecture:${{ matrix.arch }}
-name:Verify mingw gcc installation
shell:powershell
if:matrix.mingwdir != ''
run:|
Get-Command ${{ matrix.gcc }}
${{ matrix.gcc }} --version
-name:Set PATH
run:|
echo "${env:USERPROFILE}\.cargo\bin" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
echo "TARGET=${{ matrix.target }}" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
-name:Skip tests
if:matrix.run_tests == '' || matrix.mode == 'release'
run:|
echo "SKIP_TESTS=yes" >> $GITHUB_ENV
shell:bash
-name:Cache cargo registry and git trees
uses:actions/cache@v4
with:
path:|
~/.cargo/registry
~/.cargo/git
key:${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
-name:Get rustc commit hash
id:cargo-target-cache
run:|
echo "{rust_hash}={$(rustc -Vv | grep commit-hash | awk '{print $2}')}" >> $GITHUB_OUTPUT
shell:bash
-name:Cache cargo build
uses:actions/cache@v4
with:
path:target
key:${{ github.base_ref }}-${{ github.head_ref }}-${{ matrix.target }}-${{ matrix.mode }}-cargo-target-dir-${{ steps.cargo-target-cache.outputs.rust_hash }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys:${{ github.base_ref }}-${{ matrix.target }}-${{ matrix.mode }}-cargo-target-dir-${{ steps.cargo-target-cache.outputs.rust_hash }}-${{ hashFiles('**/Cargo.lock') }}
-name:Install Rustup using win.rustup.rs
env:
RUSTUP_ARCH:${{ matrix.rustup_arch || 'x86_64' }}
run:|
# Disable the download progress bar which can cause perf issues
$ProgressPreference = "SilentlyContinue"
Invoke-WebRequest "https://win.rustup.rs/${env:RUSTUP_ARCH}" -OutFile rustup-init.exe
.\rustup-init.exe -y --default-host=${env:RUSTUP_ARCH}-pc-windows-msvc --profile=minimal
del rustup-init.exe
shell:powershell
-name:Ensure stable toolchain is up to date
run:rustup update stable
shell:bash
-name:Install the target
run:|
rustup target install ${{ matrix.target }}
-name:Run a full build
env:
TARGET:${{ matrix.target }}
BUILD_PROFILE:${{ matrix.mode }}
run:bash ci/run.bash
-name:Run cargo check
if:matrix.mode != 'release'
env:
TARGET:${{ matrix.target }}
# os-specific code leads to lints escaping if we only run this in one target
run:|
cargo check --all --all-targets --features test
git ls-files -- '*.rs' | xargs touch
-name:Run cargo clippy
if:matrix.mode != 'release' && matrix.mingwdir == ''
env:
TARGET:${{ matrix.target }}
run:|
rustup component add clippy
cargo clippy --all-targets --all-features -- -D warnings
-name:Upload the built artifact
if:matrix.mode == 'release'
uses:actions/upload-artifact@v4
with:
name:rustup-init-${{ matrix.target }}
path:|
target/${{ matrix.target }}/release/rustup-init.exe
retention-days:7
-name:Ensure that awscli is installed
if:github.event_name == 'push' && matrix.mode == 'release' && (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/master')
run:|
Get-Command aws
aws --version
-name:Prepare the dist
if:github.event_name == 'push' && matrix.mode == 'release' && (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/master')
run:|
.\ci\prepare-deploy.ps1
shell:powershell
-name:Deploy build to dev-static dist tree for release team
if:github.event_name == 'push' && github.ref == 'refs/heads/stable' && matrix.mode == 'release'
run:|
aws --debug s3 cp --recursive dist s3://dev-static-rust-lang-org/rustup/dist
env:
AWS_ACCESS_KEY_ID:${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY:${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION:us-west-1
-name:Configure AWS credentials
if:github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.mode == 'release'
uses:aws-actions/configure-aws-credentials@v4
with:
role-to-assume:arn:aws:iam::890664054962:role/ci--rust-lang--rustup
aws-region:us-east-1
-name:Deploy build to rustup-builds bucket for release team
if:github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.mode == 'release'
run:|
aws --debug s3 cp --recursive dist s3://rustup-builds/${{ github.sha }}/dist
env:
AWS_DEFAULT_REGION:us-east-1
-name:Clear the cargo caches
run:|
cargo install cargo-cache --no-default-features --features ci-autoclean
cargo-cache
# This is ci/actions-templates/windows-builds-template.yaml
# Do not edit this file in .github/workflows
build-windows-master:# job-name skip-pr skip-stable
runs-on:${{ matrix.os || 'windows-latest' }}
if:${{ (github.event_name == 'push' && github.ref_name == 'master') }}# skip-pr skip-stable
env:
RUSTFLAGS:-Ctarget-feature=+crt-static
RUST_MIN_STACK:16777216
permissions:
id-token:write
contents:read
strategy:
fail-fast:false
matrix:
mode:
-dev
-release
target:
-x86_64-pc-windows-msvc
-aarch64-pc-windows-msvc
-x86_64-pc-windows-gnu
include:
-target:x86_64-pc-windows-msvc
run_tests:YES
-target:x86_64-pc-windows-gnu
arch:x86_64
mingwdir:mingw64
gcc:x86_64-w64-mingw32-gcc
-target:aarch64-pc-windows-msvc
# Architecture of the rustup build that installs Rust in this workflow.
rustup_arch:aarch64
os:windows-11-arm
run_tests:YES
steps:
-uses:actions/checkout@v4
# v2 defaults to a shallow checkout, but we need at least to the previous tag
with:
fetch-depth:0
-name:Acquire tags for the repo
run:|
git fetch --no-tags --prune --depth=1 origin +refs/tags/*:refs/tags/*
-name:Display the current git status
run:|
git status
git describe
-name:Prep cargo dirs
run:|
New-Item "${env:USERPROFILE}\.cargo\registry" -ItemType Directory -Force
New-Item "${env:USERPROFILE}\.cargo\git" -ItemType Directory -Force
shell:powershell
-name:Install NASM
# Building `aws-lc-rs` for Windows MSVC depends on `NASM`.
# See: https://aws.github.io/aws-lc-rs/requirements/windows.html
uses:ilammy/setup-nasm@v1
if:matrix.mingwdir == ''
-name:Install mingw
uses:bwoodsend/setup-winlibs-action@v1
if:matrix.mingwdir != ''
with:
architecture:${{ matrix.arch }}
-name:Verify mingw gcc installation
shell:powershell
if:matrix.mingwdir != ''
run:|
Get-Command ${{ matrix.gcc }}
${{ matrix.gcc }} --version
-name:Set PATH
run:|
echo "${env:USERPROFILE}\.cargo\bin" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
echo "TARGET=${{ matrix.target }}" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
-name:Skip tests
if:matrix.run_tests == '' || matrix.mode == 'release'
run:|
echo "SKIP_TESTS=yes" >> $GITHUB_ENV
shell:bash
-name:Cache cargo registry and git trees
uses:actions/cache@v4
with:
path:|
~/.cargo/registry
~/.cargo/git
key:${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
-name:Get rustc commit hash
id:cargo-target-cache
run:|
echo "{rust_hash}={$(rustc -Vv | grep commit-hash | awk '{print $2}')}" >> $GITHUB_OUTPUT
shell:bash
-name:Cache cargo build
uses:actions/cache@v4
with:
path:target
key:${{ github.base_ref }}-${{ github.head_ref }}-${{ matrix.target }}-${{ matrix.mode }}-cargo-target-dir-${{ steps.cargo-target-cache.outputs.rust_hash }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys:${{ github.base_ref }}-${{ matrix.target }}-${{ matrix.mode }}-cargo-target-dir-${{ steps.cargo-target-cache.outputs.rust_hash }}-${{ hashFiles('**/Cargo.lock') }}
-name:Install Rustup using win.rustup.rs
env:
RUSTUP_ARCH:${{ matrix.rustup_arch || 'x86_64' }}
run:|
# Disable the download progress bar which can cause perf issues
$ProgressPreference = "SilentlyContinue"
Invoke-WebRequest "https://win.rustup.rs/${env:RUSTUP_ARCH}" -OutFile rustup-init.exe
.\rustup-init.exe -y --default-host=${env:RUSTUP_ARCH}-pc-windows-msvc --profile=minimal
del rustup-init.exe
shell:powershell
-name:Ensure stable toolchain is up to date
run:rustup update stable
shell:bash
-name:Install the target
run:|
rustup target install ${{ matrix.target }}
-name:Run a full build
env:
TARGET:${{ matrix.target }}
BUILD_PROFILE:${{ matrix.mode }}
run:bash ci/run.bash
-name:Run cargo check
if:matrix.mode != 'release'
env:
TARGET:${{ matrix.target }}
# os-specific code leads to lints escaping if we only run this in one target
run:|
cargo check --all --all-targets --features test
git ls-files -- '*.rs' | xargs touch
-name:Run cargo clippy
if:matrix.mode != 'release' && matrix.mingwdir == ''
env:
TARGET:${{ matrix.target }}
run:|
rustup component add clippy
cargo clippy --all-targets --all-features -- -D warnings
-name:Upload the built artifact
if:matrix.mode == 'release'
uses:actions/upload-artifact@v4
with:
name:rustup-init-${{ matrix.target }}
path:|
target/${{ matrix.target }}/release/rustup-init.exe
retention-days:7
-name:Ensure that awscli is installed
if:github.event_name == 'push' && matrix.mode == 'release' && (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/master')
run:|
Get-Command aws
aws --version
-name:Prepare the dist
if:github.event_name == 'push' && matrix.mode == 'release' && (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/master')
run:|
.\ci\prepare-deploy.ps1
shell:powershell
-name:Deploy build to dev-static dist tree for release team
if:github.event_name == 'push' && github.ref == 'refs/heads/stable' && matrix.mode == 'release'
run:|
aws --debug s3 cp --recursive dist s3://dev-static-rust-lang-org/rustup/dist
env:
AWS_ACCESS_KEY_ID:${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY:${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION:us-west-1
-name:Configure AWS credentials
if:github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.mode == 'release'
uses:aws-actions/configure-aws-credentials@v4
with:
role-to-assume:arn:aws:iam::890664054962:role/ci--rust-lang--rustup
aws-region:us-east-1
-name:Deploy build to rustup-builds bucket for release team
if:github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.mode == 'release'
run:|
aws --debug s3 cp --recursive dist s3://rustup-builds/${{ github.sha }}/dist
env:
AWS_DEFAULT_REGION:us-east-1
-name:Clear the cargo caches
run:|
cargo install cargo-cache --no-default-features --features ci-autoclean
cargo-cache
# This is ci/actions-templates/windows-builds-template.yaml
# Do not edit this file in .github/workflows
build-windows-stable:# job-name skip-master skip-pr
runs-on:${{ matrix.os || 'windows-latest' }}
if:${{ github.event_name == 'push' && github.ref_name == 'stable' || github.event_name == 'schedule' }}# skip-pr skip-master
env:
RUSTFLAGS:-Ctarget-feature=+crt-static
RUST_MIN_STACK:16777216
permissions:
id-token:write
contents:read
strategy:
fail-fast:false
matrix:
mode:
-dev
-release
target:
-x86_64-pc-windows-msvc
-i686-pc-windows-msvc# skip-pr skip-master
-aarch64-pc-windows-msvc
-x86_64-pc-windows-gnu
-i686-pc-windows-gnu# skip-pr skip-master
include:
-target:x86_64-pc-windows-msvc
run_tests:YES
-target:x86_64-pc-windows-gnu
arch:x86_64
mingwdir:mingw64
gcc:x86_64-w64-mingw32-gcc
-target:aarch64-pc-windows-msvc
# Architecture of the rustup build that installs Rust in this workflow.
rustup_arch:aarch64
os:windows-11-arm
run_tests:YES
-target:i686-pc-windows-gnu# skip-pr skip-master
arch:i686# skip-pr skip-master
mingwdir:mingw32# skip-pr skip-master
gcc:i686-w64-mingw32-gcc# skip-pr skip-master
steps:
-uses:actions/checkout@v4
# v2 defaults to a shallow checkout, but we need at least to the previous tag
with:
fetch-depth:0
-name:Acquire tags for the repo
run:|
git fetch --no-tags --prune --depth=1 origin +refs/tags/*:refs/tags/*
-name:Display the current git status
run:|
git status
git describe
-name:Prep cargo dirs
run:|
New-Item "${env:USERPROFILE}\.cargo\registry" -ItemType Directory -Force
New-Item "${env:USERPROFILE}\.cargo\git" -ItemType Directory -Force
shell:powershell
-name:Install NASM
# Building `aws-lc-rs` for Windows MSVC depends on `NASM`.
# See: https://aws.github.io/aws-lc-rs/requirements/windows.html
uses:ilammy/setup-nasm@v1
if:matrix.mingwdir == ''
-name:Install mingw
uses:bwoodsend/setup-winlibs-action@v1
if:matrix.mingwdir != ''
with:
architecture:${{ matrix.arch }}
-name:Verify mingw gcc installation
shell:powershell
if:matrix.mingwdir != ''
run:|
Get-Command ${{ matrix.gcc }}
${{ matrix.gcc }} --version
-name:Set PATH
run:|
echo "${env:USERPROFILE}\.cargo\bin" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
echo "TARGET=${{ matrix.target }}" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
-name:Skip tests
if:matrix.run_tests == '' || matrix.mode == 'release'
run:|
echo "SKIP_TESTS=yes" >> $GITHUB_ENV
shell:bash
-name:Cache cargo registry and git trees
uses:actions/cache@v4
with:
path:|
~/.cargo/registry
~/.cargo/git
key:${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
-name:Get rustc commit hash
id:cargo-target-cache
run:|
echo "{rust_hash}={$(rustc -Vv | grep commit-hash | awk '{print $2}')}" >> $GITHUB_OUTPUT
shell:bash
-name:Cache cargo build
uses:actions/cache@v4
with:
path:target
key:${{ github.base_ref }}-${{ github.head_ref }}-${{ matrix.target }}-${{ matrix.mode }}-cargo-target-dir-${{ steps.cargo-target-cache.outputs.rust_hash }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys:${{ github.base_ref }}-${{ matrix.target }}-${{ matrix.mode }}-cargo-target-dir-${{ steps.cargo-target-cache.outputs.rust_hash }}-${{ hashFiles('**/Cargo.lock') }}
-name:Install Rustup using win.rustup.rs
env:
RUSTUP_ARCH:${{ matrix.rustup_arch || 'x86_64' }}
run:|
# Disable the download progress bar which can cause perf issues
$ProgressPreference = "SilentlyContinue"
Invoke-WebRequest "https://win.rustup.rs/${env:RUSTUP_ARCH}" -OutFile rustup-init.exe
.\rustup-init.exe -y --default-host=${env:RUSTUP_ARCH}-pc-windows-msvc --profile=minimal
del rustup-init.exe
shell:powershell
-name:Ensure stable toolchain is up to date
run:rustup update stable
shell:bash
-name:Install the target
run:|
rustup target install ${{ matrix.target }}
-name:Run a full build
env:
TARGET:${{ matrix.target }}
BUILD_PROFILE:${{ matrix.mode }}
run:bash ci/run.bash
-name:Run cargo check
if:matrix.mode != 'release'
env:
TARGET:${{ matrix.target }}
# os-specific code leads to lints escaping if we only run this in one target
run:|
cargo check --all --all-targets --features test
git ls-files -- '*.rs' | xargs touch
-name:Run cargo clippy
if:matrix.mode != 'release' && matrix.mingwdir == ''
env:
TARGET:${{ matrix.target }}
run:|
rustup component add clippy
cargo clippy --all-targets --all-features -- -D warnings
-name:Upload the built artifact
if:matrix.mode == 'release'
uses:actions/upload-artifact@v4
with:
name:rustup-init-${{ matrix.target }}
path:|
target/${{ matrix.target }}/release/rustup-init.exe
retention-days:7
-name:Ensure that awscli is installed
if:github.event_name == 'push' && matrix.mode == 'release' && (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/master')
run:|
Get-Command aws
aws --version
-name:Prepare the dist
if:github.event_name == 'push' && matrix.mode == 'release' && (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/master')
run:|
.\ci\prepare-deploy.ps1
shell:powershell
-name:Deploy build to dev-static dist tree for release team
if:github.event_name == 'push' && github.ref == 'refs/heads/stable' && matrix.mode == 'release'
run:|
aws --debug s3 cp --recursive dist s3://dev-static-rust-lang-org/rustup/dist
env:
AWS_ACCESS_KEY_ID:${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY:${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION:us-west-1
-name:Configure AWS credentials
if:github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.mode == 'release'
uses:aws-actions/configure-aws-credentials@v4
with:
role-to-assume:arn:aws:iam::890664054962:role/ci--rust-lang--rustup
aws-region:us-east-1
-name:Deploy build to rustup-builds bucket for release team
if:github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.mode == 'release'
run:|
aws --debug s3 cp --recursive dist s3://rustup-builds/${{ github.sha }}/dist
env:
AWS_DEFAULT_REGION:us-east-1
-name:Clear the cargo caches
run:|
cargo install cargo-cache --no-default-features --features ci-autoclean
cargo-cache
# This is ci/actions-templates/linux-builds-template.yaml
# Do not edit this file in .github/workflows
build-linux-pr:# job-name skip-master skip-stable
runs-on:${{ matrix.os || 'ubuntu-latest' }}
if:${{ contains('["pull_request", "merge_group"]', github.event_name) }}# skip-master skip-stable
permissions:
id-token:write
contents:read
strategy:
fail-fast:false
matrix:
mode:
-dev
-release
target:
-x86_64-unknown-linux-gnu
-armv7-unknown-linux-gnueabihf
-aarch64-linux-android
-aarch64-unknown-linux-gnu
include:
-target:x86_64-unknown-linux-gnu
run_tests:YES
#snap_arch: amd64
# We add an ARM-based host to the following target.
# We need to do that because rust's CI uses ARM-based runners
# to generate their Dockerfiles.
-target:aarch64-unknown-linux-gnu
os:ubuntu-24.04-arm
run_tests:YES
-target:armv7-unknown-linux-gnueabihf
#snap_arch: armhf
steps:
-name:Clone repo
uses:actions/checkout@v4
with:
# v2 defaults to a shallow checkout, but we need at least to the previous tag
fetch-depth:0
-name:Acquire tags for the repo
run:|
git fetch --no-tags --prune --depth=1 origin +refs/tags/*:refs/tags/*
-name:Display the current git status
run:|
git status
git describe
-name:Prep cargo dirs
run:|
mkdir -p ~/.cargo/{registry,git}
-name:Set environment variables appropriately for the build
run:|
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
echo "TARGET=${{ matrix.target }}" >> $GITHUB_ENV
-name:Skip tests
if:matrix.run_tests == '' || matrix.mode == 'release'
run:|
echo "SKIP_TESTS=yes" >> $GITHUB_ENV
-name:Cache cargo registry and git trees
uses:actions/cache@v4
with:
path:|
~/.cargo/registry
~/.cargo/git
key:${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
-name:Get rustc commit hash
id:cargo-target-cache
run:|
echo "{rust_hash}={$(rustc -Vv | grep commit-hash | awk '{print $2}')}" >> $GITHUB_OUTPUT
shell:bash
-name:Cache cargo build
uses:actions/cache@v4
with:
path:target
key:${{ github.base_ref }}-${{ github.head_ref }}-${{ matrix.target }}-${{ matrix.mode }}-cargo-target-dir-${{ steps.cargo-target-cache.outputs.rust_hash }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys:${{ github.base_ref }}-${{ matrix.target }}-${{ matrix.mode }}-cargo-target-dir-${{ steps.cargo-target-cache.outputs.rust_hash }}-${{ hashFiles('**/Cargo.lock') }}
-name:Install Rustup using ./rustup-init.sh
run:|
sh ./rustup-init.sh --default-toolchain=none --profile=minimal -y
-name:Ensure Stable is up to date
run:|
if rustc +stable -vV >/dev/null 2>/dev/null; then
rustup toolchain uninstall stable
fi
rustup toolchain install --profile=minimal stable
-name:Ensure we have our goal target installed
run:|
rustup target install "$TARGET"
-name:Determine which docker we need to run in
run:|
case "$TARGET" in
*-linux-android*) DOCKER=android ;; # Android uses a local docker image
*) DOCKER="$TARGET" ;;
esac
echo "DOCKER=$DOCKER" >> $GITHUB_ENV
-name:Fetch the base docker images from rust-lang/rust
run:bash ci/fetch-rust-docker.bash "${TARGET}"
-name:Maybe build a docker from there
run:|
if [ -f "ci/docker/$DOCKER/Dockerfile" ]; then
docker build -t "$DOCKER" -f "ci/docker/${DOCKER}/Dockerfile" .
fi
-name:Run the build within the docker image
env:
BUILD_PROFILE:${{ matrix.mode }}
run:|
mkdir -p "${PWD}/target"
chown -R "$(id -u)":"$(id -g)" "${PWD}/target"
docker run \
--entrypoint sh \
--env BUILD_PROFILE="${BUILD_PROFILE}" \
--env CARGO_HOME=/cargo \
--env CARGO_TARGET_DIR=/checkout/target \
--env LIBZ_SYS_STATIC=1 \
--env SKIP_TESTS="${SKIP_TESTS}" \
--env TARGET="${TARGET}" \
--env INSTALL_BINDGEN=1 \
--init \
--rm \
--tty \
--user "$(id -u)":"$(id -g)" \
--volume "$(rustc --print sysroot)":/rustc-sysroot:ro \
--volume "${HOME}/.cargo:/cargo" \
--volume "${PWD}":/checkout:ro \
--volume "${PWD}"/target:/checkout/target \
--workdir /checkout \
"${DOCKER}" \
-c 'PATH="${PATH}":/rustc-sysroot/bin bash ci/run.bash'
-name:Upload the built artifact
uses:actions/upload-artifact@v4
if:matrix.mode == 'release'
with:
name:rustup-init-${{ matrix.target }}
path:|
target/${{ matrix.target }}/release/rustup-init
retention-days:7
-name:Ensure that awscli is installed
if:github.event_name == 'push' && matrix.mode == 'release' && (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/master')
run:|
which aws
aws --version
-name:Prepare the dist
if:github.event_name == 'push' && matrix.mode == 'release' && (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/master')
run:|
bash ci/prepare-deploy.bash
-name:Deploy build to dev-static dist tree for release team
if:github.event_name == 'push' && github.ref == 'refs/heads/stable' && matrix.mode == 'release'
run:|
aws s3 cp --recursive deploy/ s3://dev-static-rust-lang-org/rustup/
env:
AWS_ACCESS_KEY_ID:${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY:${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION:us-west-1
-name:Configure AWS credentials
if:github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.mode == 'release'
uses:aws-actions/configure-aws-credentials@v4
with:
role-to-assume:arn:aws:iam::890664054962:role/ci--rust-lang--rustup
aws-region:us-east-1
-name:Deploy build to rustup-builds bucket for release team
if:github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.mode == 'release'
run:|
aws --debug s3 cp --recursive deploy/ s3://rustup-builds/${{ github.sha }}
env:
AWS_DEFAULT_REGION:us-east-1
-name:Clear the cargo caches
run:|
cargo install cargo-cache --no-default-features --features ci-autoclean
cargo-cache
# This is ci/actions-templates/linux-builds-template.yaml
# Do not edit this file in .github/workflows
build-linux-master:# job-name skip-pr skip-stable
runs-on:${{ matrix.os || 'ubuntu-latest' }}
if:${{ (github.event_name == 'push' && github.ref_name == 'master') }}# skip-pr skip-stable
permissions:
id-token:write
contents:read
strategy:
fail-fast:false
matrix:
mode:
-dev
-release
target:
-x86_64-unknown-linux-gnu
-armv7-unknown-linux-gnueabihf
-aarch64-linux-android
-aarch64-unknown-linux-gnu
-powerpc64-unknown-linux-gnu# skip-pr
-x86_64-unknown-linux-musl# skip-pr
include:
-target:x86_64-unknown-linux-gnu
run_tests:YES
#snap_arch: amd64
# We add an ARM-based host to the following target.
# We need to do that because rust's CI uses ARM-based runners
# to generate their Dockerfiles.
-target:aarch64-unknown-linux-gnu
os:ubuntu-24.04-arm
run_tests:YES
-target:armv7-unknown-linux-gnueabihf
#snap_arch: armhf
steps:
-name:Clone repo
uses:actions/checkout@v4
with:
# v2 defaults to a shallow checkout, but we need at least to the previous tag
fetch-depth:0
-name:Acquire tags for the repo
run:|
git fetch --no-tags --prune --depth=1 origin +refs/tags/*:refs/tags/*
-name:Display the current git status
run:|
git status
git describe
-name:Prep cargo dirs
run:|
mkdir -p ~/.cargo/{registry,git}
-name:Set environment variables appropriately for the build
run:|
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
echo "TARGET=${{ matrix.target }}" >> $GITHUB_ENV
-name:Skip tests
if:matrix.run_tests == '' || matrix.mode == 'release'
run:|
echo "SKIP_TESTS=yes" >> $GITHUB_ENV
-name:Cache cargo registry and git trees
uses:actions/cache@v4
with:
path:|
~/.cargo/registry
~/.cargo/git
key:${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
-name:Get rustc commit hash
id:cargo-target-cache
run:|
echo "{rust_hash}={$(rustc -Vv | grep commit-hash | awk '{print $2}')}" >> $GITHUB_OUTPUT
shell:bash
-name:Cache cargo build
uses:actions/cache@v4
with:
path:target
key:${{ github.base_ref }}-${{ github.head_ref }}-${{ matrix.target }}-${{ matrix.mode }}-cargo-target-dir-${{ steps.cargo-target-cache.outputs.rust_hash }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys:${{ github.base_ref }}-${{ matrix.target }}-${{ matrix.mode }}-cargo-target-dir-${{ steps.cargo-target-cache.outputs.rust_hash }}-${{ hashFiles('**/Cargo.lock') }}
-name:Install Rustup using ./rustup-init.sh
run:|
sh ./rustup-init.sh --default-toolchain=none --profile=minimal -y
-name:Ensure Stable is up to date
run:|
if rustc +stable -vV >/dev/null 2>/dev/null; then
rustup toolchain uninstall stable
fi
rustup toolchain install --profile=minimal stable
-name:Ensure we have our goal target installed
run:|
rustup target install "$TARGET"
-name:Determine which docker we need to run in
run:|
case "$TARGET" in
*-linux-android*) DOCKER=android ;; # Android uses a local docker image
*) DOCKER="$TARGET" ;;
esac
echo "DOCKER=$DOCKER" >> $GITHUB_ENV
-name:Fetch the base docker images from rust-lang/rust
run:bash ci/fetch-rust-docker.bash "${TARGET}"
-name:Maybe build a docker from there
run:|
if [ -f "ci/docker/$DOCKER/Dockerfile" ]; then
docker build -t "$DOCKER" -f "ci/docker/${DOCKER}/Dockerfile" .
fi
-name:Run the build within the docker image
env:
BUILD_PROFILE:${{ matrix.mode }}
run:|
mkdir -p "${PWD}/target"
chown -R "$(id -u)":"$(id -g)" "${PWD}/target"
docker run \
--entrypoint sh \
--env BUILD_PROFILE="${BUILD_PROFILE}" \
--env CARGO_HOME=/cargo \
--env CARGO_TARGET_DIR=/checkout/target \
--env LIBZ_SYS_STATIC=1 \
--env SKIP_TESTS="${SKIP_TESTS}" \
--env TARGET="${TARGET}" \
--env INSTALL_BINDGEN=1 \
--init \
--rm \
--tty \
--user "$(id -u)":"$(id -g)" \
--volume "$(rustc --print sysroot)":/rustc-sysroot:ro \
--volume "${HOME}/.cargo:/cargo" \
--volume "${PWD}":/checkout:ro \
--volume "${PWD}"/target:/checkout/target \
--workdir /checkout \
"${DOCKER}" \
-c 'PATH="${PATH}":/rustc-sysroot/bin bash ci/run.bash'
-name:Upload the built artifact
uses:actions/upload-artifact@v4
if:matrix.mode == 'release'
with:
name:rustup-init-${{ matrix.target }}
path:|
target/${{ matrix.target }}/release/rustup-init
retention-days:7
-name:Ensure that awscli is installed
if:github.event_name == 'push' && matrix.mode == 'release' && (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/master')
run:|
which aws
aws --version
-name:Prepare the dist
if:github.event_name == 'push' && matrix.mode == 'release' && (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/master')
run:|
bash ci/prepare-deploy.bash
-name:Deploy build to dev-static dist tree for release team
if:github.event_name == 'push' && github.ref == 'refs/heads/stable' && matrix.mode == 'release'
run:|
aws s3 cp --recursive deploy/ s3://dev-static-rust-lang-org/rustup/
env:
AWS_ACCESS_KEY_ID:${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY:${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION:us-west-1
-name:Configure AWS credentials
if:github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.mode == 'release'
uses:aws-actions/configure-aws-credentials@v4
with:
role-to-assume:arn:aws:iam::890664054962:role/ci--rust-lang--rustup
aws-region:us-east-1
-name:Deploy build to rustup-builds bucket for release team
if:github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.mode == 'release'
run:|
aws --debug s3 cp --recursive deploy/ s3://rustup-builds/${{ github.sha }}
env:
AWS_DEFAULT_REGION:us-east-1
-name:Clear the cargo caches
run:|
cargo install cargo-cache --no-default-features --features ci-autoclean
cargo-cache
# This is ci/actions-templates/linux-builds-template.yaml
# Do not edit this file in .github/workflows
build-linux-stable:# job-name skip-master skip-pr
runs-on:${{ matrix.os || 'ubuntu-latest' }}
if:${{ github.event_name == 'push' && github.ref_name == 'stable' || github.event_name == 'schedule' }}# skip-pr skip-master
permissions:
id-token:write
contents:read
strategy:
fail-fast:false
matrix:
mode:
-dev
-release
target:
-x86_64-unknown-linux-gnu
-armv7-unknown-linux-gnueabihf
-aarch64-linux-android
-aarch64-unknown-linux-gnu
-aarch64-unknown-linux-musl# skip-pr skip-master
-powerpc64-unknown-linux-gnu# skip-pr
-x86_64-unknown-linux-musl# skip-pr
-i686-unknown-linux-gnu# skip-pr skip-master
-arm-unknown-linux-gnueabi# skip-pr skip-master
-arm-unknown-linux-gnueabihf# skip-pr skip-master
-x86_64-pc-solaris# skip-pr skip-master
-x86_64-unknown-freebsd# skip-pr skip-master
-x86_64-unknown-netbsd# skip-pr skip-master
-x86_64-unknown-illumos# skip-pr skip-master
-powerpc-unknown-linux-gnu# skip-pr skip-master
-powerpc64le-unknown-linux-gnu# skip-pr skip-master
-powerpc64le-unknown-linux-musl# skip-pr skip-master
-s390x-unknown-linux-gnu# skip-pr skip-master
-sparcv9-sun-solaris# skip-pr skip-master
-arm-linux-androideabi# skip-pr skip-master
-armv7-linux-androideabi# skip-pr skip-master
-x86_64-linux-android# skip-pr skip-master
-riscv64gc-unknown-linux-gnu# skip-pr skip-master
-loongarch64-unknown-linux-gnu# skip-pr skip-master
-loongarch64-unknown-linux-musl# skip-pr skip-master
include:
-target:x86_64-unknown-linux-gnu
run_tests:YES
#snap_arch: amd64
-target:i686-unknown-linux-gnu# skip-pr skip-master
#snap_arch: i386 # skip-pr skip-master
# We add an ARM-based host to the following target.
# We need to do that because rust's CI uses ARM-based runners
# to generate their Dockerfiles.
-target:aarch64-unknown-linux-gnu
os:ubuntu-24.04-arm
run_tests:YES
-target:armv7-unknown-linux-gnueabihf
#snap_arch: armhf
-target:powerpc64le-unknown-linux-gnu# skip-pr skip-master
#snap_arch: ppc64el # skip-pr skip-master
-target:s390x-unknown-linux-gnu# skip-pr skip-master
#snap_arch: s390x # skip-pr skip-master
steps:
-name:Clone repo
uses:actions/checkout@v4
with:
# v2 defaults to a shallow checkout, but we need at least to the previous tag
fetch-depth:0
-name:Acquire tags for the repo
run:|
git fetch --no-tags --prune --depth=1 origin +refs/tags/*:refs/tags/*
-name:Display the current git status
run:|
git status
git describe
-name:Prep cargo dirs
run:|
mkdir -p ~/.cargo/{registry,git}
-name:Set environment variables appropriately for the build
run:|
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
echo "TARGET=${{ matrix.target }}" >> $GITHUB_ENV
-name:Skip tests
if:matrix.run_tests == '' || matrix.mode == 'release'
run:|
echo "SKIP_TESTS=yes" >> $GITHUB_ENV
-name:Cache cargo registry and git trees
uses:actions/cache@v4
with:
path:|
~/.cargo/registry
~/.cargo/git
key:${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
-name:Get rustc commit hash
id:cargo-target-cache
run:|
echo "{rust_hash}={$(rustc -Vv | grep commit-hash | awk '{print $2}')}" >> $GITHUB_OUTPUT
shell:bash
-name:Cache cargo build
uses:actions/cache@v4
with:
path:target
key:${{ github.base_ref }}-${{ github.head_ref }}-${{ matrix.target }}-${{ matrix.mode }}-cargo-target-dir-${{ steps.cargo-target-cache.outputs.rust_hash }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys:${{ github.base_ref }}-${{ matrix.target }}-${{ matrix.mode }}-cargo-target-dir-${{ steps.cargo-target-cache.outputs.rust_hash }}-${{ hashFiles('**/Cargo.lock') }}
-name:Install Rustup using ./rustup-init.sh
run:|
sh ./rustup-init.sh --default-toolchain=none --profile=minimal -y
-name:Ensure Stable is up to date
run:|
if rustc +stable -vV >/dev/null 2>/dev/null; then
rustup toolchain uninstall stable
fi
rustup toolchain install --profile=minimal stable
-name:Ensure we have our goal target installed
run:|
rustup target install "$TARGET"
-name:Determine which docker we need to run in
run:|
case "$TARGET" in
*-linux-android*) DOCKER=android ;; # Android uses a local docker image
*) DOCKER="$TARGET" ;;
esac
echo "DOCKER=$DOCKER" >> $GITHUB_ENV
-name:Fetch the base docker images from rust-lang/rust
run:bash ci/fetch-rust-docker.bash "${TARGET}"
-name:Maybe build a docker from there
run:|
if [ -f "ci/docker/$DOCKER/Dockerfile" ]; then
docker build -t "$DOCKER" -f "ci/docker/${DOCKER}/Dockerfile" .
fi
-name:Run the build within the docker image
env:
BUILD_PROFILE:${{ matrix.mode }}
run:|
mkdir -p "${PWD}/target"
chown -R "$(id -u)":"$(id -g)" "${PWD}/target"
docker run \
--entrypoint sh \
--env BUILD_PROFILE="${BUILD_PROFILE}" \
--env CARGO_HOME=/cargo \
--env CARGO_TARGET_DIR=/checkout/target \
--env LIBZ_SYS_STATIC=1 \
--env SKIP_TESTS="${SKIP_TESTS}" \
--env TARGET="${TARGET}" \
--env INSTALL_BINDGEN=1 \
--init \
--rm \
--tty \
--user "$(id -u)":"$(id -g)" \
--volume "$(rustc --print sysroot)":/rustc-sysroot:ro \
--volume "${HOME}/.cargo:/cargo" \
--volume "${PWD}":/checkout:ro \
--volume "${PWD}"/target:/checkout/target \
--workdir /checkout \
"${DOCKER}" \
-c 'PATH="${PATH}":/rustc-sysroot/bin bash ci/run.bash'
-name:Upload the built artifact
uses:actions/upload-artifact@v4
if:matrix.mode == 'release'
with:
name:rustup-init-${{ matrix.target }}
path:|
target/${{ matrix.target }}/release/rustup-init
retention-days:7
-name:Ensure that awscli is installed
if:github.event_name == 'push' && matrix.mode == 'release' && (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/master')
run:|
which aws
aws --version
-name:Prepare the dist
if:github.event_name == 'push' && matrix.mode == 'release' && (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/master')
run:|
bash ci/prepare-deploy.bash
-name:Deploy build to dev-static dist tree for release team
if:github.event_name == 'push' && github.ref == 'refs/heads/stable' && matrix.mode == 'release'
run:|
aws s3 cp --recursive deploy/ s3://dev-static-rust-lang-org/rustup/
env:
AWS_ACCESS_KEY_ID:${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY:${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION:us-west-1
-name:Configure AWS credentials
if:github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.mode == 'release'
uses:aws-actions/configure-aws-credentials@v4
with:
role-to-assume:arn:aws:iam::890664054962:role/ci--rust-lang--rustup
aws-region:us-east-1
-name:Deploy build to rustup-builds bucket for release team
if:github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.mode == 'release'
run:|
aws --debug s3 cp --recursive deploy/ s3://rustup-builds/${{ github.sha }}
env:
AWS_DEFAULT_REGION:us-east-1
-name:Clear the cargo caches
run:|
cargo install cargo-cache --no-default-features --features ci-autoclean
cargo-cache
# This is ci/actions-templates/macos-builds-template.yaml
# Do not edit this file in .github/workflows
build-macos-x86_64:# job-name skip-aarch64
runs-on:macos-13# skip-aarch64
env:# skip-aarch64
MACOSX_DEPLOYMENT_TARGET:10.12# skip-aarch64
permissions:
id-token:write
contents:read
strategy:
matrix:
mode:
-dev
-release
target:
-x86_64-apple-darwin# skip-aarch64
steps:
-uses:actions/checkout@v4
with:
# v2 defaults to a shallow checkout, but we need at least to the previous tag
fetch-depth:0
-name:Acquire tags for the repo
run:|
git fetch --no-tags --prune --depth=1 origin +refs/tags/*:refs/tags/*
-name:Display the current git status
run:|
git status
git describe
-name:Prep cargo dirs
run:|
mkdir -p ~/.cargo/{registry,git}
-name:Set environment variables appropriately for the build
run:|
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
echo "TARGET=${{ matrix.target }}" >> $GITHUB_ENV
echo "SKIP_TESTS=" >> $GITHUB_ENV
echo "LZMA_API_STATIC=1" >> $GITHUB_ENV
-name:Skip tests
if:matrix.mode == 'release'
run:|
echo "SKIP_TESTS=yes" >> $GITHUB_ENV
-name:Cache cargo registry and git trees
uses:actions/cache@v4
with:
path:|
~/.cargo/registry
~/.cargo/git
key:${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
-name:Get rustc commit hash
id:cargo-target-cache
run:|
echo "{rust_hash}={$(rustc -Vv | grep commit-hash | awk '{print $2}')}" >> $GITHUB_OUTPUT
shell:bash
-name:Cache cargo build
uses:actions/cache@v4
with:
path:target
key:${{ github.base_ref }}-${{ github.head_ref }}-${{ matrix.target }}-${{ matrix.mode }}-cargo-target-dir-${{ steps.cargo-target-cache.outputs.rust_hash }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys:${{ github.base_ref }}-${{ matrix.target }}-${{ matrix.mode }}-cargo-target-dir-${{ steps.cargo-target-cache.outputs.rust_hash }}-${{ hashFiles('**/Cargo.lock') }}
-name:Install Rustup using ./rustup-init.sh
run:|
sh ./rustup-init.sh --default-toolchain=none --profile=minimal -y
-name:Ensure Stable is up to date
run:|
if rustc +stable -vV >/dev/null 2>/dev/null; then
rustup toolchain uninstall stable
fi
rustup toolchain install --profile=minimal stable
-name:Ensure we have our goal target installed
run:|
rustup target install "$TARGET"
-name:Run a full build and test
env:
BUILD_PROFILE:${{ matrix.mode }}
run:bash ci/run.bash
-name:Dump dynamic link targets
if:matrix.mode == 'release'
run:|
otool -L target/${TARGET}/release/rustup-init
if otool -L target/${TARGET}/release/rustup-init | grep -q -F /usr/local/; then
echo >&2 "Unfortunately there are /usr/local things in the link. Fail."
exit 1
fi
-name:Upload the built artifact
if:matrix.mode == 'release'
uses:actions/upload-artifact@v4
with:
name:rustup-init-${{ matrix.target }}
path:|
target/${{ matrix.target }}/release/rustup-init
retention-days:7
-name:Ensure that awscli is installed
if:github.event_name == 'push' && matrix.mode == 'release' && (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/master')
run:|
brew install --overwrite awscli
which aws
aws --version
-name:Prepare the dist
if:github.event_name == 'push' && matrix.mode == 'release' && (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/master')
run:|
bash ci/prepare-deploy.bash
-name:Deploy build to dev-static dist tree for release team
if:github.event_name == 'push' && github.ref == 'refs/heads/stable' && matrix.mode == 'release'
run:|
aws s3 cp --recursive deploy/ s3://dev-static-rust-lang-org/rustup/
env:
AWS_ACCESS_KEY_ID:${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY:${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION:us-west-1
-name:Configure AWS credentials
if:github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.mode == 'release'
uses:aws-actions/configure-aws-credentials@v4
with:
role-to-assume:arn:aws:iam::890664054962:role/ci--rust-lang--rustup
aws-region:us-east-1
-name:Deploy build to rustup-builds bucket for release team
if:github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.mode == 'release'
run:|
aws --debug s3 cp --recursive deploy/ s3://rustup-builds/${{ github.sha }}
env:
AWS_DEFAULT_REGION:us-east-1
-name:Clear the cargo caches
run:|
cargo install cargo-cache --no-default-features --features ci-autoclean
cargo-cache
-name:Flush cache
# This is a workaround for a bug with GitHub Actions Cache that causes
# corrupt cache entries (particularly in the target directory). See
# https://github.com/actions/cache/issues/403 and
# https://github.com/rust-lang/cargo/issues/8603.
run:sudo /usr/sbin/purge
# This is ci/actions-templates/macos-builds-template.yaml
# Do not edit this file in .github/workflows
build-macos-aarch64:# job-name skip-x86_64
runs-on:macos-latest# skip-x86_64
env:# skip-x86_64
MACOSX_DEPLOYMENT_TARGET:11.0# skip-x86_64
permissions:
id-token:write
contents:read
strategy:
matrix:
mode:
-dev
-release
target:
-aarch64-apple-darwin# skip-x86_64
steps:
-uses:actions/checkout@v4
with:
# v2 defaults to a shallow checkout, but we need at least to the previous tag
fetch-depth:0
-name:Acquire tags for the repo
run:|
git fetch --no-tags --prune --depth=1 origin +refs/tags/*:refs/tags/*
-name:Display the current git status
run:|
git status
git describe
-name:Prep cargo dirs
run:|
mkdir -p ~/.cargo/{registry,git}
-name:Set environment variables appropriately for the build
run:|
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
echo "TARGET=${{ matrix.target }}" >> $GITHUB_ENV
echo "SKIP_TESTS=" >> $GITHUB_ENV
echo "LZMA_API_STATIC=1" >> $GITHUB_ENV
-name:Skip tests
if:matrix.mode == 'release'
run:|
echo "SKIP_TESTS=yes" >> $GITHUB_ENV
-name:Cache cargo registry and git trees
uses:actions/cache@v4
with:
path:|
~/.cargo/registry
~/.cargo/git
key:${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
-name:Get rustc commit hash
id:cargo-target-cache
run:|
echo "{rust_hash}={$(rustc -Vv | grep commit-hash | awk '{print $2}')}" >> $GITHUB_OUTPUT
shell:bash
-name:Cache cargo build
uses:actions/cache@v4
with:
path:target
key:${{ github.base_ref }}-${{ github.head_ref }}-${{ matrix.target }}-${{ matrix.mode }}-cargo-target-dir-${{ steps.cargo-target-cache.outputs.rust_hash }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys:${{ github.base_ref }}-${{ matrix.target }}-${{ matrix.mode }}-cargo-target-dir-${{ steps.cargo-target-cache.outputs.rust_hash }}-${{ hashFiles('**/Cargo.lock') }}
-name:Install Rustup using ./rustup-init.sh
run:|
sh ./rustup-init.sh --default-toolchain=none --profile=minimal -y
-name:Ensure Stable is up to date
run:|
if rustc +stable -vV >/dev/null 2>/dev/null; then
rustup toolchain uninstall stable
fi
rustup toolchain install --profile=minimal stable
-name:Ensure we have our goal target installed
run:|
rustup target install "$TARGET"
-name:Run a full build and test
env:
BUILD_PROFILE:${{ matrix.mode }}
run:bash ci/run.bash
-name:Dump dynamic link targets
if:matrix.mode == 'release'
run:|
otool -L target/${TARGET}/release/rustup-init
if otool -L target/${TARGET}/release/rustup-init | grep -q -F /usr/local/; then
echo >&2 "Unfortunately there are /usr/local things in the link. Fail."
exit 1
fi
-name:Upload the built artifact
if:matrix.mode == 'release'
uses:actions/upload-artifact@v4
with:
name:rustup-init-${{ matrix.target }}
path:|
target/${{ matrix.target }}/release/rustup-init
retention-days:7
-name:Ensure that awscli is installed
if:github.event_name == 'push' && matrix.mode == 'release' && (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/master')
run:|
brew install --overwrite awscli
which aws
aws --version
-name:Prepare the dist
if:github.event_name == 'push' && matrix.mode == 'release' && (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/master')
run:|
bash ci/prepare-deploy.bash
-name:Deploy build to dev-static dist tree for release team
if:github.event_name == 'push' && github.ref == 'refs/heads/stable' && matrix.mode == 'release'
run:|
aws s3 cp --recursive deploy/ s3://dev-static-rust-lang-org/rustup/
env:
AWS_ACCESS_KEY_ID:${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY:${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION:us-west-1
-name:Configure AWS credentials
if:github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.mode == 'release'
uses:aws-actions/configure-aws-credentials@v4
with:
role-to-assume:arn:aws:iam::890664054962:role/ci--rust-lang--rustup
aws-region:us-east-1
-name:Deploy build to rustup-builds bucket for release team
if:github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.mode == 'release'
run:|
aws --debug s3 cp --recursive deploy/ s3://rustup-builds/${{ github.sha }}
env:
AWS_DEFAULT_REGION:us-east-1
-name:Clear the cargo caches
run:|
cargo install cargo-cache --no-default-features --features ci-autoclean
cargo-cache
-name:Flush cache
# This is a workaround for a bug with GitHub Actions Cache that causes
# corrupt cache entries (particularly in the target directory). See
# https://github.com/actions/cache/issues/403 and
# https://github.com/rust-lang/cargo/issues/8603.
run:sudo /usr/sbin/purge
# This is ci/actions-templates/freebsd-builds-template.yaml
# Do not edit this file in .github/workflows
build-freebsd-master:# job-name skip-stable
runs-on:ubuntu-latest
if:${{ (github.event_name == 'push' && github.ref_name == 'master') || github.event_name == 'schedule' }}# skip-stable
steps:
-uses:actions/checkout@v4
with:
# v2 defaults to a shallow checkout, but we need at least to the previous tag
fetch-depth:0
-name:Acquire tags for the repo
run:|
git fetch --no-tags --prune --depth=1 origin +refs/tags/*:refs/tags/*
-name:Run a full build
uses:vmactions/freebsd-vm@v1
with:
release:13.2
usesh:true
copyback:false
prepare:|
pkg install -y git gmake bash sudo \
`# The following packages are required by 'aws-lc-rs':` \
cmake-core llvm-devel-lite rust-bindgen-cli
run:|
echo "========="
echo "create non-root user and log into it"
pw group add -n tester
pw user add -n tester -g tester -s `which bash`
pw user mod tester -d `pwd`
chown -R tester .
sudo -u tester bash ci/freebsd/script.bash
# This is ci/actions-templates/freebsd-builds-template.yaml
# Do not edit this file in .github/workflows
build-freebsd-stable:# job-name skip-master
runs-on:ubuntu-latest
if:${{ github.event_name == 'push' && github.ref_name == 'stable' }}# skip-master
steps:
-uses:actions/checkout@v4
with:
# v2 defaults to a shallow checkout, but we need at least to the previous tag
fetch-depth:0
-name:Acquire tags for the repo
run:|
git fetch --no-tags --prune --depth=1 origin +refs/tags/*:refs/tags/*
-name:Run a full build
uses:vmactions/freebsd-vm@v1
with:
release:13.2
usesh:true
copyback:false
prepare:|
pkg install -y git gmake bash sudo \
`# The following packages are required by 'aws-lc-rs':` \
cmake-core llvm-devel-lite rust-bindgen-cli
run:|
echo "========="
echo "create non-root user and log into it"
pw group add -n tester
pw user add -n tester -g tester -s `which bash`
pw user mod tester -d `pwd`
chown -R tester .
sudo -u tester bash ci/freebsd/script.bash
# This is ci/actions-templates/centos-fmt-clippy.yaml
# Do not edit this file in .github/workflows
check:# job-name
runs-on:ubuntu-latest
strategy:
fail-fast:false
steps:
-name:Clone repo
uses:actions/checkout@v4
with:
# v2 defaults to a shallow checkout, but we need at least to the previous tag
fetch-depth:0
-name:Acquire tags for the repo
run:|
git fetch --no-tags --prune --depth=1 origin +refs/tags/*:refs/tags/*
-name:Display the current git status
run:|
git status
git describe
-name:Run CI workflow generation checks
run:|
./ci/actions-templates/gen-workflows.sh
git diff --exit-code
-name:Prep cargo dirs
run:|
mkdir -p ~/.cargo/{registry,git}
-name:Set environment variables appropriately for the build
run:|
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
-name:Cache cargo registry and git trees
uses:actions/cache@v4
with:
path:|
~/.cargo/registry
~/.cargo/git
key:${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
-name:Get rustc commit hash
id:cargo-target-cache
run:|
echo "{rust_hash}={$(rustc -Vv | grep commit-hash | awk '{print $2}')}" >> $GITHUB_OUTPUT
shell:bash
-name:Cache cargo build
uses:actions/cache@v4
with:
path:target
key:${{ github.base_ref }}-${{ github.head_ref }}-${{ runner.os }}-cargo-clippy-target-dir-${{ steps.cargo-target-cache.outputs.rust_hash }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys:${{ github.base_ref }}-${{ runner.os }}-cargo-clippy-target-dir-${{ steps.cargo-target-cache.outputs.rust_hash }}-${{ hashFiles('**/Cargo.lock') }}
-name:Install Rustup using ./rustup-init.sh
run:|
sh ./rustup-init.sh --default-toolchain=stable --profile=minimal -c=rustfmt -c=clippy -y
-name:Run the centos check within the docker image
run:|
docker run \
--volume "$PWD":/checkout:ro \
--workdir /checkout \
--tty \
--init \
--rm \
centos:7 \
sh ./ci/raw_init.sh
-name:Run shell checks
run:|
shellcheck -x -s dash -- rustup-init.sh
git ls-files -- '*.sh' | xargs shellcheck -x -s dash
git ls-files -- '*.bash' | xargs shellcheck -x -s bash
-name:Install taplo
uses:taiki-e/install-action@v2
with:
tool:taplo-cli
-name:Run TOML formatting checks
run:|
taplo fmt
git diff --exit-code
-name:Run Rust formatting checks
run:|
cargo fmt --all --check
-name:Run cargo check and clippy
run:|
cargo check --all --all-targets --features test
git ls-files -- '*.rs' | xargs touch
cargo clippy --all-targets --all-features -- -D warnings
# This is ci/actions-templates/all-features-template.yaml
# Do not edit this file in .github/workflows
#
# This is an additional workflow to test building with all feature combinations.
# Unlike our main workflows, this doesn't self-test the rustup install scripts,
# nor run on the rust docker images. This permits a smaller workflow without the
# templating and so on.
build-all-features:# job-name
runs-on:${{ matrix.os }}
if:${{ contains('["pull_request", "merge_group"]', github.event_name) }}
strategy:
fail-fast:false
matrix:
include:
# Might add more targets in future.
-os:ubuntu-latest
target:x86_64-unknown-linux-gnu
-os:windows-latest
target:x86_64-pc-windows-msvc
steps:
-name:Clone repo
uses:actions/checkout@v4
-name:Install rustup stable
run:rustup toolchain install stable --profile minimal
-name:Install Protoc
uses:arduino/setup-protoc@v1
with:
version:"3.x"
repo-token:${{ secrets.GITHUB_TOKEN }}
-name:Install OpenSSL
if:${{ contains(matrix.os, 'windows') }}
run:|
Get-Command openssl
openssl version
echo "OPENSSL_LIB_DIR=C:/Program Files/OpenSSL/lib" >> $env:GITHUB_ENV
echo "OPENSSL_DIR=C:/Program Files/OpenSSL/" >> $env:GITHUB_ENV
echo "OPENSSL_INCLUDE_DIR=C:/Program Files/OpenSSL/include" >> $env:GITHUB_ENV
-name:Install NASM
# Building `aws-lc-rs` for Windows MSVC depends on `NASM`.
# See: https://aws.github.io/aws-lc-rs/requirements/windows.html
uses:ilammy/setup-nasm@v1
if:${{ contains(matrix.os, 'windows') }}
-name:Set environment variables appropriately for the build
shell:bash
run:|
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
echo "TARGET=${{ matrix.target }}" >> $GITHUB_ENV
-name:Cache Cargo
uses:Swatinem/rust-cache@v2
-name:Install cargo-all-features
shell:bash
run:which cargo-check-all-features || cargo install cargo-all-features --git https://github.com/rbtcollins/cargo-all-features.git
-name:Ensure we have our goal target installed
run:|
rustup target install ${{ matrix.target }}
-name:Build every combination
env:
RUSTFLAGS:-D warnings
run:|
cargo check-all-features --root-only
# This is ci/actions-templates/test-docs-templates.yaml
# Do not edit this file in .github/workflows
#
# Builds docs for both stable and master branches.
# stable is placed in the root of the gh-pages branch, while master is placed at /devel
doc:# job-name
runs-on:ubuntu-latest
steps:
-uses:actions/checkout@v4
with:
fetch-depth:0
-name:Install mdbook
uses:taiki-e/install-action@v2
env:
# renovate: datasource=crate depName=mdbook
MDBOOK_VERSION:"0.4.43"
with:
tool:mdbook@${{ env.MDBOOK_VERSION }}
-name:Build user-guide (stable)
if:${{ !contains('["pull_request", "merge_group"]', github.event_name) }}
run:|
git checkout stable
# Support both old and new directory structure during the transition
cd doc/user-guide || cd doc
mdbook build
mv book ${{ runner.temp }}
-name:Build user-guide (master)
run:|
git checkout master
cd doc/user-guide
mdbook build
mkdir -p ${{ runner.temp }}/book
mv book ${{ runner.temp }}/book/devel
-name:Build dev-guide (master)
run:|
git checkout master
cd doc/dev-guide
mdbook build
mkdir -p ${{ runner.temp }}/book
mv book ${{ runner.temp }}/book/dev-guide
-name:Deploy to GitHub
if:${{ !contains('["pull_request", "merge_group"]', github.event_name) }}
run:|
cd ${{ runner.temp }}/book
git init
git config user.name "Deploy from CI"
git config user.email ""
git add . .nojekyll
git commit -m "Deploy $GITHUB_REF $GITHUB_SHA to gh-pages"
git remote add origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY
git push --force --set-upstream origin master:gh-pages
# This is ci/actions-templates/conclusion-template.yaml
# Do not edit this file in .github/workflows
conclusion:
# https://github.com/PyO3/pyo3/blob/42601f3af94242b017402b763a495798a92da8f8/.github/workflows/ci.yml#L452-L472
if:always()
runs-on:ubuntu-latest
steps:
-name:Result
run:|
jq -C <<< "${needs}"
# Check if all needs were successful or skipped.
"$(jq -r 'all(.result as $result | (["success", "skipped"] | contains([$result])))' <<< "${needs}")"
env:
needs:${{ toJson(needs) }}
needs:
-build-all-features
-check
-build-freebsd-master
-build-freebsd-stable
-build-linux-pr
-build-linux-master
-build-linux-stable
-build-macos-aarch64
-build-macos-x86_64
-doc
-build-windows-pr
-build-windows-master
-build-windows-stable

[8]ページ先頭

©2009-2025 Movatter.jp