ci: Add multi-runner/multi-arch to matrices. (closes #55)

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk
2025-06-16 03:19:34 +00:00
parent fc3fcf4526
commit 83ceda808c
9 changed files with 172 additions and 70 deletions

View File

@@ -30,6 +30,10 @@ on:
machines: machines:
type: string type: string
description: Hardware platforms description: Hardware platforms
runner:
type: string
description: Runner mask
default: 'self-hosted'
excludes: excludes:
type: string type: string
default: '[]' default: '[]'
@@ -86,7 +90,7 @@ jobs:
${{matrix.sys_version}} ${{matrix.sys_version}}
${{matrix.sys_target}} ${{matrix.sys_target}}
runs-on: ${{matrix.machine}} runs-on: ["${{matrix.machine}}", "${{inputs.runner}}"]
strategy: strategy:
fail-fast: ${{inputs.fail_fast}} fail-fast: ${{inputs.fail_fast}}
max-parallel: ${{inputs.max-parallel}} max-parallel: ${{inputs.max-parallel}}

View File

@@ -43,6 +43,7 @@ jobs:
&& contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) && contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0])
&& contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0])
&& contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])
&& contains(fromJSON(inputs.machines), fromJSON('["X64"]')[0])
name: Format name: Format
uses: ./.github/workflows/bake.yml uses: ./.github/workflows/bake.yml
@@ -55,7 +56,7 @@ jobs:
sys_names: ${{inputs.sys_names}} sys_names: ${{inputs.sys_names}}
sys_targets: ${{inputs.sys_targets}} sys_targets: ${{inputs.sys_targets}}
sys_versions: ${{inputs.sys_versions}} sys_versions: ${{inputs.sys_versions}}
machines: ${{inputs.machines}} machines: '["X64"]'
excludes: ${{inputs.excludes}} excludes: ${{inputs.excludes}}
includes: ${{inputs.includes}} includes: ${{inputs.includes}}
@@ -65,6 +66,7 @@ jobs:
&& contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) && contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0])
&& contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0])
&& contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])
&& contains(fromJSON(inputs.machines), fromJSON('["X64"]')[0])
name: Typos name: Typos
uses: ./.github/workflows/bake.yml uses: ./.github/workflows/bake.yml
@@ -77,7 +79,7 @@ jobs:
sys_versions: ${{inputs.sys_versions}} sys_versions: ${{inputs.sys_versions}}
rust_targets: ${{inputs.rust_targets}} rust_targets: ${{inputs.rust_targets}}
sys_targets: ${{inputs.sys_targets}} sys_targets: ${{inputs.sys_targets}}
machines: ${{inputs.machines}} machines: '["X64"]'
excludes: ${{inputs.excludes}} excludes: ${{inputs.excludes}}
includes: ${{inputs.includes}} includes: ${{inputs.includes}}
@@ -87,6 +89,7 @@ jobs:
&& contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) && contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0])
&& contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0])
&& contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])
&& contains(fromJSON(inputs.machines), fromJSON('["X64"]')[0])
name: Audit name: Audit
uses: ./.github/workflows/bake.yml uses: ./.github/workflows/bake.yml
@@ -99,7 +102,7 @@ jobs:
sys_versions: ${{inputs.sys_versions}} sys_versions: ${{inputs.sys_versions}}
rust_targets: ${{inputs.rust_targets}} rust_targets: ${{inputs.rust_targets}}
sys_targets: ${{inputs.sys_targets}} sys_targets: ${{inputs.sys_targets}}
machines: ${{inputs.machines}} machines: '["X64"]'
excludes: ${{inputs.excludes}} excludes: ${{inputs.excludes}}
includes: ${{inputs.includes}} includes: ${{inputs.includes}}
@@ -109,6 +112,7 @@ jobs:
&& contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) && contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0])
&& contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0])
&& contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])
&& contains(fromJSON(inputs.machines), fromJSON('["X64"]')[0])
name: Lychee name: Lychee
uses: ./.github/workflows/bake.yml uses: ./.github/workflows/bake.yml
@@ -121,7 +125,7 @@ jobs:
sys_versions: ${{inputs.sys_versions}} sys_versions: ${{inputs.sys_versions}}
rust_targets: ${{inputs.rust_targets}} rust_targets: ${{inputs.rust_targets}}
sys_targets: ${{inputs.sys_targets}} sys_targets: ${{inputs.sys_targets}}
machines: ${{inputs.machines}} machines: '["X64"]'
excludes: ${{inputs.excludes}} excludes: ${{inputs.excludes}}
includes: ${{inputs.includes}} includes: ${{inputs.includes}}
@@ -131,6 +135,7 @@ jobs:
&& contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) && contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0])
&& contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0])
&& contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])
&& contains(fromJSON(inputs.machines), fromJSON('["X64"]')[0])
name: Check name: Check
uses: ./.github/workflows/bake.yml uses: ./.github/workflows/bake.yml
@@ -143,7 +148,7 @@ jobs:
sys_versions: ${{inputs.sys_versions}} sys_versions: ${{inputs.sys_versions}}
rust_targets: ${{inputs.rust_targets}} rust_targets: ${{inputs.rust_targets}}
sys_targets: ${{inputs.sys_targets}} sys_targets: ${{inputs.sys_targets}}
machines: ${{inputs.machines}} machines: '["X64"]'
excludes: ${{inputs.excludes}} excludes: ${{inputs.excludes}}
includes: ${{inputs.includes}} includes: ${{inputs.includes}}

