Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 4 additions & 68 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
# This workflow runs whenever a PR is opened or updated, or a commit is pushed to main. It runs
# several checks:
# - commit_list: produces a list of commits to be checked
# - fmt: checks that the code is formatted according to rustfmt
# - clippy: checks that the code does not contain any clippy warnings
# - semver: checks for semver violations
# - doc: checks that the code can be documented without errors
Comment thread
jerrysxie marked this conversation as resolved.
# - hack: check combinations of feature flags
# - deny: checks licenses, advisories, sources, and bans
# - msrv: check that the msrv specified in the crate is correct
permissions:
contents: read
Expand All @@ -23,47 +24,13 @@ concurrency:
name: check
jobs:

commit_list:
runs-on: ubuntu-latest
steps:

- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Get commit list (push)
id: get_commit_list_push
if: ${{ github.event_name == 'push' }}
run: |
echo "id0=$GITHUB_SHA" > $GITHUB_OUTPUT
echo "List of tested commits:" > $GITHUB_STEP_SUMMARY
sed -n 's,^id[0-9]\+=\(.*\),- ${{ github.repositoryUrl }}/commit/\1,p' -- $GITHUB_OUTPUT >> $GITHUB_STEP_SUMMARY

- name: Get commit list (PR)
id: get_commit_list_pr
if: ${{ github.event_name == 'pull_request' }}
run: |
git rev-list --reverse refs/remotes/origin/${{ github.base_ref }}..${{ github.event.pull_request.head.sha }} | awk '{ print "id" NR "=" $1 }' > $GITHUB_OUTPUT
git diff --quiet ${{ github.event.pull_request.head.sha }} ${{ github.sha }} || echo "id0=$GITHUB_SHA" >> $GITHUB_OUTPUT
echo "List of tested commits:" > $GITHUB_STEP_SUMMARY
sed -n 's,^id[0-9]\+=\(.*\),- ${{ github.repositoryUrl }}/commit/\1,p' -- $GITHUB_OUTPUT >> $GITHUB_STEP_SUMMARY

outputs:
commits: ${{ toJSON(steps.*.outputs.*) }}

fmt:
runs-on: ubuntu-latest
name: nightly / fmt
needs: commit_list
strategy:
fail-fast: false
matrix:
commit: ${{ fromJSON(needs.commit_list.outputs.commits) }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
ref: ${{ matrix.commit }}
- name: Install nightly
uses: dtolnay/rust-toolchain@nightly
with:
Expand All @@ -73,8 +40,7 @@ jobs:

clippy:
runs-on: ubuntu-latest
name: ${{ matrix.toolchain }} / clippy (${{ matrix.commit }})
needs: commit_list
name: ${{ matrix.toolchain }} / clippy
permissions:
contents: read
checks: write
Expand All @@ -83,12 +49,10 @@ jobs:
matrix:
# Get early warning of new lints which are regularly introduced in beta channels.
toolchain: [stable, beta]
commit: ${{ fromJSON(needs.commit_list.outputs.commits) }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
ref: ${{ matrix.commit }}
- name: Install ${{ matrix.toolchain }}
uses: dtolnay/rust-toolchain@master
with:
Expand All @@ -101,20 +65,13 @@ jobs:
clippy_flags: -- -F clippy::suspicious -F clippy::correctness -F clippy::perf -F clippy::style
github_token: ${{ secrets.GITHUB_TOKEN }}

# Enable once we have a released crate
semver:
runs-on: ubuntu-latest
name: semver
Comment thread
jerrysxie marked this conversation as resolved.
needs: commit_list
strategy:
fail-fast: false
matrix:
commit: ${{ fromJSON(needs.commit_list.outputs.commits) }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
ref: ${{ matrix.commit }}
- name: Install stable
uses: dtolnay/rust-toolchain@stable
with:
Expand All @@ -128,16 +85,10 @@ jobs:
# API be documented as only available in some specific platforms.
runs-on: ubuntu-latest
name: nightly / doc
needs: commit_list
strategy:
fail-fast: false
matrix:
commit: ${{ fromJSON(needs.commit_list.outputs.commits) }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
ref: ${{ matrix.commit }}
- name: Install nightly
uses: dtolnay/rust-toolchain@nightly
- name: cargo doc
Expand All @@ -150,16 +101,10 @@ jobs:
# which is required for feature unification
runs-on: ubuntu-latest
name: ubuntu / stable / features
needs: commit_list
strategy:
fail-fast: false
matrix:
commit: ${{ fromJSON(needs.commit_list.outputs.commits) }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
ref: ${{ matrix.commit }}
- name: Install stable
uses: dtolnay/rust-toolchain@stable
- name: cargo install cargo-hack
Expand All @@ -174,16 +119,10 @@ jobs:
# our dependencies.
runs-on: ubuntu-latest
name: ubuntu / stable / deny
needs: commit_list
strategy:
fail-fast: false
matrix:
commit: ${{ fromJSON(needs.commit_list.outputs.commits) }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
ref: ${{ matrix.commit }}
- name: Install stable
uses: dtolnay/rust-toolchain@stable
- name: cargo install cargo-deny
Expand All @@ -197,13 +136,11 @@ jobs:
msrv:
# check that we can build using the minimal rust version that is specified by this crate
runs-on: ubuntu-latest
needs: commit_list
# we use a matrix here just because env can't be used in job names
# https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability
strategy:
fail-fast: false
matrix:
commit: ${{ fromJSON(needs.commit_list.outputs.commits) }}
msrv: ["1.83"] # We're relying on namespaced-features, which
# was released in 1.60
#
Expand All @@ -217,12 +154,11 @@ jobs:
# collapse_debuginfo
#
# bitfield-struct requires 1.83
name: ubuntu / ${{ matrix.msrv }} (${{ matrix.commit }})
name: ubuntu / ${{ matrix.msrv }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
ref: ${{ matrix.commit }}
- name: Install ${{ matrix.msrv }}
uses: dtolnay/rust-toolchain@master
with:
Expand Down
Loading
Loading