Docker Bake Harness
Co-authored-by: Nineko <cnotsomark@gmail.com> Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
90
.github/workflows/bake.yml
vendored
Normal file
90
.github/workflows/bake.yml
vendored
Normal file
@@ -0,0 +1,90 @@
|
||||
name: Bakery
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
bake_targets:
|
||||
type: string
|
||||
required: false
|
||||
default: '["default"]'
|
||||
description: Bake targets
|
||||
cargo_profiles:
|
||||
type: string
|
||||
required: false
|
||||
default: '["test", "bench"]'
|
||||
description: Cargo profiles
|
||||
docker_id:
|
||||
type: string
|
||||
required: false
|
||||
description: Dockerhub acct/repo identity.
|
||||
feat_sets:
|
||||
type: string
|
||||
required: false
|
||||
default: '["none", "default", "all"]'
|
||||
description: Cargo feature groups
|
||||
machines:
|
||||
type: string
|
||||
required: false
|
||||
default: '["x86_64"]'
|
||||
description: Hardware platform vector
|
||||
rust_targets:
|
||||
type: string
|
||||
required: false
|
||||
default: '["x86_64-unknown-linux-gnu"]'
|
||||
description: Rust targets
|
||||
rust_toolchains:
|
||||
type: string
|
||||
required: false
|
||||
default: '["nightly", "stable"]'
|
||||
description: Rust toolchains
|
||||
sys_names:
|
||||
type: string
|
||||
required: false
|
||||
default: '["debian"]'
|
||||
description: System names
|
||||
sys_targets:
|
||||
type: string
|
||||
required: false
|
||||
default: '["x86_64-linux-gnu"]'
|
||||
description: System targets
|
||||
sys_versions:
|
||||
type: string
|
||||
required: false
|
||||
default: '["testing-slim"]'
|
||||
description: System versions
|
||||
|
||||
env:
|
||||
docker_id: ${{inputs.docker_id}}
|
||||
|
||||
jobs:
|
||||
task:
|
||||
runs-on: ${{matrix.machine}}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
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)}}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Task
|
||||
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}}
|
||||
sys_name: ${{matrix.sys_name}}
|
||||
sys_target: ${{matrix.sys_target}}
|
||||
sys_version: ${{matrix.sys_version}}
|
||||
|
||||
run: |
|
||||
docker/bake.sh ${{matrix.bake_target}}
|
||||
165
.github/workflows/build.yml
vendored
Normal file
165
.github/workflows/build.yml
vendored
Normal file
@@ -0,0 +1,165 @@
|
||||
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}}
|
||||
|
||||
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}}
|
||||
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}}
|
||||
|
||||
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
|
||||
uses: ./.github/workflows/bake.yml
|
||||
needs: [install]
|
||||
with:
|
||||
bake_targets: '["tests-smoke"]'
|
||||
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}}
|
||||
Reference in New Issue
Block a user