Expand Yoke to cover cases where generics can borrow #13797
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This file is part of ICU4X. For terms of use, please see the file | |
# called LICENSE at the top level of the ICU4X source tree | |
# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). | |
name: Build and Test | |
# Each of these jobs job maps to a `ci-job-foo` entry in Makefile.toml. | |
# If adding further CI jobs, please add them as makefile targets as well, | |
# and list them under `ci-all`. | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: '*' | |
workflow_dispatch: | |
inputs: | |
nightly: | |
description: "Test on latest nightly" | |
required: true | |
default: false | |
type: boolean | |
schedule: | |
# Run nightly cronjob CI every day at 14 UTC / 6AM PST / 3PM CET | |
- cron: '0 14 * * *' | |
concurrency: | |
# Allow one run at a time for PRs, but multiple for other invocations | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
# ci-job-check & ci-job-features | |
# Running at MSRV (1.66) | |
msrv: | |
runs-on: ubuntu-latest | |
# Defined as a matrix so that features can start immediately, but | |
# be killed if check fails. | |
strategy: | |
matrix: | |
behavior: [check, features-1, features-2, features-3] | |
fail-fast: true | |
# Set CARGO_HTTP_MULTIPLEXING=false to work around crates.io curl bug: | |
# <https://rust-lang.zulipchat.com/#narrow/stream/246057-t-cargo/topic/timeout.20investigation> | |
env: | |
CARGO_HTTP_MULTIPLEXING: false | |
steps: | |
- uses: actions/checkout@v3 | |
# Cargo-make boilerplate | |
- name: Get cargo-make version | |
id: cargo-make-version | |
run: | | |
echo "hash=$(cargo search cargo-make | grep '^cargo-make =' | md5sum)" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Attempt to load cached cargo-make | |
uses: actions/cache@v3 | |
id: cargo-make-cache | |
with: | |
path: | | |
~/.cargo/bin/cargo-make | |
~/.cargo/bin/cargo-make.exe | |
key: ${{ runner.os }}-make-${{ steps.cargo-make-version.outputs.hash }} | |
- name: Install cargo-make | |
if: steps.cargo-make-cache.outputs.cache-hit != 'true' | |
run: cargo +stable install cargo-make | |
# Cargo-all-features boilerplate | |
- name: Get cargo-all-features version | |
id: cargo-all-features-version | |
run: | | |
echo "hash=$(cargo search cargo-all-features | grep '^cargo-all-features =' | md5sum)" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Attempt to load cached cargo-all-features | |
uses: actions/cache@v3 | |
id: cargo-all-features-cache | |
with: | |
path: | | |
~/.cargo/bin/cargo-all-features | |
~/.cargo/bin/cargo-all-features.exe | |
key: ${{ runner.os }}-all-features-${{ steps.cargo-all-features-version.outputs.hash }} | |
- name: Install cargo-all-features | |
if: steps.cargo-all-features-cache.outputs.cache-hit != 'true' | |
run: cargo +stable install cargo-all-features | |
# No toolchain boilerplate as this runs on MSRV | |
# Actual job | |
- name: Check | |
run: cargo make ci-job-msrv-${{ matrix.behavior }} | |
# ci-job-test | |
test: | |
strategy: | |
matrix: | |
os: [ ubuntu-latest, macos-latest, windows-latest ] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
# Cargo-make boilerplate | |
- name: Get cargo-make version | |
id: cargo-make-version | |
run: | | |
echo "hash=$(cargo search cargo-make | grep '^cargo-make =' | md5sum)" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Attempt to load cached cargo-make | |
uses: actions/cache@v3 | |
id: cargo-make-cache | |
with: | |
path: | | |
~/.cargo/bin/cargo-make | |
~/.cargo/bin/cargo-make.exe | |
key: ${{ runner.os }}-make-${{ steps.cargo-make-version.outputs.hash }} | |
- name: Install cargo-make | |
if: steps.cargo-make-cache.outputs.cache-hit != 'true' | |
run: cargo +stable install cargo-make | |
# Toolchain boilerplate | |
- name: Potentially override rust version with nightly | |
run: cargo make set-nightly-version-for-ci | |
- name: Show the selected Rust toolchain | |
run: rustup show | |
# Actual job | |
- name: Run `cargo make ci-job-test` | |
if: matrix.os != 'windows-latest' | |
run: cargo make ci-job-test | |
- name: Run `cargo make ci-job-test-windows` | |
if: matrix.os == 'windows-latest' | |
run: cargo make ci-job-test-windows | |
# ci-job-test-tutorials | |
test-tutorials: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
behavior: [local, cratesio] | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
# Cargo-make boilerplate | |
- name: Get cargo-make version | |
id: cargo-make-version | |
run: | | |
echo "hash=$(cargo search cargo-make | grep '^cargo-make =' | md5sum)" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Attempt to load cached cargo-make | |
uses: actions/cache@v3 | |
id: cargo-make-cache | |
with: | |
path: | | |
~/.cargo/bin/cargo-make | |
~/.cargo/bin/cargo-make.exe | |
key: ${{ runner.os }}-make-${{ steps.cargo-make-version.outputs.hash }} | |
- name: Install cargo-make | |
if: steps.cargo-make-cache.outputs.cache-hit != 'true' | |
run: cargo +stable install cargo-make | |
# Toolchain boilerplate | |
- name: Potentially override rust version with nightly | |
run: cargo make set-nightly-version-for-ci | |
- name: Show the selected Rust toolchain | |
run: rustup show | |
# Job-specific dependencies | |
- name: Attempt to load download cache | |
uses: actions/cache@v3 | |
with: | |
key: download-cache | |
path: /tmp/icu4x-source-cache | |
# Actual job | |
- name: Run `cargo make ci-job-test-tutorials-${{ matrix.behavior }}` | |
run: cargo make ci-job-test-tutorials-${{ matrix.behavior }} | |
# ci-job-testdata | |
testdata: | |
strategy: | |
matrix: | |
os: [ ubuntu-latest, macos-latest, windows-latest ] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
# Cargo-make boilerplate | |
- name: Get cargo-make version | |
id: cargo-make-version | |
run: | | |
echo "hash=$(cargo search cargo-make | grep '^cargo-make =' | md5sum)" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Attempt to load cached cargo-make | |
uses: actions/cache@v3 | |
id: cargo-make-cache | |
with: | |
path: | | |
~/.cargo/bin/cargo-make | |
~/.cargo/bin/cargo-make.exe | |
key: ${{ runner.os }}-make-${{ steps.cargo-make-version.outputs.hash }} | |
- name: Install cargo-make | |
if: steps.cargo-make-cache.outputs.cache-hit != 'true' | |
run: cargo +stable install cargo-make | |
# Cargo-all-features boilerplate | |
- name: Get cargo-all-features version | |
id: cargo-all-features-version | |
run: | | |
echo "hash=$(cargo search cargo-all-features | grep '^cargo-all-features =' | md5sum)" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Attempt to load cached cargo-all-features | |
uses: actions/cache@v3 | |
id: cargo-all-features-cache | |
with: | |
path: | | |
~/.cargo/bin/cargo-all-features | |
~/.cargo/bin/cargo-all-features.exe | |
key: ${{ runner.os }}-all-features-${{ steps.cargo-all-features-version.outputs.hash }} | |
- name: Install cargo-all-features | |
if: steps.cargo-all-features-cache.outputs.cache-hit != 'true' | |
run: cargo +stable install cargo-all-features | |
# Toolchain boilerplate | |
- name: Potentially override rust version with nightly | |
run: cargo make set-nightly-version-for-ci | |
- name: Show the selected Rust toolchain | |
run: rustup show | |
# Job-specific dependencies | |
- name: Attempt to load download cache | |
uses: actions/cache@v3 | |
with: | |
key: download-cache | |
path: /tmp/icu4x-source-cache | |
# Actual job | |
- name: Run `cargo make testdata-check` | |
run: cargo make testdata-check | |
- name: Run `cargo make testdata-legacy` | |
run: cargo make testdata-legacy | |
# This is too slow for Windows and Mac | |
- name: Run `cargo make testdata-legacy-test` | |
if: matrix.os == 'ubuntu-latest' | |
run: cargo make testdata-legacy-test | |
# ci-job-test-docs | |
test-docs: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
# Cargo-make boilerplate | |
- name: Get cargo-make version | |
id: cargo-make-version | |
run: | | |
echo "hash=$(cargo search cargo-make | grep '^cargo-make =' | md5sum)" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Attempt to load cached cargo-make | |
uses: actions/cache@v3 | |
id: cargo-make-cache | |
with: | |
path: | | |
~/.cargo/bin/cargo-make | |
~/.cargo/bin/cargo-make.exe | |
key: ${{ runner.os }}-make-${{ steps.cargo-make-version.outputs.hash }} | |
- name: Install cargo-make | |
if: steps.cargo-make-cache.outputs.cache-hit != 'true' | |
run: cargo +stable install cargo-make | |
# Toolchain boilerplate | |
- name: Potentially override rust version with nightly | |
run: cargo make set-nightly-version-for-ci | |
- name: Show the selected Rust toolchain | |
run: rustup show | |
# Actual job | |
- name: Run `cargo make ci-job-test-docs` | |
run: cargo make ci-job-test-docs | |
# ci-job-full-datagen | |
full-datagen: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
# Cargo-make boilerplate | |
- name: Get cargo-make version | |
id: cargo-make-version | |
run: | | |
echo "hash=$(cargo search cargo-make | grep '^cargo-make =' | md5sum)" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Attempt to load cached cargo-make | |
uses: actions/cache@v3 | |
id: cargo-make-cache | |
with: | |
path: | | |
~/.cargo/bin/cargo-make | |
~/.cargo/bin/cargo-make.exe | |
key: ${{ runner.os }}-make-${{ steps.cargo-make-version.outputs.hash }} | |
- name: Install cargo-make | |
if: steps.cargo-make-cache.outputs.cache-hit != 'true' | |
run: cargo +stable install cargo-make | |
# Toolchain boilerplate | |
- name: Potentially override rust version with nightly | |
run: cargo make set-nightly-version-for-ci | |
- name: Show the selected Rust toolchain | |
run: rustup show | |
# Job-specific dependencies | |
- name: Attempt to load download cache | |
uses: actions/cache@v3 | |
with: | |
key: download-cache | |
path: /tmp/icu4x-source-cache | |
- name: Install rustfmt | |
run: rustup component add rustfmt | |
# Actual job | |
- name: Run `cargo make ci-job-full-datagen` | |
run: cargo make ci-job-full-datagen | |
# ci-job-ffi | |
ffi: | |
runs-on: ubuntu-latest | |
container: | |
image: rust:bookworm | |
steps: | |
- uses: actions/checkout@v3 | |
# Software setup/installation for the container | |
- name: Run apt-get update | |
run: | | |
apt-get update | |
- name: Install Clang-15 | |
run: | | |
apt-get install -y clang-15 lld-15 llvm-15-dev libc++-15-dev | |
- name: Install GCC 11 | |
run: | | |
apt-get install -y gcc-11 g++-11 | |
- name: Install Node.js v16.18.0 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16.18.0 | |
cache: 'npm' | |
cache-dependency-path: '**/package-lock.json' | |
- name: Install Rust toolchains | |
run: | | |
rustup toolchain install stable | |
# Cargo-make boilerplate | |
- name: Get cargo-make version | |
id: cargo-make-version | |
run: | | |
echo "hash=$(cargo search cargo-make | grep '^cargo-make =' | md5sum)" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Attempt to load cached cargo-make | |
uses: actions/cache@v3 | |
id: cargo-make-cache | |
with: | |
path: | | |
~/.cargo/bin/cargo-make | |
~/.cargo/bin/cargo-make.exe | |
# Since this is inside a container, use a different key than the other jobs | |
key: ${{ runner.os }}-make-ffi-${{ steps.cargo-make-version.outputs.hash }} | |
- name: Install cargo-make | |
if: steps.cargo-make-cache.outputs.cache-hit != 'true' | |
run: cargo +stable install cargo-make | |
# Toolchain boilerplate | |
- name: Potentially override rust version with nightly | |
run: cargo make set-nightly-version-for-ci | |
- name: Show the selected Rust toolchain | |
run: rustup show | |
# Job-specific dependencies | |
- name: Attempt to load download cache | |
uses: actions/cache@v3 | |
with: | |
key: download-cache | |
path: /tmp/icu4x-source-cache | |
- name: Warm up datagen | |
# We do this so its compilation doesn't go on the time bugdet of the | |
# first test that uses it. | |
run: cargo build -p icu_datagen | |
# Actual job | |
- name: Run `cargo make ci-job-ffi` | |
run: cargo make ci-job-ffi | |
env: | |
CXX: "g++-11" | |
# ci-job-verify-ffi | |
verify-ffi: | |
runs-on: [ ubuntu-latest ] | |
steps: | |
- uses: actions/checkout@v3 | |
# Cargo-make boilerplate | |
- name: Get cargo-make version | |
id: cargo-make-version | |
run: | | |
echo "hash=$(cargo search cargo-make | grep '^cargo-make =' | md5sum)" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Attempt to load cached cargo-make | |
uses: actions/cache@v3 | |
id: cargo-make-cache | |
with: | |
path: | | |
~/.cargo/bin/cargo-make | |
~/.cargo/bin/cargo-make.exe | |
key: ${{ runner.os }}-make-${{ steps.cargo-make-version.outputs.hash }} | |
- name: Install cargo-make | |
if: steps.cargo-make-cache.outputs.cache-hit != 'true' | |
run: cargo +stable install cargo-make | |
# Toolchain boilerplate | |
- name: Potentially override rust version with nightly | |
run: cargo make set-nightly-version-for-ci | |
- name: Show the selected Rust toolchain | |
run: rustup show | |
# Job-specific dependencies | |
- name: Run diplomat-get-rev to ensure it works | |
id: diplomat-getrev-check | |
run: cargo make --loglevel error diplomat-get-rev | |
- name: Get Diplomat version | |
id: diplomat-version | |
run: | | |
echo "::set-output name=rev::$(cargo make --loglevel error diplomat-get-rev | tr -d '[:space:]')" | |
shell: bash | |
- name: Attempt to load cached Diplomat | |
uses: actions/cache@v3 | |
id: diplomat-cache | |
with: | |
path: | | |
~/.cargo/bin/diplomat-tool | |
~/.cargo/bin/diplomat-tool.exe | |
key: ${{ runner.os }}-diplomat-${{ steps.diplomat-version.outputs.rev }} | |
- name: Install Diplomat (git hash) | |
if: steps.diplomat-cache.outputs.cache-hit != 'true' && !contains(steps.diplomat-version.outputs.rev, '.') | |
run: cargo +stable install --git https://github.com/rust-diplomat/diplomat.git --rev ${{ steps.diplomat-version.outputs.rev }} diplomat-tool | |
- name: Install Diplomat (versioned) | |
if: steps.diplomat-cache.outputs.cache-hit != 'true' && contains(steps.diplomat-version.outputs.rev, '.') | |
run: cargo +stable install --git https://github.com/rust-diplomat/diplomat.git --version ${{ steps.diplomat-version.outputs.rev }} diplomat-tool | |
# Actual job | |
- name: Run `cargo make ci-job-verify-ffi` | |
run: cargo make ci-job-verify-ffi | |
# ci-job-verify-gn, ci-job-gn | |
gn: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
# Cargo-make boilerplate | |
- name: Get cargo-make version | |
id: cargo-make-version | |
run: | | |
echo "hash=$(cargo search cargo-make | grep '^cargo-make =' | md5sum)" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Attempt to load cached cargo-make | |
uses: actions/cache@v3 | |
id: cargo-make-cache | |
with: | |
path: | | |
~/.cargo/bin/cargo-make | |
~/.cargo/bin/cargo-make.exe | |
key: ${{ runner.os }}-make-${{ steps.cargo-make-version.outputs.hash }} | |
- name: Install cargo-make | |
if: steps.cargo-make-cache.outputs.cache-hit != 'true' | |
run: cargo +stable install cargo-make | |
# Toolchain boilerplate | |
- name: Potentially override rust version with nightly | |
run: cargo make set-nightly-version-for-ci | |
- name: Show the selected Rust toolchain | |
run: rustup show | |
# Job-specific dependencies | |
- name: Attempt to load cached GN Third-Party Tools | |
uses: actions/cache@v3 | |
id: gn-third-party-tools-cache | |
with: | |
path: | | |
ffi/gn/third_party_tools | |
key: ${{ runner.os }}-${{ hashFiles('tools/make/gn.toml', 'ffi/gn/Cargo.lock') }} | |
- name: Install GN Third-Party Tools | |
if: steps.gn-third-party-tools-cache.outputs.cache-hit != 'true' | |
run: cargo make gn-install | |
- name: Get cargo-rdme version | |
id: cargo-readme-version | |
run: | | |
echo "::set-output name=hash::$(cargo search cargo-rdme | grep '^cargo-rdme =' | md5sum)" | |
shell: bash | |
- name: Attempt to load cached cargo-rdme | |
uses: actions/cache@v3 | |
id: cargo-rdme-cache | |
with: | |
path: | | |
~/.cargo/bin/cargo-rdme | |
~/.cargo/bin/cargo-rdme.exe | |
key: ${{ runner.os }}-readme-${{ steps.cargo-rdme-version.outputs.hash }} | |
- name: Install cargo-rdme | |
if: steps.cargo-rdme-cache.outputs.cache-hit != 'true' | |
uses: actions-rs/[email protected] | |
with: | |
crate: cargo-rdme | |
version: latest | |
# Actual job | |
- name: Run `cargo make ci-job-verify-gn` | |
run: cargo make ci-job-verify-gn | |
- name: Run `cargo make ci-job-gn` | |
run: cargo make ci-job-gn | |
# ci-job-wasm | |
wasm: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
# Cargo-make boilerplate | |
- name: Get cargo-make version | |
id: cargo-make-version | |
run: | | |
echo "hash=$(cargo search cargo-make | grep '^cargo-make =' | md5sum)" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Attempt to load cached cargo-make | |
uses: actions/cache@v3 | |
id: cargo-make-cache | |
with: | |
path: | | |
~/.cargo/bin/cargo-make | |
~/.cargo/bin/cargo-make.exe | |
key: ${{ runner.os }}-make-${{ steps.cargo-make-version.outputs.hash }} | |
- name: Install cargo-make | |
if: steps.cargo-make-cache.outputs.cache-hit != 'true' | |
run: cargo +stable install cargo-make | |
# Toolchain boilerplate | |
- name: Potentially override rust version with nightly | |
run: cargo make set-nightly-version-for-ci | |
- name: Show the selected Rust toolchain | |
run: rustup show | |
# Job-specific dependencies | |
- name: Install emsdk | |
run: | | |
cd ~ | |
git clone https://github.com/emscripten-core/emsdk.git --branch 2.0.27 | |
cd emsdk | |
./emsdk install latest | |
./emsdk activate latest | |
- name: Install Node.js v16.18.0 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16.18.0 | |
cache: 'npm' | |
cache-dependency-path: '**/package-lock.json' | |
# Actual job | |
- name: Run emscripten/wasm test | |
run: | | |
. ~/emsdk/emsdk_env.sh | |
cargo make ci-job-wasm | |
# ci-job-fmt | |
fmt: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
# Cargo-make boilerplate | |
- name: Get cargo-make version | |
id: cargo-make-version | |
run: | | |
echo "hash=$(cargo search cargo-make | grep '^cargo-make =' | md5sum)" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Attempt to load cached cargo-make | |
uses: actions/cache@v3 | |
id: cargo-make-cache | |
with: | |
path: | | |
~/.cargo/bin/cargo-make | |
~/.cargo/bin/cargo-make.exe | |
key: ${{ runner.os }}-make-${{ steps.cargo-make-version.outputs.hash }} | |
- name: Install cargo-make | |
if: steps.cargo-make-cache.outputs.cache-hit != 'true' | |
run: cargo +stable install cargo-make | |
# Toolchain boilerplate | |
- name: Potentially override rust version with nightly | |
run: cargo make set-nightly-version-for-ci | |
- name: Show the selected Rust toolchain | |
run: rustup show | |
# Job-specific dependencies | |
- name: Install rustfmt | |
run: rustup component add rustfmt | |
# Actual job | |
- name: Check Format | |
run: cargo make ci-job-fmt | |
# ci-job-tidy | |
tidy: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
# Cargo-make boilerplate | |
- name: Get cargo-make version | |
id: cargo-make-version | |
run: | | |
echo "hash=$(cargo search cargo-make | grep '^cargo-make =' | md5sum)" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Attempt to load cached cargo-make | |
uses: actions/cache@v3 | |
id: cargo-make-cache | |
with: | |
path: | | |
~/.cargo/bin/cargo-make | |
~/.cargo/bin/cargo-make.exe | |
key: ${{ runner.os }}-make-${{ steps.cargo-make-version.outputs.hash }} | |
- name: Install cargo-make | |
if: steps.cargo-make-cache.outputs.cache-hit != 'true' | |
run: cargo +stable install cargo-make | |
# Toolchain boilerplate | |
- name: Potentially override rust version with nightly | |
run: cargo make set-nightly-version-for-ci | |
- name: Show the selected Rust toolchain | |
run: rustup show | |
# Job-specific dependencies | |
- name: Get cargo-rdme version | |
id: cargo-readme-version | |
run: | | |
echo "::set-output name=hash::$(cargo search cargo-rdme | grep '^cargo-rdme =' | md5sum)" | |
shell: bash | |
- name: Attempt to load cached cargo-rdme | |
uses: actions/cache@v3 | |
id: cargo-rdme-cache | |
with: | |
path: | | |
~/.cargo/bin/cargo-rdme | |
~/.cargo/bin/cargo-rdme.exe | |
key: ${{ runner.os }}-readme-${{ steps.cargo-rdme-version.outputs.hash }} | |
- name: Install cargo-rdme | |
if: steps.cargo-rdme-cache.outputs.cache-hit != 'true' | |
uses: actions-rs/[email protected] | |
with: | |
crate: cargo-rdme | |
version: latest | |
# Actual job | |
- name: Tidy | |
run: cargo make ci-job-tidy | |
# ci-job-clippy | |
clippy: | |
# We don't expect to be clippy-clean on nightly cronjob. | |
if: ${{ github.event_name != 'schedule' }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
# Cargo-make boilerplate | |
- name: Get cargo-make version | |
id: cargo-make-version | |
run: | | |
echo "hash=$(cargo search cargo-make | grep '^cargo-make =' | md5sum)" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Attempt to load cached cargo-make | |
uses: actions/cache@v3 | |
id: cargo-make-cache | |
with: | |
path: | | |
~/.cargo/bin/cargo-make | |
~/.cargo/bin/cargo-make.exe | |
key: ${{ runner.os }}-make-${{ steps.cargo-make-version.outputs.hash }} | |
- name: Install cargo-make | |
if: steps.cargo-make-cache.outputs.cache-hit != 'true' | |
run: cargo +stable install cargo-make | |
# Toolchain boilerplate | |
- name: Potentially override rust version with nightly | |
run: cargo make set-nightly-version-for-ci | |
- name: Show the selected Rust toolchain | |
run: rustup show | |
# Job-specific dependencies | |
- name: Install clippy | |
run: rustup component add clippy | |
# Actual job | |
- name: Run `ci-job-clippy` | |
run: cargo make ci-job-clippy | |
# ci-job-doc | |
doc: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
# Cargo-make boilerplate | |
- name: Get cargo-make version | |
id: cargo-make-version | |
run: | | |
echo "hash=$(cargo search cargo-make | grep '^cargo-make =' | md5sum)" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Attempt to load cached cargo-make | |
uses: actions/cache@v3 | |
id: cargo-make-cache | |
with: | |
path: | | |
~/.cargo/bin/cargo-make | |
~/.cargo/bin/cargo-make.exe | |
key: ${{ runner.os }}-make-${{ steps.cargo-make-version.outputs.hash }} | |
- name: Install cargo-make | |
if: steps.cargo-make-cache.outputs.cache-hit != 'true' | |
run: cargo +stable install cargo-make | |
# Toolchain boilerplate | |
- name: Potentially override rust version with nightly | |
run: cargo make set-nightly-version-for-ci | |
- name: Show the selected Rust toolchain | |
run: rustup show | |
# Actual job | |
- name: Cargo doc | |
run: cargo make ci-job-doc | |
# Notify on slack | |
notify-slack: | |
# Skipped tasks: bench-perf, bench-memory, bench-binsize, bench-datasize | |
needs: [msrv, test, testdata, test-docs, full-datagen, ffi, verify-ffi, gn, wasm, fmt, tidy, clippy, doc] | |
if: ${{ always() && contains(needs.*.result, 'failure') && (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref_name == 'main')) }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Notify slack of failure | |
uses: ravsamhq/notify-slack-action@v1 | |
with: | |
notify_when: failure | |
status: failure # We do the filtering earlier | |
notification_title: '' | |
message_format: ${{ format('{{emoji}} {0} CI failed!' , ((github.event_name == 'schedule') && 'Nightly' || (github.event_name == 'push') && 'Main' || 'Manually dispatched')) }} | |
footer: '<{run_url}|View failure> | <https://github.com/unicode-org/icu4x/actions?query=event%3A${{ github.event_name }}|CI history for `${{ github.event_name }}`>' | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} |