View File

@@ -18,7 +18,7 @@ concurrency:
jobs: jobs:
init: init:
name: Init name: Init
runs-on: self-hosted runs-on: ${{matrix.runner}}
env: env:
default_cargo_profiles: '["test", "release"]' default_cargo_profiles: '["test", "release"]'
default_feat_sets: '["none", "default", "all"]' default_feat_sets: '["none", "default", "all"]'
@@ -27,7 +27,7 @@ jobs:
default_sys_versions: '["testing-slim"]' default_sys_versions: '["testing-slim"]'
default_rust_targets: '["x86_64-unknown-linux-gnu"]' default_rust_targets: '["x86_64-unknown-linux-gnu"]'
default_sys_targets: '["x86_64-linux-gnu"]' default_sys_targets: '["x86_64-linux-gnu"]'
default_machines: '["x86_64"]' default_machines: '["X64"]'
outputs: outputs:
cargo_profiles: ${{vars.CARGO_PROFILES || env.default_cargo_profiles}} cargo_profiles: ${{vars.CARGO_PROFILES || env.default_cargo_profiles}}
@@ -40,8 +40,19 @@ jobs:
machines: ${{vars.MACHINES || env.default_machines}} machines: ${{vars.MACHINES || env.default_machines}}
release_url: ${{steps.release.outputs.upload_url}} release_url: ${{steps.release.outputs.upload_url}}
strategy:
fail-fast: true
matrix:
runner: ${{fromJSON(vars.RUNNERS)}}
machine: ${{fromJSON(vars.MACHINES)}}
exclude: ${{fromJSON(vars.RUNNERS_EXCLUDES)}}
steps: steps:
- name: Initialize Builder - name: Initialize Builder
env:
runner: ${{matrix.runner}}
reserved_space: '{"het": "256GB", "aws": "48GB", "gcp": "160GB"}'
max_used_space: '{"het": "448GB", "aws": "64GB", "gcp": "192GB"}'
run: | run: |
set +e set +e
docker buildx inspect "${GITHUB_ACTOR}" docker buildx inspect "${GITHUB_ACTOR}"
@@ -49,7 +60,9 @@ jobs:
exit 0 exit 0
fi fi
set -e set -eux
reserved_space=$(echo -n "$reserved_space" | jq -r ".$runner")
max_used_space=$(echo -n "$max_used_space" | jq -r ".$runner")
cat <<EOF > ./buildkitd.toml cat <<EOF > ./buildkitd.toml
[system] [system]
platformsCacheMaxAge = "504h" platformsCacheMaxAge = "504h"
@@ -57,11 +70,11 @@ jobs:
enabled = true enabled = true
rootless = false rootless = false
gc = true gc = true
reservedSpace = "256GB" reservedSpace = "${reserved_space}"
maxUsedSpace = "576GB" maxUsedSpace = "${max_used_space}"
[[worker.oci.gcpolicy]] [[worker.oci.gcpolicy]]
reservedSpace = "256GB" reservedSpace = "${reserved_space}"
maxUsedSpace = "576GB" maxUsedSpace = "${max_used_space}"
filters = ["label!=cache==pin"] filters = ["label!=cache==pin"]
all = true all = true
EOF EOF
@@ -76,6 +89,7 @@ jobs:
- if: > - if: >
!failure() && !cancelled() !failure() && !cancelled()
&& contains(github.ref, 'refs/tags/v') && contains(github.ref, 'refs/tags/v')
&& matrix.runner == 'het'
id: release id: release
name: Create Release name: Create Release
@@ -108,13 +122,22 @@ jobs:
machines: ${{needs.init.outputs.machines}} machines: ${{needs.init.outputs.machines}}
excludes: > excludes: >
[ [
{"cargo_profile": "test", "rust_toolchain": "stable", "feat_set": "none"},
{"cargo_profile": "test", "rust_target": "aarch64-unknown-linux-gnu"},
{"cargo_profile": "release", "rust_toolchain": "nightly", "feat_set": "none"},
{"cargo_profile": "release", "rust_toolchain": "nightly", "feat_set": "default"},
{"cargo_profile": "release-debuginfo"}, {"cargo_profile": "release-debuginfo"},
{"cargo_profile": "release-native", "rust_toolchain": "stable"}, {"cargo_profile": "release-native", "rust_toolchain": "stable"},
{"cargo_profile": "release-native", "feat_set": "none"}, {"cargo_profile": "release-native", "feat_set": "none"},
{"cargo_profile": "release-native", "feat_set": "default"}, {"cargo_profile": "release-native", "feat_set": "default"},
{"cargo_profile": "test", "rust_toolchain": "stable", "feat_set": "none"}, {"cargo_profile": "release-native", "rust_target": "aarch64-unknown-linux-gnu"},
{"cargo_profile": "release", "rust_toolchain": "nightly", "feat_set": "none"}, {"rust_target": "aarch64-unknown-linux-gnu", "feat_set": "none"},
{"cargo_profile": "release", "rust_toolchain": "nightly", "feat_set": "default"} {"rust_target": "aarch64-unknown-linux-gnu", "feat_set": "default"},
{"rust_target": "aarch64-unknown-linux-gnu", "rust_toolchain": "nightly"},
{"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-linux-gnu"},
{"rust_target": "x86_64-unknown-linux-gnu", "sys_target": "aarch64-linux-gnu"},
{"sys_target": "x86_64-linux-gnu", "machine": "ARM64"},
{"sys_target": "aarch64-linux-gnu", "machine": "X64"},
] ]
test: test:
@@ -135,13 +158,23 @@ jobs:
sys_targets: ${{needs.init.outputs.sys_targets}} sys_targets: ${{needs.init.outputs.sys_targets}}
sys_versions: ${{needs.init.outputs.sys_versions}} sys_versions: ${{needs.init.outputs.sys_versions}}
machines: ${{needs.init.outputs.machines}} machines: ${{needs.init.outputs.machines}}
complement_runner: 'het'
excludes: > excludes: >
[ [
{"cargo_profile": "test", "rust_toolchain": "stable", "feat_set": "none"}, {"cargo_profile": "test", "rust_toolchain": "stable", "feat_set": "none"},
{"cargo_profile": "test", "rust_target": "aarch64-unknown-linux-gnu"},
{"cargo_profile": "release-debuginfo"},
{"cargo_profile": "release-native", "rust_toolchain": "stable"}, {"cargo_profile": "release-native", "rust_toolchain": "stable"},
{"cargo_profile": "release-native", "feat_set": "default"}, {"cargo_profile": "release-native", "feat_set": "default"},
{"cargo_profile": "release-native", "feat_set": "none"}, {"cargo_profile": "release-native", "feat_set": "none"},
{"cargo_profile": "release-debuginfo"} {"cargo_profile": "release-native", "rust_target": "aarch64-unknown-linux-gnu"},
{"rust_target": "aarch64-unknown-linux-gnu", "feat_set": "none"},
{"rust_target": "aarch64-unknown-linux-gnu", "feat_set": "default"},
{"rust_target": "aarch64-unknown-linux-gnu", "rust_toolchain": "nightly"},
{"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-linux-gnu"},
{"rust_target": "x86_64-unknown-linux-gnu", "sys_target": "aarch64-linux-gnu"},
{"sys_target": "x86_64-linux-gnu", "machine": "ARM64"},
{"sys_target": "aarch64-linux-gnu", "machine": "X64"},
] ]
package: package:
@@ -168,12 +201,19 @@ jobs:
{"cargo_profile": "release-debuginfo", "feat_set": "default"}, {"cargo_profile": "release-debuginfo", "feat_set": "default"},
{"cargo_profile": "release-debuginfo", "rust_toolchain": "nightly"}, {"cargo_profile": "release-debuginfo", "rust_toolchain": "nightly"},
{"cargo_profile": "release-debuginfo", "bake_target": "oci"}, {"cargo_profile": "release-debuginfo", "bake_target": "oci"},
{"cargo_profile": "release-debuginfo", "rust_target": "aarch64-unknown-linux-gnu"},
{"cargo_profile": "release-native", "feat_set": "default"}, {"cargo_profile": "release-native", "feat_set": "default"},
{"cargo_profile": "release-native", "rust_toolchain": "stable"}, {"cargo_profile": "release-native", "rust_toolchain": "stable"},
{"cargo_profile": "release-native", "feat_set": "default"}, {"cargo_profile": "release-native", "feat_set": "default"},
{"cargo_profile": "release-native", "bake_target": "docker"}, {"cargo_profile": "release-native", "bake_target": "docker"},
{"cargo_profile": "release-native", "bake_target": "oci"}, {"cargo_profile": "release-native", "bake_target": "oci"},
{"cargo_profile": "release", "rust_toolchain": "nightly"} {"cargo_profile": "release-native", "rust_target": "aarch64-unknown-linux-gnu"},
{"cargo_profile": "release", "rust_toolchain": "nightly"},
{"rust_target": "aarch64-unknown-linux-gnu", "feat_set": "default"},
{"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-linux-gnu"},
{"rust_target": "x86_64-unknown-linux-gnu", "sys_target": "aarch64-linux-gnu"},
{"sys_target": "x86_64-linux-gnu", "machine": "ARM64"},
{"sys_target": "aarch64-linux-gnu", "machine": "X64"},
] ]
publish: publish:
@@ -198,9 +238,14 @@ jobs:
[ [
{"feat_set": "none"}, {"feat_set": "none"},
{"cargo_profile": "test"}, {"cargo_profile": "test"},
{"rust_toolchain": "nightly", "cargo_profile": "release"},
{"cargo_profile": "release-debuginfo"}, {"cargo_profile": "release-debuginfo"},
{"cargo_profile": "release-native"} {"cargo_profile": "release-native"},
{"cargo_profile": "release", "rust_toolchain": "nightly"},
{"rust_target": "aarch64-unknown-linux-gnu", "feat_set": "default"},
{"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-linux-gnu"},
{"rust_target": "x86_64-unknown-linux-gnu", "sys_target": "aarch64-linux-gnu"},
{"sys_target": "x86_64-linux-gnu", "machine": "ARM64"},
{"sys_target": "aarch64-linux-gnu", "machine": "X64"},
] ]
secrets: secrets:

