Docker Complement

Split and reorganize workflows

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk
2025-05-01 07:47:51 +00:00
parent c5de46e3e1
commit 123f130a87
10 changed files with 262 additions and 148 deletions

View File

@@ -58,6 +58,7 @@ env:
jobs:
task:
name: Bake
runs-on: ${{matrix.machine}}
strategy:
fail-fast: false

52
.github/workflows/base.yml vendored Normal file
View File

@@ -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}}

View File

@@ -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}}

52
.github/workflows/deps.yml vendored Normal file
View File

@@ -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}}

20
.github/workflows/lint.yml vendored Normal file
View File

@@ -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}}

49
.github/workflows/main.yml vendored Normal file
View File

@@ -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]

67
.github/workflows/test.yml vendored Normal file
View File

@@ -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