From 8bfe63d45f9f63621777f4c9d65a3b9c344e0d57 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Wed, 7 May 2025 05:42:37 +0000 Subject: [PATCH] Add package workflow. Signed-off-by: Jason Volk --- .github/workflows/bake.yml | 48 +++++---- .github/workflows/build.yml | 18 ---- .github/workflows/deps.yml | 111 ++++++++++++++++++-- .github/workflows/lint.yml | 78 ++++++++++++++ .github/workflows/main.yml | 55 ++++++++-- .github/workflows/package.yml | 89 ++++++++++++++++ .github/workflows/test.yml | 121 ++++++++++++++++------ docker/Dockerfile.cargo | 3 +- docker/Dockerfile.cargo.audit | 1 - docker/Dockerfile.cargo.deb | 59 +++++++++++ docker/Dockerfile.cargo.deps | 1 - docker/Dockerfile.cargo.fmt | 1 - docker/Dockerfile.cargo.install | 4 +- docker/Dockerfile.cargo.lychee | 1 - docker/Dockerfile.cookware | 5 +- docker/Dockerfile.ingredients | 3 - docker/Dockerfile.rocksdb | 4 +- docker/bake.hcl | 173 +++++++++++++++++++++----------- docker/bake.sh | 7 +- docker/complement.sh | 2 +- docs/deploying/docker.md | 8 +- src/main/Cargo.toml | 2 +- 22 files changed, 626 insertions(+), 168 deletions(-) delete mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/package.yml create mode 100644 docker/Dockerfile.cargo.deb diff --git a/.github/workflows/bake.yml b/.github/workflows/bake.yml index 95fe66a1..71c4296f 100644 --- a/.github/workflows/bake.yml +++ b/.github/workflows/bake.yml @@ -6,39 +6,39 @@ on: bake_targets: type: string default: '["default"]' - description: Bake targets + description: Bake Matrix cargo_profiles: type: string - default: ${{vars.CARGO_PROFILES || '["test", "bench", "release"]'}} description: Cargo profiles feat_sets: type: string - default: ${{vars.FEAT_SETS || '["none", "default", "all"]'}} description: Cargo feature groups - machines: - type: string - default: ${{vars.MACHINES || '["x86_64"]'}} - description: Hardware platform vector rust_targets: type: string - default: ${{vars.RUST_TARGETS || '["x86_64-unknown-linux-gnu"]'}} description: Rust targets rust_toolchains: type: string - default: ${{vars.RUST_TOOLCHAINS || '["nightly", "stable"]'}} description: Rust toolchains sys_names: type: string - default: ${{vars.SYS_NAMES || '["debian"]'}} description: System names sys_targets: type: string - default: ${{vars.SYS_TARGETS || '["x86_64-linux-gnu"]'}} description: System targets sys_versions: type: string - default: ${{vars.SYS_VERSIONS || '["testing-slim"]'}} description: System versions + machines: + type: string + description: Hardware platforms + excludes: + type: string + default: '[]' + description: Matrix exclusions + includes: + type: string + default: '[]' + description: Matrix inclusions verbose_env: type: string default: ${{vars.CI_VERBOSE_ENV || false}} @@ -54,34 +54,38 @@ on: jobs: bake: - name: Bake + name: ${{matrix.bake_target}} ${{matrix.cargo_profile}} ${{matrix.rust_toolchain}} ${{matrix.feat_set}} ${{matrix.sys_name}} ${{matrix.sys_version}} ${{matrix.sys_target}} runs-on: ${{matrix.machine}} strategy: - fail-fast: false + fail-fast: true matrix: + exclude: ${{fromJSON(inputs.excludes)}} + include: ${{fromJSON(inputs.includes)}} bake_target: ${{fromJSON(inputs.bake_targets)}} cargo_profile: ${{fromJSON(inputs.cargo_profiles)}} feat_set: ${{fromJSON(inputs.feat_sets)}} - machine: ${{fromJSON(inputs.machines)}} - rust_target: ${{fromJSON(inputs.rust_targets)}} rust_toolchain: ${{fromJSON(inputs.rust_toolchains)}} sys_name: ${{fromJSON(inputs.sys_names)}} - sys_target: ${{fromJSON(inputs.sys_targets)}} sys_version: ${{fromJSON(inputs.sys_versions)}} + rust_target: ${{fromJSON(inputs.rust_targets)}} + sys_target: ${{fromJSON(inputs.sys_targets)}} + machine: ${{fromJSON(inputs.machines)}} steps: - uses: actions/checkout@v3 - - name: Execute + - name: Bake env: bake_target: ${{matrix.bake_target}} cargo_profile: ${{matrix.cargo_profile}} - feat_set: ${{matrix.feat_set}} - machine: ${{matrix.machine}} - rust_target: ${{matrix.rust_target}} rust_toolchain: ${{matrix.rust_toolchain}} + rust_target: ${{matrix.rust_target}} + feat_set: ${{matrix.feat_set}} sys_name: ${{matrix.sys_name}} - sys_target: ${{matrix.sys_target}} sys_version: ${{matrix.sys_version}} + sys_target: ${{matrix.sys_target}} + machine: ${{matrix.machine}} + acct: ${{github.actor}} + repo: ${{github.repository}} CI_VERBOSE_ENV: ${{inputs.verbose_env}} CI_SILENT_BAKE: ${{inputs.silent_bake}} CI_PRINT_BAKE: ${{inputs.print_bake}} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index e89a273c..00000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: Build - -on: - workflow_call: - -jobs: - install: - name: Install - uses: ./.github/workflows/bake.yml - with: - bake_targets: '["install"]' - - complement: - name: Complement Testee - uses: ./.github/workflows/bake.yml - needs: [install] - with: - bake_targets: '["complement-testee"]' diff --git a/.github/workflows/deps.yml b/.github/workflows/deps.yml index e4860327..956a3aec 100644 --- a/.github/workflows/deps.yml +++ b/.github/workflows/deps.yml @@ -2,45 +2,142 @@ name: Dependencies on: workflow_call: + inputs: + cargo_profiles: + type: string + description: Cargo profiles + feat_sets: + type: string + description: Cargo feature groups + rust_toolchains: + type: string + description: Rust toolchains + sys_names: + type: string + description: System names + sys_versions: + type: string + description: System versions + rust_targets: + type: string + description: Rust targets + sys_targets: + type: string + description: System targets + machines: + type: string + description: Hardware platform vector + excludes: + type: string + default: '[]' + description: Matrix exclusions + includes: + type: string + default: '[]' + description: Matrix inclusions + show_systems: + type: boolean + default: true + description: Pre-build systems dependency targets + show_sources: + type: boolean + default: true + description: Pre-build sources dependency targets + show_rocksdb: + type: boolean + default: true + description: Pre-build rocksdb dependency targets + show_cargo: + type: boolean + default: true + description: Pre-build cargo dependency targets jobs: systems: + if: inputs.show_systems name: System uses: ./.github/workflows/bake.yml with: bake_targets: '["systems"]' + cargo_profiles: ${{inputs.cargo_profiles}} + feat_sets: ${{inputs.feat_sets}} + rust_toolchains: ${{inputs.rust_toolchains}} + sys_names: ${{inputs.sys_names}} + sys_versions: ${{inputs.sys_versions}} + rust_targets: ${{inputs.rust_targets}} + sys_targets: ${{inputs.sys_targets}} + machines: ${{inputs.machines}} + excludes: ${{inputs.excludes}} + includes: ${{inputs.includes}} buildsys: + if: inputs.show_systems name: Builder needs: [systems] uses: ./.github/workflows/bake.yml with: bake_targets: '["buildsys"]' - - tester: - name: Tester - needs: [systems] - uses: ./.github/workflows/bake.yml - with: - bake_targets: '["complement-tester"]' + cargo_profiles: ${{inputs.cargo_profiles}} + feat_sets: ${{inputs.feat_sets}} + rust_toolchains: ${{inputs.rust_toolchains}} + sys_names: ${{inputs.sys_names}} + sys_versions: ${{inputs.sys_versions}} + rust_targets: ${{inputs.rust_targets}} + sys_targets: ${{inputs.sys_targets}} + machines: ${{inputs.machines}} + excludes: ${{inputs.excludes}} + includes: ${{inputs.includes}} sources: + if: inputs.show_sources name: Acquire needs: [buildsys] uses: ./.github/workflows/bake.yml with: bake_targets: '["sources"]' + cargo_profiles: ${{inputs.cargo_profiles}} + feat_sets: ${{inputs.feat_sets}} + rust_toolchains: ${{inputs.rust_toolchains}} + sys_names: ${{inputs.sys_names}} + sys_versions: ${{inputs.sys_versions}} + rust_targets: ${{inputs.rust_targets}} + sys_targets: ${{inputs.sys_targets}} + machines: ${{inputs.machines}} + excludes: ${{inputs.excludes}} + includes: ${{inputs.includes}} rocksdb: + if: inputs.show_rocksdb name: RocksDB needs: [sources] uses: ./.github/workflows/bake.yml with: bake_targets: '["rocksdb"]' + cargo_profiles: ${{inputs.cargo_profiles}} + feat_sets: ${{inputs.feat_sets}} + rust_toolchains: ${{inputs.rust_toolchains}} + sys_names: ${{inputs.sys_names}} + sys_versions: ${{inputs.sys_versions}} + rust_targets: ${{inputs.rust_targets}} + sys_targets: ${{inputs.sys_targets}} + machines: ${{inputs.machines}} + excludes: ${{inputs.excludes}} + includes: ${{inputs.includes}} deps: + if: inputs.show_cargo name: Build needs: [rocksdb] uses: ./.github/workflows/bake.yml with: bake_targets: '["deps-clippy", "deps-build-tests", "deps-build-bins"]' + cargo_profiles: ${{inputs.cargo_profiles}} + feat_sets: ${{inputs.feat_sets}} + rust_toolchains: ${{inputs.rust_toolchains}} + sys_names: ${{inputs.sys_names}} + sys_versions: ${{inputs.sys_versions}} + rust_targets: ${{inputs.rust_targets}} + sys_targets: ${{inputs.sys_targets}} + machines: ${{inputs.machines}} + excludes: ${{inputs.excludes}} + includes: ${{inputs.includes}} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index a3b4ac52..928665b5 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -2,9 +2,43 @@ name: Linting on: workflow_call: + inputs: + cargo_profiles: + type: string + description: Cargo profiles + feat_sets: + type: string + description: Cargo feature groups + rust_toolchains: + type: string + description: Rust toolchains + sys_names: + type: string + description: System names + sys_versions: + type: string + description: System versions + rust_targets: + type: string + description: Rust targets + sys_targets: + type: string + description: System targets + machines: + type: string + description: Hardware platform vector + excludes: + type: string + default: '[]' + description: Matrix exclusions + includes: + type: string + default: '[]' + description: Matrix inclusions jobs: fmt: + if: ${{contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["none"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])}} name: Format uses: ./.github/workflows/bake.yml with: @@ -12,8 +46,16 @@ jobs: cargo_profiles: '["test"]' feat_sets: '["none"]' rust_toolchains: '["nightly"]' + rust_targets: ${{inputs.rust_targets}} + sys_names: ${{inputs.sys_names}} + sys_targets: ${{inputs.sys_targets}} + sys_versions: ${{inputs.sys_versions}} + machines: ${{inputs.machines}} + excludes: ${{inputs.excludes}} + includes: ${{inputs.includes}} audit: + if: ${{contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["none"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])}} name: Audit uses: ./.github/workflows/bake.yml with: @@ -21,8 +63,16 @@ jobs: cargo_profiles: '["test"]' feat_sets: '["none"]' rust_toolchains: '["nightly"]' + sys_names: ${{inputs.sys_names}} + sys_versions: ${{inputs.sys_versions}} + rust_targets: ${{inputs.rust_targets}} + sys_targets: ${{inputs.sys_targets}} + machines: ${{inputs.machines}} + excludes: ${{inputs.excludes}} + includes: ${{inputs.includes}} lychee: + if: ${{contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["none"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])}} name: Lychee uses: ./.github/workflows/bake.yml with: @@ -30,18 +80,46 @@ jobs: cargo_profiles: '["test"]' feat_sets: '["none"]' rust_toolchains: '["nightly"]' + sys_names: ${{inputs.sys_names}} + sys_versions: ${{inputs.sys_versions}} + rust_targets: ${{inputs.rust_targets}} + sys_targets: ${{inputs.sys_targets}} + machines: ${{inputs.machines}} + excludes: ${{inputs.excludes}} + includes: ${{inputs.includes}} clippy: + if: ${{ always() }} name: Clippy + needs: [fmt, audit, lychee] uses: ./.github/workflows/bake.yml with: bake_targets: '["clippy"]' + cargo_profiles: ${{inputs.cargo_profiles}} + feat_sets: ${{inputs.feat_sets}} + rust_toolchains: ${{inputs.rust_toolchains}} + sys_names: ${{inputs.sys_names}} + sys_versions: ${{inputs.sys_versions}} + rust_targets: ${{inputs.rust_targets}} + sys_targets: ${{inputs.sys_targets}} + machines: ${{inputs.machines}} + excludes: ${{inputs.excludes}} + includes: ${{inputs.includes}} doc: + if: ${{contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])}} name: Docs needs: [clippy] uses: ./.github/workflows/bake.yml with: bake_targets: '["docs"]' cargo_profiles: '["test"]' + feat_sets: ${{inputs.feat_sets}} rust_toolchains: '["nightly"]' + sys_names: ${{inputs.sys_names}} + sys_versions: ${{inputs.sys_versions}} + rust_targets: ${{inputs.rust_targets}} + sys_targets: ${{inputs.sys_targets}} + machines: ${{inputs.machines}} + excludes: ${{inputs.excludes}} + includes: ${{inputs.includes}} diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bd5fd45a..34ebd19b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -18,20 +18,61 @@ env: jobs: deps: + if: ${{vars.CI_VERBOSE_DEPS || false}} name: Deps uses: ./.github/workflows/deps.yml + with: + cargo_profiles: ${{vars.CARGO_PROFILES}} + feat_sets: ${{vars.FEAT_SETS}} + rust_toolchains: ${{vars.RUST_TOOLCHAINS}} + rust_targets: ${{vars.RUST_TARGETS}} + sys_names: ${{vars.SYS_NAMES}} + sys_targets: ${{vars.sys_TARGETS}} + sys_versions: ${{vars.SYS_VERSIONS}} + machines: ${{vars.MACHINES}} lint: + if: ${{ always() && !cancelled() }} name: Lint + needs: [deps] uses: ./.github/workflows/lint.yml - needs: [deps] - - build: - name: Build - uses: ./.github/workflows/build.yml - needs: [deps] + with: + cargo_profiles: ${{vars.CARGO_PROFILES}} + feat_sets: ${{vars.FEAT_SETS}} + rust_toolchains: ${{vars.RUST_TOOLCHAINS}} + rust_targets: ${{vars.RUST_TARGETS}} + sys_names: ${{vars.SYS_NAMES}} + sys_targets: ${{vars.sys_TARGETS}} + sys_versions: ${{vars.SYS_VERSIONS}} + machines: ${{vars.MACHINES}} test: + if: ${{ always() && !cancelled() }} name: Test + needs: [lint] uses: ./.github/workflows/test.yml - needs: [build] + with: + cargo_profiles: ${{vars.CARGO_PROFILES}} + feat_sets: ${{vars.FEAT_SETS}} + rust_toolchains: ${{vars.RUST_TOOLCHAINS}} + rust_targets: ${{vars.RUST_TARGETS}} + sys_names: ${{vars.SYS_NAMES}} + sys_targets: ${{vars.sys_TARGETS}} + sys_versions: ${{vars.SYS_VERSIONS}} + machines: ${{vars.MACHINES}} + complement: true + + package: + if: ${{ always() && !cancelled() }} + name: Package + needs: [test] + uses: ./.github/workflows/package.yml + with: + cargo_profiles: '["release"]' + feat_sets: ${{vars.FEAT_SETS}} + rust_toolchains: '["stable"]' + sys_names: ${{vars.SYS_NAMES}} + sys_versions: ${{vars.SYS_VERSIONS}} + rust_targets: ${{vars.RUST_TARGETS}} + sys_targets: ${{vars.sys_TARGETS}} + machines: ${{vars.MACHINES}} diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml new file mode 100644 index 00000000..2cdb3ee7 --- /dev/null +++ b/.github/workflows/package.yml @@ -0,0 +1,89 @@ +name: Package + +on: + workflow_call: + inputs: + cargo_profiles: + type: string + default: '["release"]' + description: Cargo profiles + feat_sets: + type: string + description: Cargo feature groups + rust_toolchains: + type: string + description: Rust toolchains + sys_names: + type: string + description: System names + sys_versions: + type: string + description: System versions + rust_targets: + type: string + description: Rust targets + sys_targets: + type: string + description: System targets + machines: + type: string + description: Hardware platform vector + excludes: + type: string + default: '[]' + description: Matrix exclusions + includes: + type: string + default: '[]' + description: Matrix inclusions + +jobs: + deb: + name: Deb + uses: ./.github/workflows/bake.yml + with: + bake_targets: '["pkg-deb-install"]' + cargo_profiles: ${{inputs.cargo_profiles}} + feat_sets: ${{inputs.feat_sets}} + rust_toolchains: ${{inputs.rust_toolchains}} + sys_names: ${{inputs.sys_names}} + sys_versions: ${{inputs.sys_versions}} + rust_targets: ${{inputs.rust_targets}} + sys_targets: ${{inputs.sys_targets}} + machines: ${{inputs.machines}} + excludes: ${{inputs.excludes}} + includes: ${{inputs.includes}} + + rpm: + if: false + name: RPM + uses: ./.github/workflows/bake.yml + with: + bake_targets: '["pkg-rpm-install"]' + cargo_profiles: ${{inputs.cargo_profiles}} + feat_sets: ${{inputs.feat_sets}} + rust_toolchains: ${{inputs.rust_toolchains}} + sys_names: ${{inputs.sys_names}} + sys_versions: ${{inputs.sys_versions}} + rust_targets: ${{inputs.rust_targets}} + sys_targets: ${{inputs.sys_targets}} + machines: ${{inputs.machines}} + excludes: ${{inputs.excludes}} + includes: ${{inputs.includes}} + + dockerhub: + if: ${{github.ref == 'refs/heads/main'}} + name: DockerHub + uses: ./.github/workflows/bake.yml + with: + bake_targets: '["dockerhub"]' + cargo_profiles: ${{inputs.cargo_profiles}} + feat_sets: ${{inputs.feat_sets}} + rust_toolchains: ${{inputs.rust_toolchains}} + sys_names: ${{inputs.sys_names}} + sys_versions: ${{inputs.sys_versions}} + rust_targets: ${{inputs.rust_targets}} + sys_targets: ${{inputs.sys_targets}} + machines: ${{inputs.machines}} + excludes: ${{inputs.excludes}} + includes: ${{inputs.includes}} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c07a223d..b0ac22f5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -5,82 +5,143 @@ on: inputs: cargo_profiles: type: string - default: ${{vars.CARGO_PROFILES || '["test", "bench", "release"]'}} description: Cargo profiles feat_sets: type: string - default: ${{vars.FEAT_SETS || '["none", "default", "all"]'}} description: Cargo feature groups - machines: - type: string - default: ${{vars.MACHINES || '["x86_64"]'}} - description: Hardware platform vector - rust_targets: - type: string - default: ${{vars.RUST_TARGETS || '["x86_64-unknown-linux-gnu"]'}} - description: Rust targets rust_toolchains: type: string - default: ${{vars.RUST_TOOLCHAINS || '["nightly", "stable"]'}} description: Rust toolchains sys_names: type: string - default: ${{vars.SYS_NAMES || '["debian"]'}} description: System names - sys_targets: - type: string - default: ${{vars.SYS_TARGETS || '["x86_64-linux-gnu"]'}} - description: System targets sys_versions: type: string - default: ${{vars.SYS_VERSIONS || '["testing-slim"]'}} description: System versions + rust_targets: + type: string + description: Rust targets + sys_targets: + type: string + description: System targets + machines: + type: string + description: Hardware platform vector + excludes: + type: string + default: '[]' + description: Matrix exclusions + includes: + type: string + default: '[]' + description: Matrix inclusions + complement: + type: boolean + default: true jobs: unit: + if: ${{contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])}} name: Unit uses: ./.github/workflows/bake.yml with: bake_targets: '["tests-unit"]' - cargo_profiles: '["test", "bench"]' + cargo_profiles: '["test"]' feat_sets: '["all"]' - rust_toolchains: '["nightly"]' + rust_toolchains: ${{inputs.rust_toolchains}} + sys_names: ${{inputs.sys_names}} + sys_versions: ${{inputs.sys_versions}} + rust_targets: ${{inputs.rust_targets}} + sys_targets: ${{inputs.sys_targets}} + machines: ${{inputs.machines}} + excludes: ${{inputs.excludes}} + includes: ${{inputs.includes}} smoke: name: Smoke uses: ./.github/workflows/bake.yml with: bake_targets: '["tests-smoke"]' + cargo_profiles: ${{inputs.cargo_profiles}} + feat_sets: ${{inputs.feat_sets}} + rust_toolchains: ${{inputs.rust_toolchains}} + sys_names: ${{inputs.sys_names}} + sys_versions: ${{inputs.sys_versions}} + rust_targets: ${{inputs.rust_targets}} + sys_targets: ${{inputs.sys_targets}} + machines: ${{inputs.machines}} + excludes: '[{"cargo_profile": "release", "rust_toolchain": "nightly"}, {"feat_set": "default"}]' + includes: ${{inputs.includes}} + + complement_tester: + if: ${{inputs.complement && contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])}} + name: Complement Tester + uses: ./.github/workflows/bake.yml + with: + bake_targets: '["complement-tester"]' + cargo_profiles: '["test"]' + feat_sets: '["all"]' + rust_toolchains: '["nightly"]' + sys_names: ${{inputs.sys_names}} + sys_versions: ${{inputs.sys_versions}} + rust_targets: ${{inputs.rust_targets}} + sys_targets: ${{inputs.sys_targets}} + machines: ${{inputs.machines}} + excludes: ${{inputs.excludes}} + includes: ${{inputs.includes}} + + complement_testee: + if: ${{inputs.complement && contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])}} + name: Complement Testee + uses: ./.github/workflows/bake.yml + needs: [smoke] + with: + bake_targets: '["complement-testee"]' + cargo_profiles: '["test"]' + feat_sets: '["all"]' + rust_toolchains: '["nightly"]' + sys_names: ${{inputs.sys_names}} + sys_versions: ${{inputs.sys_versions}} + rust_targets: ${{inputs.rust_targets}} + sys_targets: ${{inputs.sys_targets}} + machines: ${{inputs.machines}} + excludes: ${{inputs.excludes}} + includes: ${{inputs.includes}} complement: - name: Compliance - needs: [smoke] + if: ${{inputs.complement && contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])}} + name: Matrix Compliance + needs: [complement_tester, complement_testee] runs-on: ${{matrix.machine}} - #concurrency: ${{matrix.feat_set}}-${{matrix.sys_name}}-${{matrix.sys_target}}-${{matrix.sys_version}} - concurrency: complement-cant-walk-and-chew-bubblegum + concurrency: + group: complement-cant-walk-and-chew-bubblegum + cancel-in-progress: false + strategy: fail-fast: false matrix: cargo_profile: ${{fromJSON('["test"]')}} - feat_set: ${{fromJSON('["all"]')}} - machine: ${{fromJSON(inputs.machines)}} - rust_target: ${{fromJSON(inputs.rust_targets)}} rust_toolchain: ${{fromJSON('["nightly"]')}} + feat_set: ${{fromJSON('["all"]')}} sys_name: ${{fromJSON(inputs.sys_names)}} - sys_target: ${{fromJSON(inputs.sys_targets)}} sys_version: ${{fromJSON(inputs.sys_versions)}} + rust_target: ${{fromJSON(inputs.rust_targets)}} + sys_target: ${{fromJSON(inputs.sys_targets)}} + machine: ${{fromJSON(inputs.machines)}} + exclude: ${{fromJSON(inputs.excludes)}} + include: ${{fromJSON(inputs.includes)}} steps: - name: Complement env: cargo_profile: ${{matrix.cargo_profile}} - feat_set: ${{matrix.feat_set}} - machine: ${{matrix.machine}} - rust_target: ${{matrix.rust_target}} rust_toolchain: ${{matrix.rust_toolchain}} + rust_target: ${{matrix.rust_target}} + feat_set: ${{matrix.feat_set}} sys_name: ${{matrix.sys_name}} sys_target: ${{matrix.sys_target}} sys_version: ${{matrix.sys_version}} + machine: ${{matrix.machine}} run: | docker/complement.sh diff --git a/docker/Dockerfile.cargo b/docker/Dockerfile.cargo index 4003459e..1cca766e 100644 --- a/docker/Dockerfile.cargo +++ b/docker/Dockerfile.cargo @@ -20,9 +20,8 @@ WORKDIR /usr/src/tuwunel RUN \ --mount=type=cache,dst=${RUSTUP_HOME},sharing=locked \ --mount=type=cache,dst=${CARGO_HOME},sharing=locked \ ---mount=type=cache,dst=${CARGO_TARGET_DIR},sharing=shared \ +--mount=type=cache,dst=${CARGO_TARGET_DIR},sharing=locked \ <