View File

@@ -46,6 +46,7 @@ jobs:
&& contains(fromJSON(inputs.cargo_profiles), fromJSON('["release"]')[0]) && contains(fromJSON(inputs.cargo_profiles), fromJSON('["release"]')[0])
&& contains(fromJSON(inputs.feat_sets), fromJSON('["default"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["default"]')[0])
&& contains(fromJSON(inputs.rust_toolchains), fromJSON('["stable"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["stable"]')[0])
&& contains(fromJSON(inputs.machines), fromJSON('["X64"]')[0])
name: Book name: Book
uses: ./.github/workflows/bake.yml uses: ./.github/workflows/bake.yml
@@ -58,7 +59,8 @@ jobs:
sys_names: ${{inputs.sys_names}} sys_names: ${{inputs.sys_names}}
sys_targets: ${{inputs.sys_targets}} sys_targets: ${{inputs.sys_targets}}
sys_versions: ${{inputs.sys_versions}} sys_versions: ${{inputs.sys_versions}}
machines: ${{inputs.machines}} machines: '["X64"]'
runner: 'het'
excludes: ${{inputs.excludes}} excludes: ${{inputs.excludes}}
includes: ${{inputs.includes}} includes: ${{inputs.includes}}
release_url: ${{inputs.release_url}} release_url: ${{inputs.release_url}}
@@ -142,6 +144,7 @@ jobs:
&& contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0])
&& contains(fromJSON(inputs.cargo_profiles), fromJSON('["release"]')[0]) && contains(fromJSON(inputs.cargo_profiles), fromJSON('["release"]')[0])
&& contains(fromJSON(inputs.rust_toolchains), fromJSON('["stable"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["stable"]')[0])
&& contains(fromJSON(inputs.machines), fromJSON('["X64"]')[0])
&& github.ref == 'refs/heads/main' && github.ref == 'refs/heads/main'
name: Distro Packages name: Distro Packages
@@ -155,7 +158,7 @@ jobs:
sys_versions: ${{inputs.sys_versions}} sys_versions: ${{inputs.sys_versions}}
rust_targets: ${{inputs.rust_targets}} rust_targets: ${{inputs.rust_targets}}
sys_targets: ${{inputs.sys_targets}} sys_targets: ${{inputs.sys_targets}}
machines: ${{inputs.machines}} machines: '["X64"]'
excludes: ${{inputs.excludes}} excludes: ${{inputs.excludes}}
includes: ${{inputs.includes}} includes: ${{inputs.includes}}
release_url: ${{inputs.release_url}} release_url: ${{inputs.release_url}}
@@ -179,6 +182,7 @@ jobs:
&& contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0])
&& contains(fromJSON(inputs.cargo_profiles), fromJSON('["release"]')[0]) && contains(fromJSON(inputs.cargo_profiles), fromJSON('["release"]')[0])
&& contains(fromJSON(inputs.rust_toolchains), fromJSON('["stable"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["stable"]')[0])
&& contains(fromJSON(inputs.machines), fromJSON('["X64"]')[0])
&& github.ref == 'refs/heads/main' && github.ref == 'refs/heads/main'
name: Check Packages name: Check Packages
@@ -193,6 +197,6 @@ jobs:
sys_versions: ${{inputs.sys_versions}} sys_versions: ${{inputs.sys_versions}}
rust_targets: ${{inputs.rust_targets}} rust_targets: ${{inputs.rust_targets}}
sys_targets: ${{inputs.sys_targets}} sys_targets: ${{inputs.sys_targets}}
machines: ${{inputs.machines}} machines: '["X64"]'
excludes: ${{inputs.excludes}} excludes: ${{inputs.excludes}}
includes: ${{inputs.includes}} includes: ${{inputs.includes}}

