File: ci.yml

package info (click to toggle)
rust-human-panic 2.0.4-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 300 kB
  • sloc: makefile: 15; sh: 1
file content (181 lines) | stat: -rw-r--r-- 5,262 bytes parent folder | download
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
name: CI

permissions:
  contents: read

on:
  pull_request:
  push:
    branches:
    - master

env:
  CARGO_TERM_COLOR: always
  CLICOLOR: 1

concurrency:
  group: "${{ github.workflow }}-${{ github.ref }}"
  cancel-in-progress: true

jobs:
  ci:
    permissions:
      contents: none
    name: CI
    needs: [test, msrv, lockfile, docs, rustfmt, clippy, minimal-versions]
    runs-on: ubuntu-latest
    if: "always()"
    steps:
      - name: Failed
        run: exit 1
        if: "contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped')"
  test:
    name: Test
    strategy:
      matrix:
        os: ["ubuntu-latest", "windows-latest", "macos-latest"]
        rust: ["stable"]
    continue-on-error: ${{ matrix.rust != 'stable' }}
    runs-on: ${{ matrix.os }}
    env:
      # Reduce amount of data cached
      CARGO_PROFILE_DEV_DEBUG: line-tables-only
    steps:
    - name: Checkout repository
      uses: actions/checkout@v5
    - name: Install Rust
      uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: ${{ matrix.rust }}
    - uses: Swatinem/rust-cache@v2
    - uses: taiki-e/install-action@cargo-hack
    - name: Build
      run: cargo test --workspace --no-run
    - name: Test
      run: cargo hack test --each-feature --workspace --exclude-features nightly
    - name: Test Release
      run: cargo test --workspace --release
  msrv:
    name: "Check MSRV"
    runs-on: ubuntu-latest
    steps:
    - name: Checkout repository
      uses: actions/checkout@v5
    - name: Install Rust
      uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: stable
    - uses: Swatinem/rust-cache@v2
    - uses: taiki-e/install-action@cargo-hack
    - name: Default features
      run: cargo hack check --each-feature --locked --rust-version --ignore-private --workspace --all-targets --keep-going --exclude-features nightly
  minimal-versions:
    name: Minimal versions
    runs-on: ubuntu-latest
    steps:
    - name: Checkout repository
      uses: actions/checkout@v5
    - name: Install stable Rust
      uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: stable
    - name: Install nightly Rust
      uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: nightly
    - name: Downgrade dependencies to minimal versions
      run: cargo +nightly generate-lockfile -Z minimal-versions
    - name: Compile with minimal versions
      run: cargo +stable check --workspace --locked --keep-going
  lockfile:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout repository
      uses: actions/checkout@v5
    - name: Install Rust
      uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: stable
    - uses: Swatinem/rust-cache@v2
    - name: "Is lockfile updated?"
      run: cargo update --workspace --locked
  docs:
    name: Docs
    runs-on: ubuntu-latest
    steps:
    - name: Checkout repository
      uses: actions/checkout@v5
    - name: Install Rust
      uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: "1.90"  # STABLE
    - uses: Swatinem/rust-cache@v2
    - name: Check documentation
      env:
        RUSTDOCFLAGS: -D warnings
      run: cargo doc --workspace --no-deps --document-private-items --keep-going
  rustfmt:
    name: rustfmt
    runs-on: ubuntu-latest
    steps:
    - name: Checkout repository
      uses: actions/checkout@v5
    - name: Install Rust
      uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: "1.90"  # STABLE
        components: rustfmt
    - uses: Swatinem/rust-cache@v2
    - name: Check formatting
      run: cargo fmt --all -- --check
  clippy:
    name: clippy
    runs-on: ubuntu-latest
    permissions:
      security-events: write # to upload sarif results
    steps:
    - name: Checkout repository
      uses: actions/checkout@v5
    - name: Install Rust
      uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: "1.90"  # STABLE
        components: clippy
    - uses: Swatinem/rust-cache@v2
    - name: Install SARIF tools
      run: cargo install clippy-sarif --locked
    - name: Install SARIF tools
      run: cargo install sarif-fmt --locked
    - name: Check
      run: >
        cargo clippy --workspace --all-targets --message-format=json
        | clippy-sarif
        | tee clippy-results.sarif
        | sarif-fmt
      continue-on-error: true
    - name: Upload
      uses: github/codeql-action/upload-sarif@v3
      with:
        sarif_file: clippy-results.sarif
        wait-for-processing: true
    - name: Report status
      run: cargo clippy --workspace --all-targets --keep-going -- -D warnings --allow deprecated
  coverage:
    name: Coverage
    runs-on: ubuntu-latest
    steps:
    - name: Checkout repository
      uses: actions/checkout@v5
    - name: Install Rust
      uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: stable
    - uses: Swatinem/rust-cache@v2
    - name: Install cargo-tarpaulin
      run: cargo install cargo-tarpaulin
    - name: Gather coverage
      run: cargo tarpaulin --output-dir coverage --out lcov
    - name: Publish to Coveralls
      uses: coverallsapp/github-action@master
      with:
        github-token: ${{ secrets.GITHUB_TOKEN }}