Replace local detect-runner-os action with external detect-versions@v1 to reduce custom action maintenance. Add architecture detection for future cross-platform support and namespace all cache keys with "continuwuity-" prefix to prevent collisions with other projects on shared runners. Updates cache mount IDs in Dockerfiles to match the new namespacing convention, ensuring consistent cache isolation across CI and Docker builds.
63 lines
2.3 KiB
YAML
63 lines
2.3 KiB
YAML
name: rust-toolchain
|
|
description: |
|
|
Install a Rust toolchain using rustup.
|
|
See https://rust-lang.github.io/rustup/concepts/toolchains.html#toolchain-specification
|
|
for more information about toolchains.
|
|
inputs:
|
|
toolchain:
|
|
description: |
|
|
Rust toolchain name.
|
|
See https://rust-lang.github.io/rustup/concepts/toolchains.html#toolchain-specification
|
|
required: false
|
|
target:
|
|
description: Target triple to install for this toolchain
|
|
required: false
|
|
components:
|
|
description: Space-separated list of components to be additionally installed for a new toolchain
|
|
required: false
|
|
outputs:
|
|
rustc_version:
|
|
description: The rustc version installed
|
|
value: ${{ steps.rustc-version.outputs.version }}
|
|
rustup_version:
|
|
description: The rustup version installed
|
|
value: ${{ steps.rustup-version.outputs.version }}
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- name: Check if rustup is already installed
|
|
shell: bash
|
|
id: rustup-version
|
|
run: |
|
|
echo "version=$(rustup --version)" >> $GITHUB_OUTPUT
|
|
- name: Cache rustup toolchains
|
|
if: steps.rustup-version.outputs.version == ''
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.rustup
|
|
!~/.rustup/tmp
|
|
!~/.rustup/downloads
|
|
# Requires repo to be cloned if toolchain is not specified
|
|
key: continuwuity-${{ runner.os }}-rustup-${{ inputs.toolchain || hashFiles('**/rust-toolchain.toml') }}
|
|
- name: Install Rust toolchain
|
|
if: steps.rustup-version.outputs.version == ''
|
|
shell: bash
|
|
run: |
|
|
if ! command -v rustup &> /dev/null ; then
|
|
curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused -fsSL "https://sh.rustup.rs" | sh -s -- --default-toolchain none -y
|
|
echo "${CARGO_HOME:-$HOME/.cargo}/bin" >> $GITHUB_PATH
|
|
fi
|
|
- shell: bash
|
|
run: |
|
|
set -x
|
|
${{ inputs.toolchain && format('rustup override set {0}', inputs.toolchain) }}
|
|
${{ inputs.target && format('rustup target add {0}', inputs.target) }}
|
|
${{ inputs.components && format('rustup component add {0}', inputs.components) }}
|
|
cargo --version
|
|
rustc --version
|
|
- id: rustc-version
|
|
shell: bash
|
|
run: |
|
|
echo "version=$(rustc --version)" >> $GITHUB_OUTPUT
|