View File

@@ -49,12 +49,12 @@ jobs:
documents: documents:
if: > if: >
!failure() && !cancelled() !failure() && !cancelled()
&& inputs.machines && contains(fromJSON(inputs.machines), fromJSON('["X64"]')[0])
&& (github.ref == 'refs/heads/main' || contains(github.ref, 'refs/tags/v')) && (github.ref == 'refs/heads/main' || contains(github.ref, 'refs/tags/v'))
&& !contains(github.ref, '-draft') && !contains(github.ref, '-draft')
name: Documents name: Documents
runs-on: self-hosted runs-on: ['X64', 'het']
permissions: permissions:
pages: write pages: write
id-token: write id-token: write

View File

@@ -41,6 +41,8 @@ on:
complement_feat_sets: complement_feat_sets:
type: string type: string
default: '["all"]' default: '["all"]'
complement_runner:
type: string
jobs: jobs:
unit: unit:
@@ -48,6 +50,7 @@ jobs:
contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0])
&& contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0])
&& contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])
&& contains(fromJSON(inputs.machines), fromJSON('["X64"]')[0])
name: Unit name: Unit
uses: ./.github/workflows/bake.yml uses: ./.github/workflows/bake.yml
@@ -60,12 +63,16 @@ jobs:
sys_versions: ${{inputs.sys_versions}} sys_versions: ${{inputs.sys_versions}}
rust_targets: ${{inputs.rust_targets}} rust_targets: ${{inputs.rust_targets}}
sys_targets: ${{inputs.sys_targets}} sys_targets: ${{inputs.sys_targets}}
machines: ${{inputs.machines}} machines: '["X64"]'
excludes: ${{inputs.excludes}} excludes: ${{inputs.excludes}}
includes: ${{inputs.includes}} includes: ${{inputs.includes}}
smoke: smoke:
if: inputs.cargo_profiles if: >
!failure() && !cancelled()
&& inputs.cargo_profiles
&& inputs.machines
name: Smoke name: Smoke
uses: ./.github/workflows/bake.yml uses: ./.github/workflows/bake.yml
with: with:
@@ -82,26 +89,37 @@ jobs:
excludes: > excludes: >
[ [
{"cargo_profile": "test", "feat_set": "default"}, {"cargo_profile": "test", "feat_set": "default"},
{"cargo_profile": "test", "rust_toolchain": "stable"},
{"cargo_profile": "test", "feat_set": "none", "bake_target": "smoke-valgrind"}, {"cargo_profile": "test", "feat_set": "none", "bake_target": "smoke-valgrind"},
{"cargo_profile": "test", "rust_toolchain": "stable"},
{"cargo_profile": "test", "rust_target": "aarch64-unknown-linux-gnu"},
{"cargo_profile": "release", "rust_toolchain": "nightly"}, {"cargo_profile": "release", "rust_toolchain": "nightly"},
{"cargo_profile": "release", "rust_toolchain": "stable", "feat_set": "none"}, {"cargo_profile": "release", "rust_toolchain": "stable", "feat_set": "none"},
{"cargo_profile": "release", "bake_target": "smoke-valgrind"}, {"cargo_profile": "release", "bake_target": "smoke-valgrind"},
{"cargo_profile": "release-debuginfo", "rust_toolchain": "nightly"}, {"cargo_profile": "release-debuginfo", "rust_toolchain": "nightly"},
{"cargo_profile": "release-debuginfo", "rust_toolchain": "stable", "feat_set": "none"}, {"cargo_profile": "release-debuginfo", "rust_toolchain": "stable", "feat_set": "none"},
{"cargo_profile": "release-debuginfo", "bake_target": "smoke"}, {"cargo_profile": "release-debuginfo", "bake_target": "smoke"},
{"cargo_profile": "release-debuginfo", "rust_target": "aarch64-unknown-linux-gnu"},
{"cargo_profile": "release-native", "rust_toolchain": "stable"}, {"cargo_profile": "release-native", "rust_toolchain": "stable"},
{"cargo_profile": "release-native", "feat_set": "none"}, {"cargo_profile": "release-native", "feat_set": "none"},
{"cargo_profile": "release-native", "feat_set": "default"}, {"cargo_profile": "release-native", "feat_set": "default"},
{"cargo_profile": "release-native", "bake_target": "smoke-valgrind"} {"cargo_profile": "release-native", "bake_target": "smoke-valgrind"},
{"cargo_profile": "release-native", "rust_target": "aarch64-unknown-linux-gnu"},
{"rust_target": "aarch64-unknown-linux-gnu", "feat_set": "none"},
{"rust_target": "aarch64-unknown-linux-gnu", "feat_set": "default"},
{"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-linux-gnu"},
{"rust_target": "x86_64-unknown-linux-gnu", "sys_target": "aarch64-linux-gnu"},
{"sys_target": "x86_64-linux-gnu", "machine": "ARM64"},
{"sys_target": "aarch64-linux-gnu", "machine": "X64"},
] ]
complement: complement:
if: > if: >
inputs.complement !failure() && !cancelled()
&& inputs.complement
&& contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) && contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0])
&& contains(fromJSON(inputs.complement_feat_sets), fromJSON('["all"]')[0]) && contains(fromJSON(inputs.complement_feat_sets), fromJSON('["all"]')[0])
&& contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])
&& contains(fromJSON(inputs.machines), fromJSON('["X64"]')[0])
name: Complement name: Complement
uses: ./.github/workflows/bake.yml uses: ./.github/workflows/bake.yml
@@ -114,20 +132,24 @@ jobs:
sys_versions: ${{inputs.sys_versions}} sys_versions: ${{inputs.sys_versions}}
rust_targets: ${{inputs.rust_targets}} rust_targets: ${{inputs.rust_targets}}
sys_targets: ${{inputs.sys_targets}} sys_targets: ${{inputs.sys_targets}}
machines: ${{inputs.machines}} machines: '["X64"]'
runner: ${{inputs.complement_runner}}
excludes: ${{inputs.excludes}} excludes: ${{inputs.excludes}}
includes: ${{inputs.includes}} includes: ${{inputs.includes}}
compliance: compliance:
if: > if: >
inputs.complement !failure() && !cancelled()
&& inputs.complement
&& inputs.machines
&& contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) && contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0])
&& contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0])
&& contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])
&& contains(fromJSON(inputs.machines), fromJSON('["X64"]')[0])
name: Matrix Compliance name: Matrix Compliance
needs: [complement] needs: [complement]
runs-on: ${{matrix.machine}} runs-on: ["${{matrix.machine}}", "${{inputs.complement_runner}}"]
concurrency: concurrency:
group: complement-cant-walk-and-chew-bubblegum group: complement-cant-walk-and-chew-bubblegum
cancel-in-progress: false cancel-in-progress: false
@@ -142,7 +164,7 @@ jobs:
sys_version: ${{fromJSON(inputs.sys_versions)}} sys_version: ${{fromJSON(inputs.sys_versions)}}
rust_target: ${{fromJSON(inputs.rust_targets)}} rust_target: ${{fromJSON(inputs.rust_targets)}}
sys_target: ${{fromJSON(inputs.sys_targets)}} sys_target: ${{fromJSON(inputs.sys_targets)}}
machine: ${{fromJSON(inputs.machines)}} machine: ${{fromJSON('["X64"]')}}
exclude: ${{fromJSON(inputs.excludes)}} exclude: ${{fromJSON(inputs.excludes)}}
include: ${{fromJSON(inputs.includes)}} include: ${{fromJSON(inputs.includes)}}

