| name: "Miri CI setup" | |
| description: "Sets up Miri CI" | |
| inputs: | |
| toolchain_flags: | |
| description: extra flags to pass to rustup-toolchain-install-master | |
| required: false | |
| default: '' | |
| runs: | |
| using: "composite" | |
| steps: | |
| - name: Show Rust version (stable toolchain) | |
| run: | | |
| rustup show | |
| rustc -Vv | |
| cargo -V | |
| shell: bash | |
| # Cache the global cargo directory, but NOT the local `target` directory which | |
| # we cannot reuse anyway when the nightly changes (and it grows quite large | |
| # over time). | |
| - name: Add cache for cargo | |
| id: cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: | | |
| # Taken from <https://doc.rust-lang.org/nightly/cargo/guide/cargo-home.html#caching-the-cargo-home-in-ci>. | |
| # Cache package/registry information | |
| ~/.cargo/registry/index | |
| ~/.cargo/registry/cache | |
| ~/.cargo/git/db | |
| # Cache installed binaries | |
| ~/.cargo/bin | |
| ~/.cargo/.crates.toml | |
| ~/.cargo/.crates2.json | |
| # Bump the version when something here changes that needs a cache reset. | |
| key: cargo-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/Cargo.lock') }}-v1 | |
| restore-keys: cargo-${{ runner.os }}-${{ runner.arch }} | |
| - name: Install the tools we need | |
| if: steps.cache.outputs.cache-hit != 'true' | |
| run: cargo install -f rustup-toolchain-install-master hyperfine | |
| shell: bash | |
| - name: Install "master" toolchain | |
| run: | | |
| if [[ ${{ github.event_name }} == 'schedule' ]]; then | |
| echo "Building against latest rustc git version" | |
| git ls-remote https://github.com/rust-lang/rust/ HEAD | cut -f 1 > rust-version | |
| fi | |
| ./miri toolchain ${{ inputs.toolchain_flags }} | |
| shell: bash | |
| - name: Show Rust version (miri toolchain) | |
| run: | | |
| rustup show | |
| rustc -Vv | |
| cargo -V | |
| shell: bash |