Feature Powerset #20
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Check to build Roadster with all combinations (powerset) of features. Because we have a bunch of features, the | |
# powerset of all features is quite large, meaning we need to run a large number of iterations of the tests. To | |
# conserve CI usage, as well as mimimize CI time needed on PRs, we'll only run checks against the feature powerset | |
# once a week, and only if a commit was merged in the past week. | |
name: Feature Powerset | |
on: | |
schedule: | |
# Run once a week on Saturday at 1AM UTC (Friday 6PM PST) | |
- cron: '0 1 * * 6' | |
workflow_dispatch: | |
pull_request: | |
branches: [ main ] | |
types: [ labeled ] | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
# https://stackoverflow.com/questions/63014786/how-to-schedule-a-github-actions-nightly-build-but-run-it-only-when-there-where | |
check_trigger: | |
runs-on: ubuntu-latest | |
name: Check trigger | |
outputs: | |
should_run1: ${{ steps.schedule_trigger.outputs.should_run }} | |
should_run2: ${{ steps.label_trigger.outputs.should_run }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: print latest_commit | |
run: echo ${{ github.sha }} | |
- id: schedule_trigger | |
continue-on-error: true | |
name: Check latest commit is less than a week | |
if: ${{ github.event_name == 'schedule' }} | |
run: test $(git rev-list --after="7 days" ${{ github.sha }}) && echo "should_run=true" >> "$GITHUB_OUTPUT" | |
- id: label_trigger | |
continue-on-error: true | |
name: Check that the powerset_check label was added | |
if: ${{ github.event_name == 'pull_request' && github.event.label.name == 'powerset_check' }} | |
run: echo "should_run=true" >> "$GITHUB_OUTPUT" | |
roadster_feature_powerset: | |
needs: check_trigger | |
if: ${{ needs.check_trigger.outputs.should_run1 == 'true' || needs.check_trigger.outputs.should_run2 == 'true' || github.event_name == 'workflow_dispatch' }} | |
name: Feature powerset | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
- uses: taiki-e/install-action@cargo-hack | |
- name: Test | |
run: cargo hack test --no-fail-fast --feature-powerset --skip default --group-features jwt-ietf,jwt --group-features jwt-openid,jwt --clean-per-run --log-group github-actions --exclude-no-default-features --exclude-all-features | |
- name: Clean | |
run: cargo clean | |
- name: Check | |
run: cargo hack check --feature-powerset --no-dev-deps --skip default --group-features jwt-ietf,jwt --group-features jwt-openid,jwt --clean-per-run --log-group github-actions --exclude-no-default-features --exclude-all-features | |
- name: Clean | |
run: cargo clean | |
- name: Clippy | |
run: cargo hack clippy --all-targets --feature-powerset --skip default --group-features jwt-ietf,jwt --group-features jwt-openid,jwt --clean-per-run --log-group github-actions --exclude-no-default-features --exclude-all-features -- -D warnings |