View File

@@ -29,7 +29,7 @@ ARG rocksdb_shared=0
ARG rocksdb_portable=1 ARG rocksdb_portable=1
ARG rocksdb_opt_level="3" ARG rocksdb_opt_level="3"
ARG rocksdb_build_type="Release" ARG rocksdb_build_type="Release"
ARG rocksdb_cxx_flags="-ftls-model=initial-exec" ARG rocksdb_cxx_flags="-ftls-model=initial-exec -mno-outline-atomics"
ARG rocksdb_make_verbose="ON" ARG rocksdb_make_verbose="ON"
ARG rocksdb_make_rule_messages="OFF" ARG rocksdb_make_rule_messages="OFF"
ARG rocksdb_jemalloc=1 ARG rocksdb_jemalloc=1

View File

@@ -3,7 +3,7 @@
FROM input AS rustup FROM input AS rustup
ARG RUST_HOME ARG RUST_HOME
ARG rust_target ARG rust_target
ARG rustup_version="1.28.1" ARG rustup_version="1.28.2"
ARG rustup_profile="minimal" ARG rustup_profile="minimal"
WORKDIR / WORKDIR /
@@ -13,7 +13,8 @@ WORKDIR ${RUST_HOME}
RUN <<EOF RUN <<EOF
set -eux set -eux
url="https://static.rust-lang.org/rustup/archive/${rustup_version}/${rust_target}/rustup-init" var="${rustup_version}/${rust_target}"
url="https://static.rust-lang.org/rustup/archive/$var/rustup-init"
curl -S -O -s "$url" curl -S -O -s "$url"
chmod o+x rustup-init chmod o+x rustup-init
EOF EOF

