48
.github/workflows/bake.yml
vendored
48
.github/workflows/bake.yml
vendored
@@ -6,39 +6,39 @@ on:
|
|||||||
bake_targets:
|
bake_targets:
|
||||||
type: string
|
type: string
|
||||||
default: '["default"]'
|
default: '["default"]'
|
||||||
description: Bake targets
|
description: Bake Matrix
|
||||||
cargo_profiles:
|
cargo_profiles:
|
||||||
type: string
|
type: string
|
||||||
default: ${{vars.CARGO_PROFILES || '["test", "bench", "release"]'}}
|
|
||||||
description: Cargo profiles
|
description: Cargo profiles
|
||||||
feat_sets:
|
feat_sets:
|
||||||
type: string
|
type: string
|
||||||
default: ${{vars.FEAT_SETS || '["none", "default", "all"]'}}
|
|
||||||
description: Cargo feature groups
|
description: Cargo feature groups
|
||||||
machines:
|
|
||||||
type: string
|
|
||||||
default: ${{vars.MACHINES || '["x86_64"]'}}
|
|
||||||
description: Hardware platform vector
|
|
||||||
rust_targets:
|
rust_targets:
|
||||||
type: string
|
type: string
|
||||||
default: ${{vars.RUST_TARGETS || '["x86_64-unknown-linux-gnu"]'}}
|
|
||||||
description: Rust targets
|
description: Rust targets
|
||||||
rust_toolchains:
|
rust_toolchains:
|
||||||
type: string
|
type: string
|
||||||
default: ${{vars.RUST_TOOLCHAINS || '["nightly", "stable"]'}}
|
|
||||||
description: Rust toolchains
|
description: Rust toolchains
|
||||||
sys_names:
|
sys_names:
|
||||||
type: string
|
type: string
|
||||||
default: ${{vars.SYS_NAMES || '["debian"]'}}
|
|
||||||
description: System names
|
description: System names
|
||||||
sys_targets:
|
sys_targets:
|
||||||
type: string
|
type: string
|
||||||
default: ${{vars.SYS_TARGETS || '["x86_64-linux-gnu"]'}}
|
|
||||||
description: System targets
|
description: System targets
|
||||||
sys_versions:
|
sys_versions:
|
||||||
type: string
|
type: string
|
||||||
default: ${{vars.SYS_VERSIONS || '["testing-slim"]'}}
|
|
||||||
description: System versions
|
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:
|
verbose_env:
|
||||||
type: string
|
type: string
|
||||||
default: ${{vars.CI_VERBOSE_ENV || false}}
|
default: ${{vars.CI_VERBOSE_ENV || false}}
|
||||||
@@ -54,34 +54,38 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
bake:
|
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}}
|
runs-on: ${{matrix.machine}}
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: true
|
||||||
matrix:
|
matrix:
|
||||||
|
exclude: ${{fromJSON(inputs.excludes)}}
|
||||||
|
include: ${{fromJSON(inputs.includes)}}
|
||||||
bake_target: ${{fromJSON(inputs.bake_targets)}}
|
bake_target: ${{fromJSON(inputs.bake_targets)}}
|
||||||
cargo_profile: ${{fromJSON(inputs.cargo_profiles)}}
|
cargo_profile: ${{fromJSON(inputs.cargo_profiles)}}
|
||||||
feat_set: ${{fromJSON(inputs.feat_sets)}}
|
feat_set: ${{fromJSON(inputs.feat_sets)}}
|
||||||
machine: ${{fromJSON(inputs.machines)}}
|
|
||||||
rust_target: ${{fromJSON(inputs.rust_targets)}}
|
|
||||||
rust_toolchain: ${{fromJSON(inputs.rust_toolchains)}}
|
rust_toolchain: ${{fromJSON(inputs.rust_toolchains)}}
|
||||||
sys_name: ${{fromJSON(inputs.sys_names)}}
|
sys_name: ${{fromJSON(inputs.sys_names)}}
|
||||||
sys_target: ${{fromJSON(inputs.sys_targets)}}
|
|
||||||
sys_version: ${{fromJSON(inputs.sys_versions)}}
|
sys_version: ${{fromJSON(inputs.sys_versions)}}
|
||||||
|
rust_target: ${{fromJSON(inputs.rust_targets)}}
|
||||||
|
sys_target: ${{fromJSON(inputs.sys_targets)}}
|
||||||
|
machine: ${{fromJSON(inputs.machines)}}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: Execute
|
- name: Bake
|
||||||
env:
|
env:
|
||||||
bake_target: ${{matrix.bake_target}}
|
bake_target: ${{matrix.bake_target}}
|
||||||
cargo_profile: ${{matrix.cargo_profile}}
|
cargo_profile: ${{matrix.cargo_profile}}
|
||||||
feat_set: ${{matrix.feat_set}}
|
|
||||||
machine: ${{matrix.machine}}
|
|
||||||
rust_target: ${{matrix.rust_target}}
|
|
||||||
rust_toolchain: ${{matrix.rust_toolchain}}
|
rust_toolchain: ${{matrix.rust_toolchain}}
|
||||||
|
rust_target: ${{matrix.rust_target}}
|
||||||
|
feat_set: ${{matrix.feat_set}}
|
||||||
sys_name: ${{matrix.sys_name}}
|
sys_name: ${{matrix.sys_name}}
|
||||||
sys_target: ${{matrix.sys_target}}
|
|
||||||
sys_version: ${{matrix.sys_version}}
|
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_VERBOSE_ENV: ${{inputs.verbose_env}}
|
||||||
CI_SILENT_BAKE: ${{inputs.silent_bake}}
|
CI_SILENT_BAKE: ${{inputs.silent_bake}}
|
||||||
CI_PRINT_BAKE: ${{inputs.print_bake}}
|
CI_PRINT_BAKE: ${{inputs.print_bake}}
|
||||||
|
|||||||
18
.github/workflows/build.yml
vendored
18
.github/workflows/build.yml
vendored
@@ -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"]'
|
|
||||||
111
.github/workflows/deps.yml
vendored
111
.github/workflows/deps.yml
vendored
@@ -2,45 +2,142 @@ name: Dependencies
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_call:
|
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:
|
jobs:
|
||||||
systems:
|
systems:
|
||||||
|
if: inputs.show_systems
|
||||||
name: System
|
name: System
|
||||||
uses: ./.github/workflows/bake.yml
|
uses: ./.github/workflows/bake.yml
|
||||||
with:
|
with:
|
||||||
bake_targets: '["systems"]'
|
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:
|
buildsys:
|
||||||
|
if: inputs.show_systems
|
||||||
name: Builder
|
name: Builder
|
||||||
needs: [systems]
|
needs: [systems]
|
||||||
uses: ./.github/workflows/bake.yml
|
uses: ./.github/workflows/bake.yml
|
||||||
with:
|
with:
|
||||||
bake_targets: '["buildsys"]'
|
bake_targets: '["buildsys"]'
|
||||||
|
cargo_profiles: ${{inputs.cargo_profiles}}
|
||||||
tester:
|
feat_sets: ${{inputs.feat_sets}}
|
||||||
name: Tester
|
rust_toolchains: ${{inputs.rust_toolchains}}
|
||||||
needs: [systems]
|
sys_names: ${{inputs.sys_names}}
|
||||||
uses: ./.github/workflows/bake.yml
|
sys_versions: ${{inputs.sys_versions}}
|
||||||
with:
|
rust_targets: ${{inputs.rust_targets}}
|
||||||
bake_targets: '["complement-tester"]'
|
sys_targets: ${{inputs.sys_targets}}
|
||||||
|
machines: ${{inputs.machines}}
|
||||||
|
excludes: ${{inputs.excludes}}
|
||||||
|
includes: ${{inputs.includes}}
|
||||||
|
|
||||||
sources:
|
sources:
|
||||||
|
if: inputs.show_sources
|
||||||
name: Acquire
|
name: Acquire
|
||||||
needs: [buildsys]
|
needs: [buildsys]
|
||||||
uses: ./.github/workflows/bake.yml
|
uses: ./.github/workflows/bake.yml
|
||||||
with:
|
with:
|
||||||
bake_targets: '["sources"]'
|
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:
|
rocksdb:
|
||||||
|
if: inputs.show_rocksdb
|
||||||
name: RocksDB
|
name: RocksDB
|
||||||
needs: [sources]
|
needs: [sources]
|
||||||
uses: ./.github/workflows/bake.yml
|
uses: ./.github/workflows/bake.yml
|
||||||
with:
|
with:
|
||||||
bake_targets: '["rocksdb"]'
|
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:
|
deps:
|
||||||
|
if: inputs.show_cargo
|
||||||
name: Build
|
name: Build
|
||||||
needs: [rocksdb]
|
needs: [rocksdb]
|
||||||
uses: ./.github/workflows/bake.yml
|
uses: ./.github/workflows/bake.yml
|
||||||
with:
|
with:
|
||||||
bake_targets: '["deps-clippy", "deps-build-tests", "deps-build-bins"]'
|
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}}
|
||||||
|
|||||||
78
.github/workflows/lint.yml
vendored
78
.github/workflows/lint.yml
vendored
@@ -2,9 +2,43 @@ name: Linting
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_call:
|
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:
|
jobs:
|
||||||
fmt:
|
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
|
name: Format
|
||||||
uses: ./.github/workflows/bake.yml
|
uses: ./.github/workflows/bake.yml
|
||||||
with:
|
with:
|
||||||
@@ -12,8 +46,16 @@ jobs:
|
|||||||
cargo_profiles: '["test"]'
|
cargo_profiles: '["test"]'
|
||||||
feat_sets: '["none"]'
|
feat_sets: '["none"]'
|
||||||
rust_toolchains: '["nightly"]'
|
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:
|
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
|
name: Audit
|
||||||
uses: ./.github/workflows/bake.yml
|
uses: ./.github/workflows/bake.yml
|
||||||
with:
|
with:
|
||||||
@@ -21,8 +63,16 @@ jobs:
|
|||||||
cargo_profiles: '["test"]'
|
cargo_profiles: '["test"]'
|
||||||
feat_sets: '["none"]'
|
feat_sets: '["none"]'
|
||||||
rust_toolchains: '["nightly"]'
|
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:
|
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
|
name: Lychee
|
||||||
uses: ./.github/workflows/bake.yml
|
uses: ./.github/workflows/bake.yml
|
||||||
with:
|
with:
|
||||||
@@ -30,18 +80,46 @@ jobs:
|
|||||||
cargo_profiles: '["test"]'
|
cargo_profiles: '["test"]'
|
||||||
feat_sets: '["none"]'
|
feat_sets: '["none"]'
|
||||||
rust_toolchains: '["nightly"]'
|
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:
|
clippy:
|
||||||
|
if: ${{ always() }}
|
||||||
name: Clippy
|
name: Clippy
|
||||||
|
needs: [fmt, audit, lychee]
|
||||||
uses: ./.github/workflows/bake.yml
|
uses: ./.github/workflows/bake.yml
|
||||||
with:
|
with:
|
||||||
bake_targets: '["clippy"]'
|
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:
|
doc:
|
||||||
|
if: ${{contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])}}
|
||||||
name: Docs
|
name: Docs
|
||||||
needs: [clippy]
|
needs: [clippy]
|
||||||
uses: ./.github/workflows/bake.yml
|
uses: ./.github/workflows/bake.yml
|
||||||
with:
|
with:
|
||||||
bake_targets: '["docs"]'
|
bake_targets: '["docs"]'
|
||||||
cargo_profiles: '["test"]'
|
cargo_profiles: '["test"]'
|
||||||
|
feat_sets: ${{inputs.feat_sets}}
|
||||||
rust_toolchains: '["nightly"]'
|
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}}
|
||||||
|
|||||||
55
.github/workflows/main.yml
vendored
55
.github/workflows/main.yml
vendored
@@ -18,20 +18,61 @@ env:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
deps:
|
deps:
|
||||||
|
if: ${{vars.CI_VERBOSE_DEPS || false}}
|
||||||
name: Deps
|
name: Deps
|
||||||
uses: ./.github/workflows/deps.yml
|
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:
|
lint:
|
||||||
|
if: ${{ always() && !cancelled() }}
|
||||||
name: Lint
|
name: Lint
|
||||||
|
needs: [deps]
|
||||||
uses: ./.github/workflows/lint.yml
|
uses: ./.github/workflows/lint.yml
|
||||||
needs: [deps]
|
with:
|
||||||
|
cargo_profiles: ${{vars.CARGO_PROFILES}}
|
||||||
build:
|
feat_sets: ${{vars.FEAT_SETS}}
|
||||||
name: Build
|
rust_toolchains: ${{vars.RUST_TOOLCHAINS}}
|
||||||
uses: ./.github/workflows/build.yml
|
rust_targets: ${{vars.RUST_TARGETS}}
|
||||||
needs: [deps]
|
sys_names: ${{vars.SYS_NAMES}}
|
||||||
|
sys_targets: ${{vars.sys_TARGETS}}
|
||||||
|
sys_versions: ${{vars.SYS_VERSIONS}}
|
||||||
|
machines: ${{vars.MACHINES}}
|
||||||
|
|
||||||
test:
|
test:
|
||||||
|
if: ${{ always() && !cancelled() }}
|
||||||
name: Test
|
name: Test
|
||||||
|
needs: [lint]
|
||||||
uses: ./.github/workflows/test.yml
|
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}}
|
||||||
|
|||||||
89
.github/workflows/package.yml
vendored
Normal file
89
.github/workflows/package.yml
vendored
Normal file
@@ -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}}
|
||||||
121
.github/workflows/test.yml
vendored
121
.github/workflows/test.yml
vendored
@@ -5,82 +5,143 @@ on:
|
|||||||
inputs:
|
inputs:
|
||||||
cargo_profiles:
|
cargo_profiles:
|
||||||
type: string
|
type: string
|
||||||
default: ${{vars.CARGO_PROFILES || '["test", "bench", "release"]'}}
|
|
||||||
description: Cargo profiles
|
description: Cargo profiles
|
||||||
feat_sets:
|
feat_sets:
|
||||||
type: string
|
type: string
|
||||||
default: ${{vars.FEAT_SETS || '["none", "default", "all"]'}}
|
|
||||||
description: Cargo feature groups
|
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:
|
rust_toolchains:
|
||||||
type: string
|
type: string
|
||||||
default: ${{vars.RUST_TOOLCHAINS || '["nightly", "stable"]'}}
|
|
||||||
description: Rust toolchains
|
description: Rust toolchains
|
||||||
sys_names:
|
sys_names:
|
||||||
type: string
|
type: string
|
||||||
default: ${{vars.SYS_NAMES || '["debian"]'}}
|
|
||||||
description: System names
|
description: System names
|
||||||
sys_targets:
|
|
||||||
type: string
|
|
||||||
default: ${{vars.SYS_TARGETS || '["x86_64-linux-gnu"]'}}
|
|
||||||
description: System targets
|
|
||||||
sys_versions:
|
sys_versions:
|
||||||
type: string
|
type: string
|
||||||
default: ${{vars.SYS_VERSIONS || '["testing-slim"]'}}
|
|
||||||
description: System versions
|
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:
|
jobs:
|
||||||
unit:
|
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
|
name: Unit
|
||||||
uses: ./.github/workflows/bake.yml
|
uses: ./.github/workflows/bake.yml
|
||||||
with:
|
with:
|
||||||
bake_targets: '["tests-unit"]'
|
bake_targets: '["tests-unit"]'
|
||||||
cargo_profiles: '["test", "bench"]'
|
cargo_profiles: '["test"]'
|
||||||
feat_sets: '["all"]'
|
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:
|
smoke:
|
||||||
name: Smoke
|
name: Smoke
|
||||||
uses: ./.github/workflows/bake.yml
|
uses: ./.github/workflows/bake.yml
|
||||||
with:
|
with:
|
||||||
bake_targets: '["tests-smoke"]'
|
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:
|
complement:
|
||||||
name: Compliance
|
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])}}
|
||||||
needs: [smoke]
|
name: Matrix Compliance
|
||||||
|
needs: [complement_tester, complement_testee]
|
||||||
runs-on: ${{matrix.machine}}
|
runs-on: ${{matrix.machine}}
|
||||||
#concurrency: ${{matrix.feat_set}}-${{matrix.sys_name}}-${{matrix.sys_target}}-${{matrix.sys_version}}
|
concurrency:
|
||||||
concurrency: complement-cant-walk-and-chew-bubblegum
|
group: complement-cant-walk-and-chew-bubblegum
|
||||||
|
cancel-in-progress: false
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
cargo_profile: ${{fromJSON('["test"]')}}
|
cargo_profile: ${{fromJSON('["test"]')}}
|
||||||
feat_set: ${{fromJSON('["all"]')}}
|
|
||||||
machine: ${{fromJSON(inputs.machines)}}
|
|
||||||
rust_target: ${{fromJSON(inputs.rust_targets)}}
|
|
||||||
rust_toolchain: ${{fromJSON('["nightly"]')}}
|
rust_toolchain: ${{fromJSON('["nightly"]')}}
|
||||||
|
feat_set: ${{fromJSON('["all"]')}}
|
||||||
sys_name: ${{fromJSON(inputs.sys_names)}}
|
sys_name: ${{fromJSON(inputs.sys_names)}}
|
||||||
sys_target: ${{fromJSON(inputs.sys_targets)}}
|
|
||||||
sys_version: ${{fromJSON(inputs.sys_versions)}}
|
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:
|
steps:
|
||||||
- name: Complement
|
- name: Complement
|
||||||
env:
|
env:
|
||||||
cargo_profile: ${{matrix.cargo_profile}}
|
cargo_profile: ${{matrix.cargo_profile}}
|
||||||
feat_set: ${{matrix.feat_set}}
|
|
||||||
machine: ${{matrix.machine}}
|
|
||||||
rust_target: ${{matrix.rust_target}}
|
|
||||||
rust_toolchain: ${{matrix.rust_toolchain}}
|
rust_toolchain: ${{matrix.rust_toolchain}}
|
||||||
|
rust_target: ${{matrix.rust_target}}
|
||||||
|
feat_set: ${{matrix.feat_set}}
|
||||||
sys_name: ${{matrix.sys_name}}
|
sys_name: ${{matrix.sys_name}}
|
||||||
sys_target: ${{matrix.sys_target}}
|
sys_target: ${{matrix.sys_target}}
|
||||||
sys_version: ${{matrix.sys_version}}
|
sys_version: ${{matrix.sys_version}}
|
||||||
|
machine: ${{matrix.machine}}
|
||||||
|
|
||||||
run: |
|
run: |
|
||||||
docker/complement.sh
|
docker/complement.sh
|
||||||
|
|||||||
@@ -20,9 +20,8 @@ WORKDIR /usr/src/tuwunel
|
|||||||
RUN \
|
RUN \
|
||||||
--mount=type=cache,dst=${RUSTUP_HOME},sharing=locked \
|
--mount=type=cache,dst=${RUSTUP_HOME},sharing=locked \
|
||||||
--mount=type=cache,dst=${CARGO_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 \
|
||||||
<<EOF
|
<<EOF
|
||||||
env
|
|
||||||
set -eux
|
set -eux
|
||||||
rustup run ${rust_toolchain} \
|
rustup run ${rust_toolchain} \
|
||||||
cargo ${cargo_cmd} \
|
cargo ${cargo_cmd} \
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ RUN \
|
|||||||
--mount=type=cache,dst=${RUSTUP_HOME},sharing=locked \
|
--mount=type=cache,dst=${RUSTUP_HOME},sharing=locked \
|
||||||
--mount=type=cache,dst=${CARGO_HOME},sharing=locked \
|
--mount=type=cache,dst=${CARGO_HOME},sharing=locked \
|
||||||
<<EOF
|
<<EOF
|
||||||
env
|
|
||||||
set -eux
|
set -eux
|
||||||
rustup run ${rust_toolchain} \
|
rustup run ${rust_toolchain} \
|
||||||
cargo audit \
|
cargo audit \
|
||||||
|
|||||||
59
docker/Dockerfile.cargo.deb
Normal file
59
docker/Dockerfile.cargo.deb
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
# syntax = docker/dockerfile:1.11-labs
|
||||||
|
|
||||||
|
FROM input AS debuild
|
||||||
|
ARG sys_target
|
||||||
|
ARG rust_toolchain
|
||||||
|
ARG RUSTUP_HOME
|
||||||
|
ARG CARGO_HOME
|
||||||
|
ARG CARGO_TARGET
|
||||||
|
ARG CARGO_TARGET_DIR
|
||||||
|
ARG cargo_profile
|
||||||
|
ARG cargo_features
|
||||||
|
ARG cargo_spec_features
|
||||||
|
ARG pkg_dir
|
||||||
|
ARG deb_args=""
|
||||||
|
|
||||||
|
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=locked \
|
||||||
|
<<EOF
|
||||||
|
set -eux
|
||||||
|
mkdir -p "${pkg_dir}"
|
||||||
|
rustup run ${rust_toolchain} \
|
||||||
|
cargo deb \
|
||||||
|
--frozen \
|
||||||
|
--no-build \
|
||||||
|
"${cargo_spec_features}" \
|
||||||
|
--features "${cargo_features}" \
|
||||||
|
--profile "${cargo_profile}" \
|
||||||
|
--target "${CARGO_TARGET}" \
|
||||||
|
--manifest-path Cargo.toml \
|
||||||
|
--multiarch same \
|
||||||
|
--compress-type gz \
|
||||||
|
--output "${pkg_dir}" \
|
||||||
|
${deb_args}
|
||||||
|
|
||||||
|
dpkg --info ${pkg_dir}/*
|
||||||
|
dpkg --contents ${pkg_dir}/*
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
FROM scratch AS package
|
||||||
|
ARG pkg_dir
|
||||||
|
|
||||||
|
COPY --from=debuild ${pkg_dir}/* .
|
||||||
|
|
||||||
|
|
||||||
|
FROM input AS package-install
|
||||||
|
ARG pkg_dir
|
||||||
|
|
||||||
|
WORKDIR ${pkg_dir}
|
||||||
|
COPY --from=package . .
|
||||||
|
RUN <<EOF
|
||||||
|
set -eux
|
||||||
|
dpkg --info *
|
||||||
|
dpkg --contents *
|
||||||
|
dpkg --install *
|
||||||
|
EOF
|
||||||
@@ -24,7 +24,6 @@ RUN \
|
|||||||
--mount=type=cache,dst=${CARGO_HOME},sharing=locked \
|
--mount=type=cache,dst=${CARGO_HOME},sharing=locked \
|
||||||
--mount=type=cache,dst=${CARGO_TARGET_DIR},sharing=locked \
|
--mount=type=cache,dst=${CARGO_TARGET_DIR},sharing=locked \
|
||||||
<<EOF
|
<<EOF
|
||||||
env
|
|
||||||
set -eux
|
set -eux
|
||||||
rustup run ${rust_toolchain} \
|
rustup run ${rust_toolchain} \
|
||||||
cargo chef cook ${cook_args} \
|
cargo chef cook ${cook_args} \
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ RUN \
|
|||||||
--mount=type=cache,dst=${RUSTUP_HOME},sharing=locked \
|
--mount=type=cache,dst=${RUSTUP_HOME},sharing=locked \
|
||||||
--mount=type=cache,dst=${CARGO_HOME},sharing=locked \
|
--mount=type=cache,dst=${CARGO_HOME},sharing=locked \
|
||||||
<<EOF
|
<<EOF
|
||||||
env
|
|
||||||
set -eux
|
set -eux
|
||||||
rustup run ${rust_toolchain} \
|
rustup run ${rust_toolchain} \
|
||||||
cargo fmt \
|
cargo fmt \
|
||||||
|
|||||||
@@ -22,9 +22,8 @@ WORKDIR /usr/src/tuwunel
|
|||||||
RUN \
|
RUN \
|
||||||
--mount=type=cache,dst=${RUSTUP_HOME},sharing=locked \
|
--mount=type=cache,dst=${RUSTUP_HOME},sharing=locked \
|
||||||
--mount=type=cache,dst=${CARGO_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 \
|
||||||
<<EOF
|
<<EOF
|
||||||
env
|
|
||||||
set -eux
|
set -eux
|
||||||
case "$cargo_profile" in
|
case "$cargo_profile" in
|
||||||
"dev") profile_dir="debug";;
|
"dev") profile_dir="debug";;
|
||||||
@@ -63,7 +62,6 @@ WORKDIR /
|
|||||||
RUN \
|
RUN \
|
||||||
--mount=type=bind,from=output,src=${install_temp},dst=/mnt/install \
|
--mount=type=bind,from=output,src=${install_temp},dst=/mnt/install \
|
||||||
<<EOF
|
<<EOF
|
||||||
env
|
|
||||||
set -eux
|
set -eux
|
||||||
cp -ndR --preserve=all -t ${CARGO_INSTALL_ROOT} /mnt/install/*
|
cp -ndR --preserve=all -t ${CARGO_INSTALL_ROOT} /mnt/install/*
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ RUN \
|
|||||||
--mount=type=cache,dst=${RUSTUP_HOME},sharing=locked \
|
--mount=type=cache,dst=${RUSTUP_HOME},sharing=locked \
|
||||||
--mount=type=cache,dst=${CARGO_HOME},sharing=locked \
|
--mount=type=cache,dst=${CARGO_HOME},sharing=locked \
|
||||||
<<EOF
|
<<EOF
|
||||||
env
|
|
||||||
set -eux
|
set -eux
|
||||||
rustup run ${rust_toolchain} \
|
rustup run ${rust_toolchain} \
|
||||||
lychee \
|
lychee \
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ RUN \
|
|||||||
--mount=type=cache,dst=${RUSTUP_HOME},sharing=locked \
|
--mount=type=cache,dst=${RUSTUP_HOME},sharing=locked \
|
||||||
--mount=type=cache,dst=${CARGO_HOME},sharing=locked \
|
--mount=type=cache,dst=${CARGO_HOME},sharing=locked \
|
||||||
<<EOF
|
<<EOF
|
||||||
env
|
|
||||||
set -eux
|
set -eux
|
||||||
|
|
||||||
url="https://static.rust-lang.org/rustup/archive/${rustup_version}/${CARGO_TARGET}/rustup-init"
|
url="https://static.rust-lang.org/rustup/archive/${rustup_version}/${CARGO_TARGET}/rustup-init"
|
||||||
@@ -34,7 +33,6 @@ RUN \
|
|||||||
--mount=type=cache,dst=${RUSTUP_HOME},sharing=locked \
|
--mount=type=cache,dst=${RUSTUP_HOME},sharing=locked \
|
||||||
--mount=type=cache,dst=${CARGO_HOME},sharing=locked \
|
--mount=type=cache,dst=${CARGO_HOME},sharing=locked \
|
||||||
<<EOF
|
<<EOF
|
||||||
env
|
|
||||||
set -eux
|
set -eux
|
||||||
rustup component add \
|
rustup component add \
|
||||||
--toolchain ${rust_toolchain} \
|
--toolchain ${rust_toolchain} \
|
||||||
@@ -55,7 +53,6 @@ RUN \
|
|||||||
--mount=type=cache,dst=${RUSTUP_HOME},sharing=locked \
|
--mount=type=cache,dst=${RUSTUP_HOME},sharing=locked \
|
||||||
--mount=type=cache,dst=${CARGO_HOME},sharing=locked \
|
--mount=type=cache,dst=${CARGO_HOME},sharing=locked \
|
||||||
<<EOF
|
<<EOF
|
||||||
env
|
|
||||||
set -eux
|
set -eux
|
||||||
rustup run --install ${rust_toolchain} \
|
rustup run --install ${rust_toolchain} \
|
||||||
cargo install \
|
cargo install \
|
||||||
@@ -64,6 +61,8 @@ RUN \
|
|||||||
cargo-chef \
|
cargo-chef \
|
||||||
cargo-audit \
|
cargo-audit \
|
||||||
cargo-deb \
|
cargo-deb \
|
||||||
|
cargo-arch \
|
||||||
|
cargo-generate-rpm \
|
||||||
lychee \
|
lychee \
|
||||||
;
|
;
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ ARG git_checkout
|
|||||||
ADD --keep-git-dir . /usr/src/tuwunel
|
ADD --keep-git-dir . /usr/src/tuwunel
|
||||||
WORKDIR /usr/src/tuwunel
|
WORKDIR /usr/src/tuwunel
|
||||||
RUN <<EOF
|
RUN <<EOF
|
||||||
env
|
|
||||||
set -eux
|
set -eux
|
||||||
git reset \
|
git reset \
|
||||||
--hard \
|
--hard \
|
||||||
@@ -31,7 +30,6 @@ RUN \
|
|||||||
--mount=type=cache,dst=${CARGO_HOME},sharing=locked \
|
--mount=type=cache,dst=${CARGO_HOME},sharing=locked \
|
||||||
--mount=type=cache,dst=${CARGO_TARGET_DIR},sharing=locked \
|
--mount=type=cache,dst=${CARGO_TARGET_DIR},sharing=locked \
|
||||||
<<EOF
|
<<EOF
|
||||||
env
|
|
||||||
set -eux
|
set -eux
|
||||||
git submodule update \
|
git submodule update \
|
||||||
--remote \
|
--remote \
|
||||||
@@ -60,7 +58,6 @@ RUN \
|
|||||||
--mount=type=cache,dst=${CARGO_HOME},sharing=locked \
|
--mount=type=cache,dst=${CARGO_HOME},sharing=locked \
|
||||||
--mount=type=cache,dst=${CARGO_TARGET_DIR},sharing=locked \
|
--mount=type=cache,dst=${CARGO_TARGET_DIR},sharing=locked \
|
||||||
<<EOF
|
<<EOF
|
||||||
env
|
|
||||||
set -euxo pipefail
|
set -euxo pipefail
|
||||||
rustup run ${rust_toolchain} \
|
rustup run ${rust_toolchain} \
|
||||||
cargo chef prepare \
|
cargo chef prepare \
|
||||||
|
|||||||
@@ -36,7 +36,9 @@ ENV CC="clang"
|
|||||||
ENV CXX="clang++"
|
ENV CXX="clang++"
|
||||||
WORKDIR /usr/src/rocksdb/librocksdb-sys/rocksdb
|
WORKDIR /usr/src/rocksdb/librocksdb-sys/rocksdb
|
||||||
ENV nprocs=${nprocs}
|
ENV nprocs=${nprocs}
|
||||||
RUN <<EOF
|
RUN \
|
||||||
|
--mount=type=cache,dst=/var/lock/uwu/${rocksdb_jemalloc}/${rocksdb_iouring},sharing=locked \
|
||||||
|
<<EOF
|
||||||
set -eux
|
set -eux
|
||||||
|
|
||||||
LDFLAGS="-Wl,--strip-all" \
|
LDFLAGS="-Wl,--strip-all" \
|
||||||
|
|||||||
173
docker/bake.hcl
173
docker/bake.hcl
@@ -1,5 +1,8 @@
|
|||||||
variable "acct" {}
|
variable "acct" {}
|
||||||
variable "repo" {}
|
variable "repo" {}
|
||||||
|
variable GITHUB_REF {}
|
||||||
|
variable GITHUB_REF_SHA {}
|
||||||
|
variable GITHUB_REF_NAME {}
|
||||||
|
|
||||||
cargo_feat_sets = {
|
cargo_feat_sets = {
|
||||||
none = ""
|
none = ""
|
||||||
@@ -74,7 +77,7 @@ variable "package_authors" {
|
|||||||
default = "Jason Volk <jason@zemos.net>"
|
default = "Jason Volk <jason@zemos.net>"
|
||||||
}
|
}
|
||||||
variable "package_version" {
|
variable "package_version" {
|
||||||
default = "0.5"
|
default = "1.0"
|
||||||
}
|
}
|
||||||
variable "package_revision" {
|
variable "package_revision" {
|
||||||
default = ""
|
default = ""
|
||||||
@@ -177,6 +180,43 @@ sys = {
|
|||||||
sys_target = jsondecode(sys_targets)
|
sys_target = jsondecode(sys_targets)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Publish
|
||||||
|
#
|
||||||
|
|
||||||
|
group "publish" {
|
||||||
|
targets = [
|
||||||
|
"dockerhub",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
target "dockerhub" {
|
||||||
|
name = elem("dockerhub", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
||||||
|
tags = [
|
||||||
|
"${repo}:${cargo_profile}-${feat_set}-${sys_target}",
|
||||||
|
(GITHUB_REF_NAME == "main" && cargo_profile == "release" && feat_set == "all")?
|
||||||
|
"${repo}:main": "",
|
||||||
|
(GITHUB_REF_NAME == "main" && cargo_profile == "release" && feat_set == "all")?
|
||||||
|
"${repo}:${GITHUB_REF_NAME}": "",
|
||||||
|
(GITHUB_REF_NAME == "main" && cargo_profile == "release" && feat_set == "all")?
|
||||||
|
"${repo}:latest": "",
|
||||||
|
]
|
||||||
|
output = ["type=registry,compression=zstd,mode=min"]
|
||||||
|
matrix = cargo_rust_feat_sys
|
||||||
|
inherits = [
|
||||||
|
elem("install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
||||||
|
]
|
||||||
|
contexts = {
|
||||||
|
input = elem("target:install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
||||||
|
}
|
||||||
|
target = "dockerhub"
|
||||||
|
dockerfile-inline =<<EOF
|
||||||
|
FROM input AS dockerhub
|
||||||
|
EXPOSE 8008 8448
|
||||||
|
ENTRYPOINT ["${cargo_install_root}/bin/tuwunel"]
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Complement tests
|
# Complement tests
|
||||||
#
|
#
|
||||||
@@ -222,12 +262,9 @@ target "complement-testee" {
|
|||||||
elem_tag("complement-testee", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
|
elem_tag("complement-testee", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
|
||||||
]
|
]
|
||||||
target = "complement-testee"
|
target = "complement-testee"
|
||||||
|
output = ["type=docker,compression=zstd,mode=min"]
|
||||||
entitlements = ["network.host"]
|
entitlements = ["network.host"]
|
||||||
dockerfile = "docker/Dockerfile.complement"
|
dockerfile = "docker/Dockerfile.complement"
|
||||||
labels = {
|
|
||||||
"_group" = "complement"
|
|
||||||
"_cache" = "leaf"
|
|
||||||
}
|
|
||||||
matrix = cargo_rust_feat_sys
|
matrix = cargo_rust_feat_sys
|
||||||
inherits = [
|
inherits = [
|
||||||
elem("install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
elem("install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
||||||
@@ -299,10 +336,6 @@ target "complement-config" {
|
|||||||
]
|
]
|
||||||
target = "complement-config"
|
target = "complement-config"
|
||||||
dockerfile = "docker/Dockerfile.complement"
|
dockerfile = "docker/Dockerfile.complement"
|
||||||
labels = {
|
|
||||||
"_group" = "complement"
|
|
||||||
"_cache" = "trunk"
|
|
||||||
}
|
|
||||||
matrix = feat_sys
|
matrix = feat_sys
|
||||||
inherits = [
|
inherits = [
|
||||||
elem("source", [feat_set, sys_name, sys_version, sys_target])
|
elem("source", [feat_set, sys_name, sys_version, sys_target])
|
||||||
@@ -388,12 +421,8 @@ target "smoketest" {
|
|||||||
tags = [
|
tags = [
|
||||||
elem_tag("smoketest", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
|
elem_tag("smoketest", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
|
||||||
]
|
]
|
||||||
output = ["type=docker,compression=zstd,mode=min"]
|
output = ["type=cacheonly,compression=zstd,mode=min"]
|
||||||
dockerfile = "docker/Dockerfile.smoketest"
|
dockerfile = "docker/Dockerfile.smoketest"
|
||||||
labels = {
|
|
||||||
"_group" = "smoketest"
|
|
||||||
"_cache" = "leaf"
|
|
||||||
}
|
|
||||||
matrix = cargo_rust_feat_sys
|
matrix = cargo_rust_feat_sys
|
||||||
inherits = [
|
inherits = [
|
||||||
elem("install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
elem("install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
||||||
@@ -410,7 +439,7 @@ target "smoketest" {
|
|||||||
install_labels = {
|
install_labels = {
|
||||||
"org.opencontainers.image.authors" = "${package_authors}"
|
"org.opencontainers.image.authors" = "${package_authors}"
|
||||||
"org.opencontainers.image.created" ="${package_last_modified}"
|
"org.opencontainers.image.created" ="${package_last_modified}"
|
||||||
"org.opencontainers.image.description" = "Enterprise Matrix Chat Server in Rust"
|
"org.opencontainers.image.description" = "Matrix Chat Server in Rust"
|
||||||
"org.opencontainers.image.documentation" = "https://github.com/matrix-construct/tuwunel/tree/main/docs/"
|
"org.opencontainers.image.documentation" = "https://github.com/matrix-construct/tuwunel/tree/main/docs/"
|
||||||
"org.opencontainers.image.licenses" = "Apache-2.0"
|
"org.opencontainers.image.licenses" = "Apache-2.0"
|
||||||
"org.opencontainers.image.revision" = "${package_revision}"
|
"org.opencontainers.image.revision" = "${package_revision}"
|
||||||
@@ -447,10 +476,6 @@ target "installer" {
|
|||||||
]
|
]
|
||||||
target = "installer"
|
target = "installer"
|
||||||
dockerfile = "docker/Dockerfile.cargo.install"
|
dockerfile = "docker/Dockerfile.cargo.install"
|
||||||
labels = {
|
|
||||||
"_group" = "install"
|
|
||||||
"_cache" = "trunk"
|
|
||||||
}
|
|
||||||
matrix = cargo_rust_feat_sys
|
matrix = cargo_rust_feat_sys
|
||||||
inherits = [
|
inherits = [
|
||||||
elem("deps-build-bins", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
elem("deps-build-bins", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
||||||
@@ -465,6 +490,68 @@ target "installer" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Package
|
||||||
|
#
|
||||||
|
|
||||||
|
group "pkg" {
|
||||||
|
targets = [
|
||||||
|
"pkg-deb-install",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
target "pkg-deb-install" {
|
||||||
|
name = elem("pkg-deb-install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
||||||
|
tags = [
|
||||||
|
elem_tag("pkg-deb-install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
|
||||||
|
]
|
||||||
|
target = "package-install"
|
||||||
|
output = ["type=cacheonly,compression=zstd,mode=min"]
|
||||||
|
matrix = cargo_rust_feat_sys
|
||||||
|
inherits = [
|
||||||
|
elem("pkg-deb", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
||||||
|
]
|
||||||
|
contexts = {
|
||||||
|
input = elem("target:diner", [feat_set, sys_name, sys_version, sys_target])
|
||||||
|
package = elem("target:pkg-deb", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
target "pkg-deb" {
|
||||||
|
name = elem("pkg-deb", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
||||||
|
tags = [
|
||||||
|
elem_tag("pkg-deb", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
|
||||||
|
]
|
||||||
|
target = "package"
|
||||||
|
output = ["type=docker,compression=zstd,mode=min"]
|
||||||
|
matrix = cargo_rust_feat_sys
|
||||||
|
inherits = [
|
||||||
|
elem("debuild", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
||||||
|
]
|
||||||
|
contexts = {
|
||||||
|
debuild = elem("target:debuild", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
target "debuild" {
|
||||||
|
name = elem("debuild", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
||||||
|
tags = [
|
||||||
|
elem_tag("debuild", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
|
||||||
|
]
|
||||||
|
target = "debuild"
|
||||||
|
dockerfile = "docker/Dockerfile.cargo.deb"
|
||||||
|
matrix = cargo_rust_feat_sys
|
||||||
|
inherits = [
|
||||||
|
elem("build-bins", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
||||||
|
]
|
||||||
|
contexts = {
|
||||||
|
input = elem("target:build-bins", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
||||||
|
}
|
||||||
|
args = {
|
||||||
|
pkg_dir = "/opt/tuwunel/deb"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Unit tests
|
# Unit tests
|
||||||
#
|
#
|
||||||
@@ -485,11 +572,6 @@ target "tests-bench" {
|
|||||||
elem_tag("tests-bench", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
|
elem_tag("tests-bench", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
|
||||||
]
|
]
|
||||||
target = "cargo"
|
target = "cargo"
|
||||||
output = ["type=docker,compression=zstd,mode=min"]
|
|
||||||
labels = {
|
|
||||||
"_group" = "tests"
|
|
||||||
"_cache" = "leaf"
|
|
||||||
}
|
|
||||||
matrix = cargo_bench_matrix
|
matrix = cargo_bench_matrix
|
||||||
inherits = [
|
inherits = [
|
||||||
elem("build-bench", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
elem("build-bench", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
||||||
@@ -509,11 +591,6 @@ target "tests-unit" {
|
|||||||
elem_tag("tests-unit", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
|
elem_tag("tests-unit", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
|
||||||
]
|
]
|
||||||
target = "cargo"
|
target = "cargo"
|
||||||
output = ["type=docker,compression=zstd,mode=min"]
|
|
||||||
labels = {
|
|
||||||
"_group" = "tests"
|
|
||||||
"_cache" = "leaf"
|
|
||||||
}
|
|
||||||
matrix = cargo_rust_feat_sys
|
matrix = cargo_rust_feat_sys
|
||||||
inherits = [
|
inherits = [
|
||||||
elem("build-tests", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
elem("build-tests", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
||||||
@@ -743,13 +820,9 @@ target "fmt" {
|
|||||||
target "cargo" {
|
target "cargo" {
|
||||||
name = elem("cargo", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
name = elem("cargo", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
||||||
target = "cargo"
|
target = "cargo"
|
||||||
output = ["type=docker,compression=zstd,mode=min"]
|
output = ["type=cacheonly,compression=zstd,mode=min"]
|
||||||
cache_to = ["type=local,compression=zstd,mode=min"]
|
cache_to = ["type=local,compression=zstd,mode=min"]
|
||||||
dockerfile = "docker/Dockerfile.cargo"
|
dockerfile = "docker/Dockerfile.cargo"
|
||||||
labels = {
|
|
||||||
"_group" = "cargo"
|
|
||||||
"_cache" = "trunk"
|
|
||||||
}
|
|
||||||
matrix = cargo_rust_feat_sys
|
matrix = cargo_rust_feat_sys
|
||||||
inherits = [
|
inherits = [
|
||||||
elem("deps-base", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
elem("deps-base", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
||||||
@@ -861,13 +934,9 @@ target "deps-base" {
|
|||||||
elem_tag("deps-base", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest")
|
elem_tag("deps-base", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest")
|
||||||
]
|
]
|
||||||
target = "deps"
|
target = "deps"
|
||||||
output = ["type=docker,compression=zstd,mode=min"]
|
output = ["type=cacheonly,compression=zstd,mode=min"]
|
||||||
cache_to = ["type=local,compression=zstd,mode=min"]
|
cache_to = ["type=local,compression=zstd,mode=min"]
|
||||||
dockerfile = "docker/Dockerfile.cargo.deps"
|
dockerfile = "docker/Dockerfile.cargo.deps"
|
||||||
labels = {
|
|
||||||
"_group" = "deps"
|
|
||||||
"_cache" = "trunk"
|
|
||||||
}
|
|
||||||
matrix = cargo_rust_feat_sys
|
matrix = cargo_rust_feat_sys
|
||||||
inherits = [
|
inherits = [
|
||||||
elem("recipe", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
elem("recipe", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
||||||
@@ -893,7 +962,7 @@ target "rocksdb" {
|
|||||||
elem_tag("rocksdb", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
|
elem_tag("rocksdb", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
|
||||||
]
|
]
|
||||||
target = "rocksdb"
|
target = "rocksdb"
|
||||||
output = ["type=docker,compression=zstd,mode=min"]
|
output = ["type=cacheonly,compression=zstd,mode=min"]
|
||||||
matrix = rust_feat_sys
|
matrix = rust_feat_sys
|
||||||
inherits = [
|
inherits = [
|
||||||
elem("rocksdb-build", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
elem("rocksdb-build", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
||||||
@@ -934,10 +1003,6 @@ target "rocksdb-fetch" {
|
|||||||
]
|
]
|
||||||
target = "rocksdb-fetch"
|
target = "rocksdb-fetch"
|
||||||
dockerfile = "docker/Dockerfile.rocksdb"
|
dockerfile = "docker/Dockerfile.rocksdb"
|
||||||
labels = {
|
|
||||||
"_group" = "rocksdb"
|
|
||||||
"_cache" = "trunk"
|
|
||||||
}
|
|
||||||
matrix = rust_feat_sys
|
matrix = rust_feat_sys
|
||||||
inherits = [
|
inherits = [
|
||||||
elem("recipe", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
elem("recipe", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
||||||
@@ -968,7 +1033,7 @@ target "recipe" {
|
|||||||
elem_tag("recipe", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest")
|
elem_tag("recipe", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest")
|
||||||
]
|
]
|
||||||
target = "recipe"
|
target = "recipe"
|
||||||
output = ["type=docker,compression=zstd,mode=min"]
|
output = ["type=cacheonly,compression=zstd,mode=min"]
|
||||||
matrix = rust_feat_sys
|
matrix = rust_feat_sys
|
||||||
inherits = [
|
inherits = [
|
||||||
elem("preparing", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
elem("preparing", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
||||||
@@ -1043,10 +1108,6 @@ target "source" {
|
|||||||
]
|
]
|
||||||
target = "source"
|
target = "source"
|
||||||
dockerfile = "docker/Dockerfile.ingredients"
|
dockerfile = "docker/Dockerfile.ingredients"
|
||||||
labels = {
|
|
||||||
"_group" = "sources"
|
|
||||||
"_cache" = "trunk"
|
|
||||||
}
|
|
||||||
matrix = feat_sys
|
matrix = feat_sys
|
||||||
inherits = [
|
inherits = [
|
||||||
elem("kitchen", [feat_set, sys_name, sys_version, sys_target])
|
elem("kitchen", [feat_set, sys_name, sys_version, sys_target])
|
||||||
@@ -1126,10 +1187,6 @@ target "kitchen" {
|
|||||||
]
|
]
|
||||||
target = "kitchen"
|
target = "kitchen"
|
||||||
dockerfile = "docker/Dockerfile.kitchen"
|
dockerfile = "docker/Dockerfile.kitchen"
|
||||||
labels = {
|
|
||||||
"_group" = "buildsys"
|
|
||||||
"_cache" = "trunk"
|
|
||||||
}
|
|
||||||
matrix = feat_sys
|
matrix = feat_sys
|
||||||
inherits = [
|
inherits = [
|
||||||
elem("diner", [feat_set, sys_name, sys_version, sys_target])
|
elem("diner", [feat_set, sys_name, sys_version, sys_target])
|
||||||
@@ -1211,7 +1268,6 @@ target "diner" {
|
|||||||
elem_tag("diner", [feat_set, sys_name, sys_version, sys_target], "latest"),
|
elem_tag("diner", [feat_set, sys_name, sys_version, sys_target], "latest"),
|
||||||
]
|
]
|
||||||
target = "diner"
|
target = "diner"
|
||||||
output = ["type=docker,compression=zstd,mode=min"]
|
|
||||||
dockerfile = "docker/Dockerfile.diner"
|
dockerfile = "docker/Dockerfile.diner"
|
||||||
matrix = feat_sys
|
matrix = feat_sys
|
||||||
variable "cargo_feat_set" {
|
variable "cargo_feat_set" {
|
||||||
@@ -1231,6 +1287,9 @@ target "diner" {
|
|||||||
var_lib_apt = "/var/lib/apt"
|
var_lib_apt = "/var/lib/apt"
|
||||||
var_cache = "/var/cache"
|
var_cache = "/var/cache"
|
||||||
packages = join(" ", [
|
packages = join(" ", [
|
||||||
|
"adduser",
|
||||||
|
"bzip2",
|
||||||
|
"gzip",
|
||||||
contains(split(",", cargo_feat_sets[feat_set]), "io_uring")? "liburing2": "",
|
contains(split(",", cargo_feat_sets[feat_set]), "io_uring")? "liburing2": "",
|
||||||
contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? "libzstd1": "",
|
contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? "libzstd1": "",
|
||||||
contains(split(",", cargo_feat_sets[feat_set]), "jemalloc")? "libjemalloc2": "",
|
contains(split(",", cargo_feat_sets[feat_set]), "jemalloc")? "libjemalloc2": "",
|
||||||
@@ -1249,14 +1308,10 @@ target "system" {
|
|||||||
elem_tag("system", [sys_name, sys_version, sys_target], "latest"),
|
elem_tag("system", [sys_name, sys_version, sys_target], "latest"),
|
||||||
]
|
]
|
||||||
target = "system"
|
target = "system"
|
||||||
output = ["type=docker,compression=zstd,mode=min"]
|
output = ["type=cacheonly,compression=zstd,mode=min"]
|
||||||
cache_to = ["type=local,compression=zstd,mode=max"]
|
cache_to = ["type=local,compression=zstd,mode=max"]
|
||||||
cache_from = ["type=local"]
|
cache_from = ["type=local"]
|
||||||
dockerfile = "docker/Dockerfile.diner"
|
dockerfile = "docker/Dockerfile.diner"
|
||||||
labels = {
|
|
||||||
"_group" = "systems"
|
|
||||||
"_cache" = "trunk"
|
|
||||||
}
|
|
||||||
matrix = sys
|
matrix = sys
|
||||||
context = "."
|
context = "."
|
||||||
args = {
|
args = {
|
||||||
|
|||||||
@@ -9,9 +9,9 @@ CI_VERBOSE_ENV="${CI_VERBOSE_ENV:-$CI_VERBOSE}"
|
|||||||
CI_SILENT_BAKE="${CI_SILENT_BAKE:-false}"
|
CI_SILENT_BAKE="${CI_SILENT_BAKE:-false}"
|
||||||
CI_PRINT_BAKE="${CI_PRINT_BAKE:-$CI_VERBOSE}"
|
CI_PRINT_BAKE="${CI_PRINT_BAKE:-$CI_VERBOSE}"
|
||||||
|
|
||||||
default_cargo_profiles='["test", "bench"]'
|
default_cargo_profiles='["release"]'
|
||||||
default_feat_sets='["none", "default", "all"]'
|
default_feat_sets='["all"]'
|
||||||
default_rust_toolchains='["nightly", "stable"]'
|
default_rust_toolchains='["stable"]'
|
||||||
default_rust_targets='["x86_64-unknown-linux-gnu"]'
|
default_rust_targets='["x86_64-unknown-linux-gnu"]'
|
||||||
default_sys_names='["debian"]'
|
default_sys_names='["debian"]'
|
||||||
default_sys_targets='["x86_64-linux-gnu"]'
|
default_sys_targets='["x86_64-linux-gnu"]'
|
||||||
@@ -79,6 +79,7 @@ if test "$CI" = "true"; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
args=""
|
args=""
|
||||||
|
args="$args --allow=network.host"
|
||||||
args="$args --builder ${builder_name}"
|
args="$args --builder ${builder_name}"
|
||||||
#args="$args --set *.platform=${sys_platform}"
|
#args="$args --set *.platform=${sys_platform}"
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ if test "$CI_VERBOSE_ENV" = "true"; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
set -x -e
|
set -x -e
|
||||||
cid=$(docker run -d $arg)
|
cid=$(docker run $arg)
|
||||||
set +x
|
set +x
|
||||||
|
|
||||||
trap 'docker container stop $cid; set +x; date; echo -e "\033[1;41;37mFAIL\033[0m"' INT
|
trap 'docker container stop $cid; set +x; date; echo -e "\033[1;41;37mFAIL\033[0m"' INT
|
||||||
|
|||||||
@@ -12,10 +12,10 @@ OCI images for tuwunel are available in the registries listed below.
|
|||||||
| Registry | Image | Size | Notes |
|
| Registry | Image | Size | Notes |
|
||||||
| --------------- | --------------------------------------------------------------- | ----------------------------- | ---------------------- |
|
| --------------- | --------------------------------------------------------------- | ----------------------------- | ---------------------- |
|
||||||
| GitHub Registry | [ghcr.io/jevolk/tuwunel:latest][gh] | ![Image Size][shield-latest] | Stable latest tagged image. |
|
| GitHub Registry | [ghcr.io/jevolk/tuwunel:latest][gh] | ![Image Size][shield-latest] | Stable latest tagged image. |
|
||||||
| GitLab Registry | [registry.gitlab.com/tuwunel/tuwunel:latest][gl] | ![Image Size][shield-latest] | Stable latest tagged image. |
|
| GitLab Registry | [registry.gitlab.com/jevolk/tuwunel:latest][gl] | ![Image Size][shield-latest] | Stable latest tagged image. |
|
||||||
| Docker Hub | [docker.io/jevolk/tuwunel:latest][dh] | ![Image Size][shield-latest] | Stable latest tagged image. |
|
| Docker Hub | [docker.io/jevolk/tuwunel:latest][dh] | ![Image Size][shield-latest] | Stable latest tagged image. |
|
||||||
| GitHub Registry | [ghcr.io/jevolk/tuwunel:main][gh] | ![Image Size][shield-main] | Stable main branch. |
|
| GitHub Registry | [ghcr.io/jevolk/tuwunel:main][gh] | ![Image Size][shield-main] | Stable main branch. |
|
||||||
| GitLab Registry | [registry.gitlab.com/tuwunel/tuwunel:main][gl] | ![Image Size][shield-main] | Stable main branch. |
|
| GitLab Registry | [registry.gitlab.com/jevolk/tuwunel:main][gl] | ![Image Size][shield-main] | Stable main branch. |
|
||||||
| Docker Hub | [docker.io/jevolk/tuwunel:main][dh] | ![Image Size][shield-main] | Stable main branch. |
|
| Docker Hub | [docker.io/jevolk/tuwunel:main][dh] | ![Image Size][shield-main] | Stable main branch. |
|
||||||
|
|
||||||
[dh]: https://hub.docker.com/r/jevolk/tuwunel
|
[dh]: https://hub.docker.com/r/jevolk/tuwunel
|
||||||
@@ -42,8 +42,8 @@ When you have the image you can simply run it with
|
|||||||
```bash
|
```bash
|
||||||
docker run -d -p 8448:6167 \
|
docker run -d -p 8448:6167 \
|
||||||
-v db:/var/lib/tuwunel/ \
|
-v db:/var/lib/tuwunel/ \
|
||||||
-e tuwunel_SERVER_NAME="your.server.name" \
|
-e TUWUNEL_SERVER_NAME="your.server.name" \
|
||||||
-e tuwunel_ALLOW_REGISTRATION=false \
|
-e TUWUNEL_ALLOW_REGISTRATION=false \
|
||||||
--name tuwunel $LINK
|
--name tuwunel $LINK
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ systemd-units = { unit-name = "tuwunel", start = false }
|
|||||||
assets = [
|
assets = [
|
||||||
["../../debian/README.md", "usr/share/doc/tuwunel/README.Debian", "644"],
|
["../../debian/README.md", "usr/share/doc/tuwunel/README.Debian", "644"],
|
||||||
["../../README.md", "usr/share/doc/tuwunel/", "644"],
|
["../../README.md", "usr/share/doc/tuwunel/", "644"],
|
||||||
["../../target/release/tuwunel", "usr/sbin/tuwunel", "755"],
|
["target/release/tuwunel", "usr/sbin/tuwunel", "755"],
|
||||||
["../../tuwunel-example.toml", "etc/tuwunel/tuwunel.toml", "640"],
|
["../../tuwunel-example.toml", "etc/tuwunel/tuwunel.toml", "640"],
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user