Docker Complement
Split and reorganize workflows Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
1
.github/workflows/bake.yml
vendored
1
.github/workflows/bake.yml
vendored
@@ -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
52
.github/workflows/base.yml
vendored
Normal 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}}
|
||||
141
.github/workflows/build.yml
vendored
141
.github/workflows/build.yml
vendored
@@ -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
52
.github/workflows/deps.yml
vendored
Normal 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
20
.github/workflows/lint.yml
vendored
Normal 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
49
.github/workflows/main.yml
vendored
Normal 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
67
.github/workflows/test.yml
vendored
Normal 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
|
||||
@@ -102,7 +102,7 @@ COPY <<EOF complement.toml
|
||||
sender_timeout = 300
|
||||
sender_idle_timeout = 300
|
||||
sender_retry_backoff_limit = 300
|
||||
allow_invalid_tls_certificates_yes_i_know_what_the_fuck_i_am_doing_with_this_and_i_know_this_is_insecure = true
|
||||
allow_invalid_tls_certificates = true
|
||||
|
||||
[global.tls]
|
||||
certs = "/complement/certificate.crt"
|
||||
@@ -174,7 +174,7 @@ ARG complement_shuffle=1337
|
||||
ARG complement_timeout="1h"
|
||||
ARG complement_run=".*"
|
||||
ARG complement_skip=""
|
||||
ARG complement_tags="tuwunel_blacklist"
|
||||
ARG complement_tags="conduwuit_blacklist"
|
||||
ARG complement_tests="./tests/..."
|
||||
ARG complement_base_image
|
||||
|
||||
@@ -233,7 +233,7 @@ ARG complement_shuffle=1337
|
||||
ARG complement_timeout="1h"
|
||||
ARG complement_run=".*"
|
||||
ARG complement_skip=""
|
||||
ARG complement_tags="tuwunel_blacklist"
|
||||
ARG complement_tags="conduwuit_blacklist"
|
||||
ARG complement_tests="./tests/..."
|
||||
ARG complement_base_image
|
||||
|
||||
|
||||
@@ -181,8 +181,8 @@ group "complement" {
|
||||
targets = [
|
||||
"complement-tester",
|
||||
"complement-testee",
|
||||
"complement-tester-valgrind",
|
||||
"complement-testee-valgrind",
|
||||
#"complement-tester-valgrind",
|
||||
#"complement-testee-valgrind",
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
@@ -1,22 +1,24 @@
|
||||
#!/bin/bash
|
||||
set -eo pipefail
|
||||
|
||||
default_uwu_id="jevolk/tuwunel"
|
||||
uwu_id=${uwu_id:=$default_uwu_id}
|
||||
uwu_acct=${uwu_acct:=$(echo $uwu_id | cut -d"/" -f1)}
|
||||
uwu_repo=${uwu_repo:=$(echo $uwu_id | cut -d"/" -f2)}
|
||||
default_docker_id="jevolk/tuwunel"
|
||||
docker_id=${docker_id:=$default_docker_id}
|
||||
docker_acct=${docker_acct:=$(echo $docker_id | cut -d"/" -f1)}
|
||||
docker_repo=${docker_repo:=$(echo $docker_id | cut -d"/" -f2)}
|
||||
|
||||
CI="${CI:-0}"
|
||||
CI="${CI:-true}"
|
||||
BASEDIR=$(dirname "$0")
|
||||
|
||||
set -a
|
||||
runner_name=$(echo $RUNNER_NAME | cut -d"." -f1)
|
||||
runner_num=$(echo $RUNNER_NAME | cut -d"." -f2)
|
||||
set +a
|
||||
|
||||
###############################################################################
|
||||
|
||||
tester_image="complement-tester--none--debian--testing-slim--x86_64-linux-gnu"
|
||||
testee_image="complement-testee--test--nightly--x86_64-unknown-linux-gnu--none--debian--testing-slim--x86_64-linux-gnu"
|
||||
name="complement_tester_nightly"
|
||||
tester_image="complement-tester--${feat_set}--${sys_name}--${sys_version}--${sys_target}"
|
||||
testee_image="complement-testee--${cargo_profile}--${rust_toolchain}--${rust_target}--${feat_set}--${sys_name}--${sys_version}--${sys_target}"
|
||||
name="complement_tester__${cargo_profile}__${rust_toolchain}__${rust_target}__${feat_set}__${sys_name}__${sys_version}__${sys_target}"
|
||||
sock="/var/run/docker.sock"
|
||||
arg="--rm --name $name -v $sock:$sock --network=host $tester_image ${testee_image}"
|
||||
|
||||
Reference in New Issue
Block a user