diff --git a/.github/workflows/bake.yml b/.github/workflows/bake.yml index 79f6d01f..7bcf0660 100644 --- a/.github/workflows/bake.yml +++ b/.github/workflows/bake.yml @@ -58,6 +58,7 @@ env: jobs: task: + name: Bake runs-on: ${{matrix.machine}} strategy: fail-fast: false diff --git a/.github/workflows/base.yml b/.github/workflows/base.yml new file mode 100644 index 00000000..d6b3ac5e --- /dev/null +++ b/.github/workflows/base.yml @@ -0,0 +1,52 @@ +name: Base Environment + +on: + workflow_call: + +jobs: + systems: + name: Base Environment + uses: ./.github/workflows/bake.yml + with: + bake_targets: '["systems"]' + cargo_profiles: ${{vars.CARGO_PROFILES}} + docker_id: ${{vars.DOCKER_ID}} + feat_sets: ${{vars.FEAT_SETS}} + machines: ${{vars.MACHINES}} + rust_targets: ${{vars.RUST_TARGETS}} + rust_toolchains: ${{vars.RUST_TOOLCHAINS}} + sys_names: ${{vars.SYS_NAMES}} + sys_targets: ${{vars.SYS_TARGETS}} + sys_versions: ${{vars.SYS_VERSIONS}} + + buildsys: + name: Build Environment + uses: ./.github/workflows/bake.yml + needs: [systems] + with: + bake_targets: '["buildsys"]' + cargo_profiles: ${{vars.CARGO_PROFILES}} + docker_id: ${{vars.DOCKER_ID}} + feat_sets: ${{vars.FEAT_SETS}} + machines: ${{vars.MACHINES}} + rust_targets: ${{vars.RUST_TARGETS}} + rust_toolchains: ${{vars.RUST_TOOLCHAINS}} + sys_names: ${{vars.SYS_NAMES}} + sys_targets: ${{vars.SYS_TARGETS}} + sys_versions: ${{vars.SYS_VERSIONS}} + + complement: + name: Test Environment + uses: ./.github/workflows/bake.yml + needs: [systems] + with: + bake_targets: '["complement-tester"]' + cargo_profiles: ${{vars.CARGO_PROFILES}} + docker_id: ${{vars.DOCKER_ID}} + feat_sets: ${{vars.FEAT_SETS}} + machines: ${{vars.MACHINES}} + rust_targets: ${{vars.RUST_TARGETS}} + rust_toolchains: ${{vars.RUST_TOOLCHAINS}} + sys_names: ${{vars.SYS_NAMES}} + sys_targets: ${{vars.SYS_TARGETS}} + sys_versions: ${{vars.SYS_VERSIONS}} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 36b42b9c..19958d29 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,129 +1,16 @@ name: Build on: - push: - branches: - - main - - workflow_dispatch: - inputs: - bake: - type: string - required: false - description: JSON Object of inputs passed to the environment - -concurrency: - group: ${{github.workflow}}-${{github.ref}} - cancel-in-progress: true - -env: - docker_id: ${{vars.DOCKER_ID}} - inputs: ${{github.event.inputs}} + workflow_call: jobs: - systems: - name: Base Environment - uses: ./.github/workflows/bake.yml - with: - bake_targets: '["systems"]' - cargo_profiles: ${{vars.CARGO_PROFILES}} - docker_id: ${{github.env.docker_id}} - feat_sets: ${{vars.FEAT_SETS}} - machines: ${{vars.MACHINES}} - rust_targets: ${{vars.RUST_TARGETS}} - rust_toolchains: ${{vars.RUST_TOOLCHAINS}} - sys_names: ${{vars.SYS_NAMES}} - sys_targets: ${{vars.SYS_TARGETS}} - sys_versions: ${{vars.SYS_VERSIONS}} - - buildsys: - name: Build Environment - uses: ./.github/workflows/bake.yml - needs: [systems] - with: - bake_targets: '["buildsys"]' - cargo_profiles: ${{vars.CARGO_PROFILES}} - docker_id: ${{github.env.docker_id}} - feat_sets: ${{vars.FEAT_SETS}} - machines: ${{vars.MACHINES}} - rust_targets: ${{vars.RUST_TARGETS}} - rust_toolchains: ${{vars.RUST_TOOLCHAINS}} - sys_names: ${{vars.SYS_NAMES}} - sys_targets: ${{vars.SYS_TARGETS}} - sys_versions: ${{vars.SYS_VERSIONS}} - - sources: - name: Acquire Source - uses: ./.github/workflows/bake.yml - needs: [buildsys] - with: - bake_targets: '["sources"]' - cargo_profiles: ${{vars.CARGO_PROFILES}} - docker_id: ${{github.env.docker_id}} - feat_sets: ${{vars.FEAT_SETS}} - machines: ${{vars.MACHINES}} - rust_targets: ${{vars.RUST_TARGETS}} - rust_toolchains: ${{vars.RUST_TOOLCHAINS}} - sys_names: ${{vars.SYS_NAMES}} - sys_targets: ${{vars.SYS_TARGETS}} - sys_versions: ${{vars.SYS_VERSIONS}} - - rocksdb: - name: Build RocksDB - uses: ./.github/workflows/bake.yml - needs: [sources] - with: - bake_targets: '["rocksdb"]' - cargo_profiles: ${{vars.CARGO_PROFILES}} - docker_id: ${{github.env.docker_id}} - feat_sets: ${{vars.FEAT_SETS}} - machines: ${{vars.MACHINES}} - rust_targets: ${{vars.RUST_TARGETS}} - rust_toolchains: ${{vars.RUST_TOOLCHAINS}} - sys_names: ${{vars.SYS_NAMES}} - sys_targets: ${{vars.SYS_TARGETS}} - sys_versions: ${{vars.SYS_VERSIONS}} - - deps: - name: Build Dependencies - uses: ./.github/workflows/bake.yml - needs: [rocksdb] - with: - bake_targets: '["deps"]' - cargo_profiles: ${{vars.CARGO_PROFILES}} - docker_id: ${{github.env.docker_id}} - feat_sets: ${{vars.FEAT_SETS}} - machines: ${{vars.MACHINES}} - rust_targets: ${{vars.RUST_TARGETS}} - rust_toolchains: ${{vars.RUST_TOOLCHAINS}} - sys_names: ${{vars.SYS_NAMES}} - sys_targets: ${{vars.SYS_TARGETS}} - sys_versions: ${{vars.SYS_VERSIONS}} - - clippy: - name: Clippy Lints - uses: ./.github/workflows/bake.yml - needs: [deps] - with: - bake_targets: '["clippy"]' - cargo_profiles: ${{vars.CARGO_PROFILES}} - docker_id: ${{github.env.docker_id}} - feat_sets: ${{vars.FEAT_SETS}} - machines: ${{vars.MACHINES}} - rust_targets: ${{vars.RUST_TARGETS}} - rust_toolchains: ${{vars.RUST_TOOLCHAINS}} - sys_names: ${{vars.SYS_NAMES}} - sys_targets: ${{vars.SYS_TARGETS}} - sys_versions: ${{vars.SYS_VERSIONS}} - install: name: Install uses: ./.github/workflows/bake.yml - needs: [deps] with: bake_targets: '["install"]' cargo_profiles: ${{vars.CARGO_PROFILES}} - docker_id: ${{github.env.docker_id}} + docker_id: ${{vars.DOCKER_ID}} feat_sets: ${{vars.FEAT_SETS}} machines: ${{vars.MACHINES}} rust_targets: ${{vars.RUST_TARGETS}} @@ -132,30 +19,14 @@ jobs: sys_targets: ${{vars.SYS_TARGETS}} sys_versions: ${{vars.SYS_VERSIONS}} - tests-unit: - name: Unit Tests - uses: ./.github/workflows/bake.yml - needs: [deps] - with: - bake_targets: '["tests-unit"]' - cargo_profiles: ${{vars.CARGO_PROFILES}} - docker_id: ${{github.env.docker_id}} - feat_sets: ${{vars.FEAT_SETS}} - machines: ${{vars.MACHINES}} - rust_targets: ${{vars.RUST_TARGETS}} - rust_toolchains: ${{vars.RUST_TOOLCHAINS}} - sys_names: ${{vars.SYS_NAMES}} - sys_targets: ${{vars.SYS_TARGETS}} - sys_versions: ${{vars.SYS_VERSIONS}} - - smoketest: - name: Smoke Tests + complement: + name: Complement Testee uses: ./.github/workflows/bake.yml needs: [install] with: - bake_targets: '["tests-smoke"]' + bake_targets: '["complement-testee"]' cargo_profiles: ${{vars.CARGO_PROFILES}} - docker_id: ${{github.env.docker_id}} + docker_id: ${{vars.DOCKER_ID}} feat_sets: ${{vars.FEAT_SETS}} machines: ${{vars.MACHINES}} rust_targets: ${{vars.RUST_TARGETS}} diff --git a/.github/workflows/deps.yml b/.github/workflows/deps.yml new file mode 100644 index 00000000..dbd14c17 --- /dev/null +++ b/.github/workflows/deps.yml @@ -0,0 +1,52 @@ +name: Dependency Build + +on: + workflow_call: + +jobs: + sources: + name: Acquire Source + uses: ./.github/workflows/bake.yml + with: + bake_targets: '["sources"]' + cargo_profiles: ${{vars.CARGO_PROFILES}} + docker_id: ${{vars.DOCKER_ID}} + feat_sets: ${{vars.FEAT_SETS}} + machines: ${{vars.MACHINES}} + rust_targets: ${{vars.RUST_TARGETS}} + rust_toolchains: ${{vars.RUST_TOOLCHAINS}} + sys_names: ${{vars.SYS_NAMES}} + sys_targets: ${{vars.SYS_TARGETS}} + sys_versions: ${{vars.SYS_VERSIONS}} + + rocksdb: + name: Build RocksDB + uses: ./.github/workflows/bake.yml + needs: [sources] + with: + bake_targets: '["rocksdb"]' + cargo_profiles: ${{vars.CARGO_PROFILES}} + docker_id: ${{vars.DOCKER_ID}} + feat_sets: ${{vars.FEAT_SETS}} + machines: ${{vars.MACHINES}} + rust_targets: ${{vars.RUST_TARGETS}} + rust_toolchains: ${{vars.RUST_TOOLCHAINS}} + sys_names: ${{vars.SYS_NAMES}} + sys_targets: ${{vars.SYS_TARGETS}} + sys_versions: ${{vars.SYS_VERSIONS}} + + deps: + name: Build Dependencies + uses: ./.github/workflows/bake.yml + needs: [rocksdb] + with: + bake_targets: '["deps"]' + cargo_profiles: ${{vars.CARGO_PROFILES}} + docker_id: ${{vars.DOCKER_ID}} + feat_sets: ${{vars.FEAT_SETS}} + machines: ${{vars.MACHINES}} + rust_targets: ${{vars.RUST_TARGETS}} + rust_toolchains: ${{vars.RUST_TOOLCHAINS}} + sys_names: ${{vars.SYS_NAMES}} + sys_targets: ${{vars.SYS_TARGETS}} + sys_versions: ${{vars.SYS_VERSIONS}} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 00000000..dd3d0f23 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,20 @@ +name: Linting + +on: + workflow_call: + +jobs: + clippy: + name: Clippy Lints + uses: ./.github/workflows/bake.yml + with: + bake_targets: '["clippy"]' + cargo_profiles: ${{vars.CARGO_PROFILES}} + docker_id: ${{vars.DOCKER_ID}} + feat_sets: ${{vars.FEAT_SETS}} + machines: ${{vars.MACHINES}} + rust_targets: ${{vars.RUST_TARGETS}} + rust_toolchains: ${{vars.RUST_TOOLCHAINS}} + sys_names: ${{vars.SYS_NAMES}} + sys_targets: ${{vars.SYS_TARGETS}} + sys_versions: ${{vars.SYS_VERSIONS}} diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..93116a7b --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,49 @@ +name: Main + +on: + push: + branches: + - "**" + pull_request: + branches: + - "**" + + workflow_dispatch: + inputs: + bake: + type: string + required: false + description: JSON Object of inputs passed to the environment + +concurrency: + group: ${{github.workflow}}-${{github.ref}} + cancel-in-progress: true + +env: + docker_id: ${{vars.DOCKER_ID}} + inputs: ${{github.event.inputs}} + +jobs: + base: + name: Base + uses: ./.github/workflows/base.yml + + deps: + name: Dependencies + uses: ./.github/workflows/deps.yml + needs: [base] + + lint: + name: Linting + uses: ./.github/workflows/lint.yml + needs: [deps] + + build: + name: Build + uses: ./.github/workflows/build.yml + needs: [deps] + + test: + name: Test + uses: ./.github/workflows/test.yml + needs: [build] diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..3861b6f1 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,67 @@ +name: Test + +on: + workflow_call: + +jobs: + unit: + name: Unit Tests + uses: ./.github/workflows/bake.yml + with: + bake_targets: '["tests-unit"]' + cargo_profiles: ${{vars.CARGO_PROFILES}} + docker_id: ${{vars.DOCKER_ID}} + feat_sets: ${{vars.FEAT_SETS}} + machines: ${{vars.MACHINES}} + rust_targets: ${{vars.RUST_TARGETS}} + rust_toolchains: ${{vars.RUST_TOOLCHAINS}} + sys_names: ${{vars.SYS_NAMES}} + sys_targets: ${{vars.SYS_TARGETS}} + sys_versions: ${{vars.SYS_VERSIONS}} + + smoke: + name: Smoke Tests + uses: ./.github/workflows/bake.yml + with: + bake_targets: '["tests-smoke"]' + cargo_profiles: ${{vars.CARGO_PROFILES}} + docker_id: ${{vars.DOCKER_ID}} + feat_sets: ${{vars.FEAT_SETS}} + machines: ${{vars.MACHINES}} + rust_targets: ${{vars.RUST_TARGETS}} + rust_toolchains: ${{vars.RUST_TOOLCHAINS}} + sys_names: ${{vars.SYS_NAMES}} + sys_targets: ${{vars.SYS_TARGETS}} + sys_versions: ${{vars.SYS_VERSIONS}} + + complement: + name: Compliance Tests + needs: [smoke] + runs-on: ${{matrix.machine}} + concurrency: ${{matrix.feat_set}}-${{matrix.sys_name}}-${{matrix.sys_target}}-${{matrix.sys_version}} + strategy: + fail-fast: false + matrix: + cargo_profile: ${{fromJSON(vars.CARGO_PROFILES)}} + feat_set: ${{fromJSON(vars.FEAT_SETS)}} + machine: ${{fromJSON(vars.MACHINES)}} + rust_target: ${{fromJSON(vars.RUST_TARGETS)}} + rust_toolchain: ${{fromJSON(vars.RUST_TOOLCHAINS)}} + sys_name: ${{fromJSON(vars.SYS_NAMES)}} + sys_target: ${{fromJSON(vars.SYS_TARGETS)}} + sys_version: ${{fromJSON(vars.SYS_VERSIONS)}} + + 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}} + sys_name: ${{matrix.sys_name}} + sys_target: ${{matrix.sys_target}} + sys_version: ${{matrix.sys_version}} + + run: | + docker/complement.sh diff --git a/docker/Dockerfile.complement b/docker/Dockerfile.complement index 0f4e9840..52964762 100644 --- a/docker/Dockerfile.complement +++ b/docker/Dockerfile.complement @@ -102,7 +102,7 @@ COPY <