diff --git a/.github/workflows/rust-base.yml b/.github/workflows/rust-base.yml index e602d5c..826136f 100644 --- a/.github/workflows/rust-base.yml +++ b/.github/workflows/rust-base.yml @@ -2,6 +2,11 @@ name: 'Rust Base CI' on: workflow_call: inputs: + test-all-features: + description: 'Test with all features enabled' + required: false + default: true + type: boolean rust-channel: description: 'Rust channel to use' required: false @@ -36,7 +41,7 @@ on: SSH_PRIVATE_KEY: description: 'SSH private key for fetching private dependencies' required: false - SSH_PRIVATE_KEY_2: + SSH_PRIVATE_KEY_2: description: 'SSH private key for fetching private dependencies' required: false SSH_PRIVATE_KEY_3: @@ -45,7 +50,7 @@ on: jobs: test: name: Test Suite - runs-on: + runs-on: group: init4-runners steps: - name: Checkout repository @@ -55,7 +60,7 @@ jobs: uses: webfactory/ssh-agent@v0.9.1 with: ssh-private-key: | - ${{ secrets.SSH_PRIVATE_KEY }} + ${{ secrets.SSH_PRIVATE_KEY }} ${{ secrets.SSH_PRIVATE_KEY_2 }} ${{ secrets.SSH_PRIVATE_KEY_3 }} - name: Install Rust toolchain @@ -69,18 +74,18 @@ jobs: version: nightly - if: ${{ inputs.require-lockfile == true }} name: Run tests - env: + env: CARGO_NET_GIT_FETCH_WITH_CLI: true CARGO_BUILD_JOBS: ${{ inputs.cargo-build-jobs }} run: | - cargo nextest run --all-features --workspace --locked --cargo-profile ${{ inputs.rust-profile }} --no-tests=warn + cargo nextest run ${{ inputs.test-all-features && '--all-features' || '' }} --workspace --locked --cargo-profile ${{ inputs.rust-profile }} --no-tests=warn - if: ${{ inputs.require-lockfile == false }} name: Run tests - env: + env: CARGO_NET_GIT_FETCH_WITH_CLI: true CARGO_BUILD_JOBS: ${{ inputs.cargo-build-jobs }} run: | - cargo nextest run --all-features --workspace --cargo-profile ${{ inputs.rust-profile }} --no-tests=warn + cargo nextest run ${{ inputs.test-all-features && '--all-features' || '' }} --workspace --cargo-profile ${{ inputs.rust-profile }} --no-tests=warn # We need a separate job for doctests because they are not run in the main test job with nextest. doctest: @@ -93,11 +98,11 @@ jobs: - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - - run: cargo test --workspace --doc + - run: cargo test --workspace --doc ${{ inputs.test-all-features && '--all-features' || '' }} rustfmt: name: Rustfmt - runs-on: + runs-on: group: init4-runners steps: - name: Checkout repository @@ -108,13 +113,13 @@ jobs: components: rustfmt - uses: Swatinem/rust-cache@v2 - name: Check formatting - env: + env: CARGO_NET_GIT_FETCH_WITH_CLI: true run: cargo fmt --all --check clippy: name: Clippy - runs-on: + runs-on: group: init4-runners steps: - name: Checkout repository @@ -124,7 +129,7 @@ jobs: uses: webfactory/ssh-agent@v0.9.1 with: ssh-private-key: | - ${{ secrets.SSH_PRIVATE_KEY }} + ${{ secrets.SSH_PRIVATE_KEY }} ${{ secrets.SSH_PRIVATE_KEY_2 }} ${{ secrets.SSH_PRIVATE_KEY_3 }} - name: Install Rust toolchain @@ -134,18 +139,18 @@ jobs: - uses: Swatinem/rust-cache@v2 - if: ${{ inputs.require-lockfile == true }} name: Clippy check - env: + env: CARGO_NET_GIT_FETCH_WITH_CLI: true run: cargo clippy --all-targets --all-features --workspace --locked --profile ${{ inputs.rust-profile }} -- -D warnings - if: ${{ inputs.require-lockfile == false }} name: Clippy check - env: + env: CARGO_NET_GIT_FETCH_WITH_CLI: true run: cargo clippy --all-targets --all-features --workspace --profile ${{ inputs.rust-profile }} -- -D warnings docs: name: Docs - runs-on: + runs-on: group: init4-runners steps: - name: Checkout repository @@ -155,7 +160,7 @@ jobs: uses: webfactory/ssh-agent@v0.9.1 with: ssh-private-key: | - ${{ secrets.SSH_PRIVATE_KEY }} + ${{ secrets.SSH_PRIVATE_KEY }} ${{ secrets.SSH_PRIVATE_KEY_2 }} ${{ secrets.SSH_PRIVATE_KEY_3 }} - name: Install Rust toolchain diff --git a/.github/workflows/rust-bin-base.yml b/.github/workflows/rust-bin-base.yml new file mode 100644 index 0000000..a94f453 --- /dev/null +++ b/.github/workflows/rust-bin-base.yml @@ -0,0 +1,74 @@ +name: 'Rust Binary Base CI' +on: + workflow_call: + inputs: + rust-channel: + description: 'Rust channel to use' + required: false + default: 'stable' + type: string + install-foundry: + description: 'Installs foundry as a pre-test step' + required: false + default: false + type: boolean + os: + description: 'sets the OS' + required: false + default: 'ubuntu-latest' + type: string + requires-private-deps: + description: 'Requires private dependencies to be fetched, sets up ssh-agent' + required: false + default: false + type: boolean + rust-profile: + description: 'The profile to give to cargo for running, defaults to dev' + required: false + default: 'dev' + type: string + cargo-build-jobs: + description: 'The number of concurrent build/compilation jobs, reasonable default is cores/2' + type: string + default: '4' + required: false + secrets: + SSH_PRIVATE_KEY: + description: 'SSH private key for fetching private dependencies' + required: false + SSH_PRIVATE_KEY_2: + description: 'SSH private key for fetching private dependencies' + required: false + SSH_PRIVATE_KEY_3: + description: 'SSH private key for fetching private dependencies' + required: false + +jobs: + rust-base-checks: + name: Base Checks + uses: init4tech/actions/.github/workflows/rust-base.yml@main + with: + test-all-features: false + require-lockfile: true + cargo-build-jobs: ${{ inputs.cargo-build-jobs }} + rust-channel: ${{ inputs.rust-channel }} + install-foundry: ${{ inputs.install-foundry }} + requires-private-deps: ${{ inputs.requires-private-deps }} + rust-profile: ${{ inputs.rust-profile }} + secrets: inherit + feature-checks: + name: Feature Checks + runs-on: + group: init4-runners + steps: + - uses: actions/checkout@v6 + - uses: dtolnay/rust-toolchain@stable + with: + components: clippy + - uses: Swatinem/rust-cache@v2 + with: + cache-on-failure: true + env: + CARGO_NET_GIT_FETCH_WITH_CLI: true + - run: cargo clippy --all-targets --all-features + - run: cargo clippy --all-targets --no-default-features diff --git a/.github/workflows/rust-library-base.yml b/.github/workflows/rust-library-base.yml index 966a519..61ae566 100644 --- a/.github/workflows/rust-library-base.yml +++ b/.github/workflows/rust-library-base.yml @@ -12,11 +12,6 @@ on: required: false default: false type: boolean - require-lockfile: - description: 'Require a Cargo.lock file to be present' - required: false - default: false - type: boolean os: description: 'sets the OS' required: false @@ -32,6 +27,11 @@ on: required: false default: 'dev' type: string + cargo-build-jobs: + description: 'The number of concurrent build/compilation jobs, reasonable default is cores/2' + type: string + default: '4' + required: false secrets: SSH_PRIVATE_KEY: description: 'SSH private key for fetching private dependencies' @@ -47,6 +47,15 @@ jobs: rust-base-checks: name: Base Checks uses: init4tech/actions/.github/workflows/rust-base.yml@main + with: + test-all-features: true + require-lockfile: false + cargo-build-jobs: ${{ inputs.cargo-build-jobs }} + rust-channel: ${{ inputs.rust-channel }} + install-foundry: ${{ inputs.install-foundry }} + requires-private-deps: ${{ inputs.requires-private-deps }} + rust-profile: ${{ inputs.rust-profile }} + secrets: inherit feature-checks: name: Feature Checks runs-on: