-
Notifications
You must be signed in to change notification settings - Fork 39
78 lines (75 loc) · 2.44 KB
/
semver-checks.yml
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
name: semver-checks
# Trigger when a PR is opened or changed
on:
pull_request_target:
types:
- opened
- edited
- synchronize
- reopened
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
check_if_pr_breaks_semver:
runs-on: ubuntu-latest
permissions:
# this job runs with read because it checks out the PR head which could contain malicious code
contents: read
steps:
- uses: actions/checkout@v4
name: checkout full rep
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- name: Install minimal stable
uses: actions-rs/toolchain@v1
with:
profile: default
toolchain: stable
override: true
- uses: Swatinem/rust-cache@v2
- name: Install cargo-semver-checks
shell: bash
run: |
cargo install cargo-semver-checks --locked
- name: Run check
id: check
continue-on-error: true
shell: bash
run: |
cargo semver-checks --all-features --baseline-rev ${{ github.event.pull_request.base.sha }}
- name: On Failure
id: set_failure
if: ${{ steps.check.outcome == 'failure' }}
run: |
echo "Checks failed"
echo "check_status=failure" >> $GITHUB_OUTPUT
- name: On Success
id: set_success
if: ${{ steps.check.outcome == 'success' }}
run: |
echo "Checks succeed"
echo "check_status=success" >> $GITHUB_OUTPUT
outputs:
check_status: ${{ steps.set_failure.outputs.check_status || steps.set_success.outputs.check_status }}
add_label_if_needed:
needs: check_if_pr_breaks_semver
runs-on: ubuntu-latest
permissions:
# this job only looks at previous output and then sets a label, so malicious code in the PR
# isn't a concern
pull-requests: write
steps:
- name: On Failure
if: needs.check_if_pr_breaks_semver.outputs.check_status == 'failure'
uses: actions-ecosystem/action-add-labels@v1
with:
labels: breaking-change
- name: On Success
if: needs.check_if_pr_breaks_semver.outputs.check_status == 'success'
run: |
echo "Checks succeed"
- name: Fail On Incorrect Previous Output
if: needs.check_if_pr_breaks_semver.outputs.check_status != 'success' && needs.check_if_pr_breaks_semver.outputs.check_status != 'failure'
run: exit 1