Repository navigation
68 lines (58 loc) · 1.97 KB
/
Copy pathrust-deep.yml
File metadata and controls
68 lines (58 loc) · 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
name: Rust Deep Analysis
on:
workflow_dispatch:
inputs:
baseline_rev:
description: Git revision used by cargo-semver-checks as the public API baseline
required: false
default: origin/main
schedule:
- cron: "47 4 * * 0"
env:
RUST_VERSION: "1.99.0"
CARGO_HACK_VERSION: "0.6.44"
CARGO_SEMVER_CHECKS_VERSION: "0.47.0"
permissions:
contents: read
jobs:
rust-deep:
name: Rust deep gate
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v7 # v5
with:
fetch-depth: 0
- name: Install Rust
run: |
rustup toolchain install "$RUST_VERSION" --profile minimal
rustup default "$RUST_VERSION"
- name: Cache Rust deep artifacts
uses: Swatinem/rust-cache@v2 # v2
with:
shared-key: rust-${{ runner.os }}-${{ env.RUST_VERSION }}-deep
- name: Cache cargo deep tools
uses: actions/cache@v6 # v4
with:
path: |
~/.cargo/bin/cargo-hack
~/.cargo/bin/cargo-semver-checks
key: cargo-tools-${{ runner.os }}-hack-${{ env.CARGO_HACK_VERSION }}-semver-${{ env.CARGO_SEMVER_CHECKS_VERSION }}
- name: Install deep analysis tools
run: |
install_tool() {
local bin="$1"
local crate="$2"
local version="$3"
if command -v "$bin" >/dev/null 2>&1 && "$bin" --version | grep -F "$version" >/dev/null 2>&1; then
echo "${bin} ${version} restored from cache"
else
cargo install "$crate" --locked --version "$version"
fi
}
install_tool cargo-hack cargo-hack "$CARGO_HACK_VERSION"
install_tool cargo-semver-checks cargo-semver-checks "$CARGO_SEMVER_CHECKS_VERSION"
- name: Deep Rust gate
env:
BASELINE_REV: ${{ github.event.inputs.baseline_rev || 'origin/main' }}
run: tools/rust-deep-gate.sh --baseline-rev "$BASELINE_REV"