test(ci): Add CI and switch to cargo-make #6
Workflow file for this run
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
name: Rust | |
on: | |
push: | |
branches: ["main"] | |
tags: ["*"] | |
pull_request: | |
branches: ["*"] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
formatting: | |
name: Formatting | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install/update Rust | |
shell: bash | |
run: rustup toolchain install nightly --component rustfmt | |
- name: Formatting | |
shell: bash | |
run: cargo +nightly fmt -- --check | |
lints: | |
name: Lints | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install/update Rust | |
shell: bash | |
run: rustup show # Uses rust-toolchain.toml file to install the correct version and components. | |
- uses: taiki-e/install-action@v2 | |
with: | |
tool: cargo-make,cargo-nextest | |
- name: Caching | |
uses: Swatinem/rust-cache@v2 | |
- name: Run clippy for all feature sets. | |
shell: bash | |
# Uses a light variant right now to save resources.. Locally, there is a better version. | |
# Sadly, cannot use --all-features. | |
run: cargo make --makefile Makefile-light-ci.toml clippy | |
tests: | |
strategy: | |
matrix: | |
selected_features: | |
- name: "STU3" | |
feat_arg: "--no-default-features --features stu3,client,docs" | |
compose_profiles: "hapi-stu3" | |
- name: "R4B" | |
feat_arg: "--no-default-features --features r4b,client,docs" | |
compose_profiles: "hapi-r4b,medplum-r4" | |
- name: "R5" | |
feat_arg: "--no-default-features --features r5,client,docs" | |
compose_profiles: "hapi-r5" | |
name: "Tests (${{ matrix.selected_features.name }})" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install/update Rust | |
shell: bash | |
run: rustup show # Uses rust-toolchain.toml file to install the correct version and components. | |
- uses: taiki-e/install-action@v2 | |
with: | |
tool: cargo-make,cargo-nextest | |
- name: Caching | |
uses: Swatinem/rust-cache@v2 | |
- name: "Run tests for this feature set: ${{ matrix.selected_features.name }}" | |
shell: bash | |
# Uses a light variant right now to save resources.. Locally, there is a better version. | |
# Sadly, cannot use --all-features. | |
run: | | |
cargo make --makefile Makefile-light-ci.toml docker-ci-up --env COMPOSE_PROFILES=${{ matrix.selected_features.compose_profiles}} | |
cargo make --makefile Makefile-light-ci.toml test --env FEATURE_SELECTION=${{ matrix.selected_features.feat_arg }} | |
cargo make --makefile Makefile-light-ci.toml docker-ci-down --env COMPOSE_PROFILES=${{ matrix.selected_features.compose_profiles}} |