| 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@v4 |
| 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 |