View File

@@ -156,7 +156,33 @@ variable "git_checkout" {
# Rustflags # Rustflags
# #
rustflags = [] rustflags = [
"-C link-arg=--verbose",
"-C link-arg=-Wl,--gc-sections",
]
static_rustflags = [
"-C relocation-model=static",
"-C target-feature=+crt-static",
]
static_libs = [
"-C link-arg=-l:libstdc++.a",
"-C link-arg=-l:libc.a",
"-C link-arg=-l:libm.a",
]
dynamic_rustflags = [
"-C relocation-model=pic",
"-C target-feature=-crt-static",
"-C link-arg=-Wl,--as-needed",
]
dynamic_libs = [
"-C link-arg=-lstdc++",
"-C link-arg=-lc",
"-C link-arg=-lm",
]
nightly_rustflags = [ nightly_rustflags = [
"--cfg tokio_unstable", "--cfg tokio_unstable",
@@ -168,33 +194,11 @@ nightly_rustflags = [
#"-Z time-llvm-passes", #"-Z time-llvm-passes",
] ]
static_rustflags = [
"-C relocation-model=static",
"-C target-feature=+crt-static",
"-C link-arg=--verbose",
"-C link-arg=-Wl,--gc-sections",
"-C link-arg=-L/usr/lib/gcc/x86_64-linux-gnu/14", # FIXME
"-C link-arg=-l:libstdc++.a",
"-C link-arg=-l:libc.a",
"-C link-arg=-l:libm.a",
]
dynamic_rustflags = [
"-C relocation-model=pic",
"-C target-feature=-crt-static",
"-C link-arg=--verbose",
"-C link-arg=-Wl,--gc-sections",
"-C link-arg=-Wl,--as-needed",
"-C link-arg=-lstdc++",
"-C link-arg=-lc",
"-C link-arg=-lm",
]
static_nightly_rustflags = [ static_nightly_rustflags = [
"-Z tls-model=local-exec", "-Z tls-model=local-exec",
] ]
rmp_rustflags = [ native_rustflags = [
"-C target-cpu=native", "-C target-cpu=native",
"-Z tune-cpu=native", "-Z tune-cpu=native",
"-Z inline-mir=true", "-Z inline-mir=true",
@@ -1188,56 +1192,73 @@ target "deps-base" {
join(" ", [ join(" ", [
join(" ", rustflags), join(" ", rustflags),
join(" ", nightly_rustflags), join(" ", nightly_rustflags),
join(" ", static_rustflags),
join(" ", static_nightly_rustflags),
join(" ", native_rustflags),
"-C link-arg=-L/usr/lib/gcc/${sys_target}/14", #FIXME
contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")?
"-C link-arg=-l:libzstd.a": "", "-C link-arg=-l:libzstd.a": "",
contains(split(",", cargo_feat_sets[feat_set]), "io_uring")? contains(split(",", cargo_feat_sets[feat_set]), "io_uring")?
"-C link-arg=-l:liburing.a": "", "-C link-arg=-l:liburing.a": "",
join(" ", static_rustflags), join(" ", static_libs),
join(" ", static_nightly_rustflags), sys_target == "aarch64-linux-gnu"?
join(" ", rmp_rustflags), "-C link-arg=-l:libgcc.a": "",
]): ]):
cargo_profile == "release" && rust_toolchain == "nightly"? cargo_profile == "release" && rust_toolchain == "nightly"?
join(" ", [ join(" ", [
join(" ", rustflags), join(" ", rustflags),
join(" ", nightly_rustflags), join(" ", nightly_rustflags),
join(" ", static_rustflags),
join(" ", static_nightly_rustflags),
"-C link-arg=-L/usr/lib/gcc/${sys_target}/14", #FIXME
contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")?
"-C link-arg=-l:libzstd.a": "", "-C link-arg=-l:libzstd.a": "",
contains(split(",", cargo_feat_sets[feat_set]), "io_uring")? contains(split(",", cargo_feat_sets[feat_set]), "io_uring")?
"-C link-arg=-l:liburing.a": "", "-C link-arg=-l:liburing.a": "",
join(" ", static_rustflags), join(" ", static_libs),
join(" ", static_nightly_rustflags), sys_target == "aarch64-linux-gnu"?
"-C link-arg=-l:libgcc.a": "",
]): ]):
cargo_profile == "release" || cargo_profile == "release-debuginfo"? cargo_profile == "release" || cargo_profile == "release-debuginfo"?
join(" ", [ join(" ", [
join(" ", rustflags), join(" ", rustflags),
join(" ", static_rustflags),
"-C link-arg=-L/usr/lib/gcc/${sys_target}/14", #FIXME
contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")?
"-C link-arg=-l:libzstd.a": "", "-C link-arg=-l:libzstd.a": "",
contains(split(",", cargo_feat_sets[feat_set]), "io_uring")? contains(split(",", cargo_feat_sets[feat_set]), "io_uring")?
"-C link-arg=-l:liburing.a": "", "-C link-arg=-l:liburing.a": "",
join(" ", static_rustflags), join(" ", static_libs),
sys_target == "aarch64-linux-gnu"?
"-C link-arg=-l:libgcc.a": "",
]): ]):
rust_toolchain == "stable"? rust_toolchain == "stable"?
join(" ", [ join(" ", [
join(" ", rustflags), join(" ", rustflags),
join(" ", static_rustflags),
"-C link-arg=-L/usr/lib/gcc/${sys_target}/14", #FIXME
contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")?
"-C link-arg=-l:libzstd.a": "", "-C link-arg=-l:libzstd.a": "",
contains(split(",", cargo_feat_sets[feat_set]), "io_uring")? contains(split(",", cargo_feat_sets[feat_set]), "io_uring")?
"-C link-arg=-l:liburing.a": "", "-C link-arg=-l:liburing.a": "",
join(" ", static_rustflags), join(" ", static_libs),
sys_target == "aarch64-linux-gnu"?
"-C link-arg=-l:libgcc.a": "",
]): ]):
rust_toolchain == "nightly"? rust_toolchain == "nightly"?
join(" ", [ join(" ", [
join(" ", rustflags), join(" ", rustflags),
join(" ", nightly_rustflags), join(" ", nightly_rustflags),
join(" ", dynamic_rustflags),
contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")?
"-C link-arg=-lzstd": "", "-C link-arg=-lzstd": "",
contains(split(",", cargo_feat_sets[feat_set]), "io_uring")? contains(split(",", cargo_feat_sets[feat_set]), "io_uring")?
"-C link-arg=-luring": "", "-C link-arg=-luring": "",
join(" ", dynamic_rustflags), join(" ", dynamic_libs),
]): ]):
join(" ", [ join(" ", [
@@ -1429,7 +1450,7 @@ cargo_installs = [
"cargo-chef", "cargo-chef",
"cargo-audit", "cargo-audit",
"cargo-deb", "cargo-deb",
"cargo-arch", #"cargo-arch",
"cargo-generate-rpm", "cargo-generate-rpm",
"lychee", "lychee",
"mdbook", "mdbook",