docker: Add Instruction Set Architectures to build matrix.

ci: Publish multi-arch images for both branch and tag refs.

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk
2025-06-25 02:11:44 +00:00
parent 972201da60
commit d858c5c1f4
17 changed files with 247 additions and 108 deletions

View File

@@ -43,7 +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]) && contains(fromJSON(inputs.sys_targets), fromJSON('["x86_64-v1-linux-gnu"]')[0])
name: Format name: Format
uses: ./.github/workflows/bake.yml uses: ./.github/workflows/bake.yml
@@ -54,9 +54,9 @@ jobs:
rust_toolchains: '["nightly"]' rust_toolchains: '["nightly"]'
rust_targets: ${{inputs.rust_targets}} rust_targets: ${{inputs.rust_targets}}
sys_names: ${{inputs.sys_names}} sys_names: ${{inputs.sys_names}}
sys_targets: ${{inputs.sys_targets}}
sys_versions: ${{inputs.sys_versions}} sys_versions: ${{inputs.sys_versions}}
machines: '["X64"]' sys_targets: '["x86_64-v1-linux-gnu"]'
machines: ${{inputs.machines}}
excludes: ${{inputs.excludes}} excludes: ${{inputs.excludes}}
includes: ${{inputs.includes}} includes: ${{inputs.includes}}
@@ -66,7 +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]) && contains(fromJSON(inputs.sys_targets), fromJSON('["x86_64-v1-linux-gnu"]')[0])
name: Typos name: Typos
uses: ./.github/workflows/bake.yml uses: ./.github/workflows/bake.yml
@@ -78,8 +78,8 @@ jobs:
sys_names: ${{inputs.sys_names}} sys_names: ${{inputs.sys_names}}
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: '["x86_64-v1-linux-gnu"]'
machines: '["X64"]' machines: ${{inputs.machines}}
excludes: ${{inputs.excludes}} excludes: ${{inputs.excludes}}
includes: ${{inputs.includes}} includes: ${{inputs.includes}}
@@ -89,7 +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]) && contains(fromJSON(inputs.sys_targets), fromJSON('["x86_64-v1-linux-gnu"]')[0])
name: Audit name: Audit
uses: ./.github/workflows/bake.yml uses: ./.github/workflows/bake.yml
@@ -101,8 +101,8 @@ jobs:
sys_names: ${{inputs.sys_names}} sys_names: ${{inputs.sys_names}}
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: '["x86_64-v1-linux-gnu"]'
machines: '["X64"]' machines: ${{inputs.machines}}
excludes: ${{inputs.excludes}} excludes: ${{inputs.excludes}}
includes: ${{inputs.includes}} includes: ${{inputs.includes}}
@@ -112,7 +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]) && contains(fromJSON(inputs.sys_targets), fromJSON('["x86_64-v1-linux-gnu"]')[0])
name: Lychee name: Lychee
uses: ./.github/workflows/bake.yml uses: ./.github/workflows/bake.yml
@@ -124,8 +124,8 @@ jobs:
sys_names: ${{inputs.sys_names}} sys_names: ${{inputs.sys_names}}
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: '["x86_64-v1-linux-gnu"]'
machines: '["X64"]' machines: ${{inputs.machines}}
excludes: ${{inputs.excludes}} excludes: ${{inputs.excludes}}
includes: ${{inputs.includes}} includes: ${{inputs.includes}}
@@ -135,7 +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]) && contains(fromJSON(inputs.sys_targets), fromJSON('["x86_64-v1-linux-gnu"]')[0])
name: Check name: Check
uses: ./.github/workflows/bake.yml uses: ./.github/workflows/bake.yml
@@ -147,8 +147,8 @@ jobs:
sys_names: ${{inputs.sys_names}} sys_names: ${{inputs.sys_names}}
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: '["x86_64-v1-linux-gnu"]'
machines: '["X64"]' machines: ${{inputs.machines}}
excludes: ${{inputs.excludes}} excludes: ${{inputs.excludes}}
includes: ${{inputs.includes}} includes: ${{inputs.includes}}

View File

@@ -26,7 +26,7 @@ jobs:
default_sys_names: '["debian"]' default_sys_names: '["debian"]'
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-v1-linux-gnu"]'
default_machines: '["X64"]' default_machines: '["X64"]'
outputs: outputs:
@@ -55,8 +55,8 @@ jobs:
- name: Initialize Builder - name: Initialize Builder
env: env:
runner: ${{matrix.runner}} runner: ${{matrix.runner}}
reserved_space: '{"het": "256GB", "aws": "48GB", "gcp": "160GB"}' reserved_space: '{"het": "384GB", "aws": "48GB", "gcp": "160GB"}'
max_used_space: '{"het": "448GB", "aws": "64GB", "gcp": "192GB"}' max_used_space: '{"het": "512GB", "aws": "64GB", "gcp": "192GB"}'
run: | run: |
set +e set +e
docker buildx inspect "${GITHUB_ACTOR}" docker buildx inspect "${GITHUB_ACTOR}"
@@ -138,10 +138,16 @@ jobs:
{"rust_target": "aarch64-unknown-linux-gnu", "feat_set": "none"}, {"rust_target": "aarch64-unknown-linux-gnu", "feat_set": "none"},
{"rust_target": "aarch64-unknown-linux-gnu", "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", "rust_toolchain": "nightly"},
{"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-linux-gnu"}, {"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-v1-linux-gnu"},
{"rust_target": "x86_64-unknown-linux-gnu", "sys_target": "aarch64-linux-gnu"}, {"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-v2-linux-gnu"},
{"sys_target": "x86_64-linux-gnu", "machine": "ARM64"}, {"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-v3-linux-gnu"},
{"sys_target": "aarch64-linux-gnu", "machine": "X64"}, {"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-v4-linux-gnu"},
{"rust_target": "x86_64-unknown-linux-gnu", "sys_target": "aarch64-v8-linux-gnu"},
{"sys_target": "aarch64-v8-linux-gnu", "machine": "X64"},
{"sys_target": "x86_64-v1-linux-gnu", "machine": "ARM64"},
{"sys_target": "x86_64-v2-linux-gnu"},
{"sys_target": "x86_64-v3-linux-gnu"},
{"sys_target": "x86_64-v4-linux-gnu"},
] ]
test: test:
@@ -175,10 +181,22 @@ jobs:
{"rust_target": "aarch64-unknown-linux-gnu", "feat_set": "none"}, {"rust_target": "aarch64-unknown-linux-gnu", "feat_set": "none"},
{"rust_target": "aarch64-unknown-linux-gnu", "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", "rust_toolchain": "nightly"},
{"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-linux-gnu"}, {"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-v1-linux-gnu"},
{"rust_target": "x86_64-unknown-linux-gnu", "sys_target": "aarch64-linux-gnu"}, {"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-v2-linux-gnu"},
{"sys_target": "x86_64-linux-gnu", "machine": "ARM64"}, {"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-v3-linux-gnu"},
{"sys_target": "aarch64-linux-gnu", "machine": "X64"}, {"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-v4-linux-gnu"},
{"rust_target": "x86_64-unknown-linux-gnu", "sys_target": "aarch64-v8-linux-gnu"},
{"sys_target": "aarch64-v8-linux-gnu", "machine": "X64"},
{"sys_target": "x86_64-v1-linux-gnu", "machine": "ARM64"},
{"sys_target": "x86_64-v2-linux-gnu", "machine": "ARM64"},
{"sys_target": "x86_64-v2-linux-gnu", "feat_set": "none"},
{"sys_target": "x86_64-v2-linux-gnu", "feat_set": "default"},
{"sys_target": "x86_64-v3-linux-gnu", "machine": "ARM64"},
{"sys_target": "x86_64-v3-linux-gnu", "feat_set": "none"},
{"sys_target": "x86_64-v3-linux-gnu", "feat_set": "default"},
{"sys_target": "x86_64-v4-linux-gnu", "machine": "ARM64"},
{"sys_target": "x86_64-v4-linux-gnu", "feat_set": "none"},
{"sys_target": "x86_64-v4-linux-gnu", "feat_set": "default"},
] ]
package: package:
@@ -203,22 +221,29 @@ jobs:
[ [
{"feat_set": "none"}, {"feat_set": "none"},
{"cargo_profile": "test"}, {"cargo_profile": "test"},
{"cargo_profile": "release-native"},
{"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-debuginfo", "rust_target": "aarch64-unknown-linux-gnu"},
{"cargo_profile": "release-native", "feat_set": "default"}, {"cargo_profile": "release-debuginfo", "sys_target": "x86_64-v2-linux-gnu"},
{"cargo_profile": "release-native", "rust_toolchain": "stable"}, {"cargo_profile": "release-debuginfo", "sys_target": "x86_64-v3-linux-gnu"},
{"cargo_profile": "release-native", "feat_set": "default"}, {"cargo_profile": "release-debuginfo", "sys_target": "x86_64-v4-linux-gnu"},
{"cargo_profile": "release-native", "bake_target": "docker"},
{"cargo_profile": "release-native", "bake_target": "oci"},
{"cargo_profile": "release-native", "rust_target": "aarch64-unknown-linux-gnu"},
{"cargo_profile": "release", "rust_toolchain": "nightly"}, {"cargo_profile": "release", "rust_toolchain": "nightly"},
{"rust_target": "aarch64-unknown-linux-gnu", "feat_set": "default"}, {"rust_target": "aarch64-unknown-linux-gnu", "feat_set": "default"},
{"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-linux-gnu"}, {"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-v1-linux-gnu"},
{"rust_target": "x86_64-unknown-linux-gnu", "sys_target": "aarch64-linux-gnu"}, {"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-v2-linux-gnu"},
{"sys_target": "x86_64-linux-gnu", "machine": "ARM64"}, {"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-v3-linux-gnu"},
{"sys_target": "aarch64-linux-gnu", "machine": "X64"}, {"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-v4-linux-gnu"},
{"rust_target": "x86_64-unknown-linux-gnu", "sys_target": "aarch64-v8-linux-gnu"},
{"sys_target": "aarch64-v8-linux-gnu", "machine": "X64"},
{"sys_target": "x86_64-v1-linux-gnu", "machine": "ARM64"},
{"sys_target": "x86_64-v2-linux-gnu", "machine": "ARM64"},
{"sys_target": "x86_64-v2-linux-gnu", "feat_set": "default"},
{"sys_target": "x86_64-v3-linux-gnu", "machine": "ARM64"},
{"sys_target": "x86_64-v3-linux-gnu", "feat_set": "default"},
{"sys_target": "x86_64-v4-linux-gnu", "machine": "ARM64"},
{"sys_target": "x86_64-v4-linux-gnu", "feat_set": "default"},
] ]
publish: publish:
@@ -247,10 +272,19 @@ jobs:
{"cargo_profile": "release-native"}, {"cargo_profile": "release-native"},
{"cargo_profile": "release", "rust_toolchain": "nightly"}, {"cargo_profile": "release", "rust_toolchain": "nightly"},
{"rust_target": "aarch64-unknown-linux-gnu", "feat_set": "default"}, {"rust_target": "aarch64-unknown-linux-gnu", "feat_set": "default"},
{"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-linux-gnu"}, {"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-v1-linux-gnu"},
{"rust_target": "x86_64-unknown-linux-gnu", "sys_target": "aarch64-linux-gnu"}, {"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-v2-linux-gnu"},
{"sys_target": "x86_64-linux-gnu", "machine": "ARM64"}, {"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-v3-linux-gnu"},
{"sys_target": "aarch64-linux-gnu", "machine": "X64"}, {"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-v4-linux-gnu"},
{"rust_target": "x86_64-unknown-linux-gnu", "sys_target": "aarch64-v8-linux-gnu"},
{"sys_target": "aarch64-v8-linux-gnu", "machine": "X64"},
{"sys_target": "x86_64-v1-linux-gnu", "machine": "ARM64"},
{"sys_target": "x86_64-v2-linux-gnu", "machine": "ARM64"},
{"sys_target": "x86_64-v2-linux-gnu", "feat_set": "default"},
{"sys_target": "x86_64-v3-linux-gnu", "machine": "ARM64"},
{"sys_target": "x86_64-v3-linux-gnu", "feat_set": "default"},
{"sys_target": "x86_64-v4-linux-gnu", "machine": "ARM64"},
{"sys_target": "x86_64-v4-linux-gnu", "feat_set": "default"},
] ]
secrets: secrets:

View File

@@ -49,7 +49,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]) && contains(fromJSON(inputs.sys_targets), fromJSON('["x86_64-v1-linux-gnu"]')[0])
name: Book name: Book
uses: ./.github/workflows/bake.yml uses: ./.github/workflows/bake.yml
@@ -60,9 +60,9 @@ jobs:
rust_toolchains: '["stable"]' rust_toolchains: '["stable"]'
rust_targets: ${{inputs.rust_targets}} rust_targets: ${{inputs.rust_targets}}
sys_names: ${{inputs.sys_names}} sys_names: ${{inputs.sys_names}}
sys_targets: ${{inputs.sys_targets}}
sys_versions: ${{inputs.sys_versions}} sys_versions: ${{inputs.sys_versions}}
machines: '["X64"]' sys_targets: '["x86_64-v1-linux-gnu"]'
machines: ${{inputs.machines}}
runner: 'het' runner: 'het'
excludes: ${{inputs.excludes}} excludes: ${{inputs.excludes}}
includes: ${{inputs.includes}} includes: ${{inputs.includes}}

View File

@@ -49,7 +49,7 @@ jobs:
documents: documents:
if: > if: >
!failure() && !cancelled() !failure() && !cancelled()
&& contains(fromJSON(inputs.machines), fromJSON('["X64"]')[0]) && contains(fromJSON(inputs.sys_targets), 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')
@@ -70,7 +70,6 @@ jobs:
&& inputs.machines && inputs.machines
&& inputs.docker_repo != '' && inputs.docker_repo != ''
&& (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')
name: Containers name: Containers
runs-on: ${{matrix.machine}} runs-on: ${{matrix.machine}}
@@ -135,8 +134,7 @@ jobs:
&& contains(fromJSON(inputs.cargo_profiles), fromJSON('["release"]')[0]) && contains(fromJSON(inputs.cargo_profiles), fromJSON('["release"]')[0])
&& contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0])
&& contains(fromJSON(inputs.rust_toolchains), fromJSON('["stable"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["stable"]')[0])
&& contains(github.ref, 'refs/tags/v') && (github.ref == 'refs/heads/main' || contains(github.ref, 'refs/tags/v'))
&& !contains(github.ref, '-draft')
name: Bundles name: Bundles
needs: [containers] needs: [containers]
@@ -172,9 +170,36 @@ jobs:
username: ${{ github.actor }} username: ${{ github.actor }}
password: ${{ secrets.dockerhub_token }} password: ${{ secrets.dockerhub_token }}
- name: Release Branch
if: >
!failure() && !cancelled()
&& github.ref == 'refs/heads/main'
env:
acct: ${{github.actor}}
ghcr_repo: ${{github.repository}}
docker_repo: ${{inputs.docker_repo}}
registry: ${{matrix.bake_target}}
cargo_profile: ${{matrix.cargo_profile}}
feat_set: ${{matrix.feat_set}}
sys_target: ${{matrix.sys_target}}
ref_name: ${{github.ref_name}}
run: |
registry="$(echo -n $registry | sed s/_/./)"
if test "$registry" = "ghcr.io"; then
repo="$ghcr_repo"
else
repo="$docker_repo"
fi
docker manifest create "${registry}/${repo}:${ref_name}" \
--amend "${registry}/${repo}:${ref_name}-${cargo_profile}-${feat_set}-${sys_target}"
- name: Release Preview - name: Release Preview
if: > if: >
!failure() && !cancelled() !failure() && !cancelled()
&& contains(github.ref, 'refs/tags/v')
&& !contains(github.ref, '-draft') && !contains(github.ref, '-draft')
env: env:
@@ -201,6 +226,7 @@ jobs:
- name: Release Latest - name: Release Latest
if: > if: >
!failure() && !cancelled() !failure() && !cancelled()
&& contains(github.ref, 'refs/tags/v')
&& !contains(github.ref, '-draft') && !contains(github.ref, '-draft')
&& !contains(github.ref, '-rc') && !contains(github.ref, '-rc')
@@ -230,7 +256,7 @@ jobs:
!failure() && !cancelled() !failure() && !cancelled()
&& inputs.machines && inputs.machines
&& inputs.docker_repo != '' && inputs.docker_repo != ''
&& contains(github.ref, 'refs/tags/v') && (github.ref == 'refs/heads/main' || contains(github.ref, 'refs/tags/v'))
name: Delivery name: Delivery
needs: [bundles, documents] needs: [bundles, documents]
@@ -251,9 +277,24 @@ jobs:
username: ${{ github.actor }} username: ${{ github.actor }}
password: ${{ secrets.dockerhub_token }} password: ${{ secrets.dockerhub_token }}
- name: Push Branch
if: >
!failure() && !cancelled()
&& github.ref == 'refs/heads/main'
env:
ref_name: ${{github.ref_name}}
ghcr_repo: ${{github.repository}}
docker_repo: ${{inputs.docker_repo}}
run: |
docker manifest push -p "ghcr.io/${ghcr_repo}:${ref_name}"
docker manifest push -p "docker.io/${docker_repo}:${ref_name}"
- name: Push Preview - name: Push Preview
if: > if: >
!failure() && !cancelled() !failure() && !cancelled()
&& contains(github.ref, 'refs/tags/v')
&& !contains(github.ref, '-draft') && !contains(github.ref, '-draft')
env: env:
@@ -267,6 +308,7 @@ jobs:
- name: Push Latest - name: Push Latest
if: > if: >
!failure() && !cancelled() !failure() && !cancelled()
&& contains(github.ref, 'refs/tags/v')
&& !contains(github.ref, '-draft') && !contains(github.ref, '-draft')
&& !contains(github.ref, '-rc') && !contains(github.ref, '-rc')

View File

@@ -50,7 +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]) && contains(fromJSON(inputs.sys_targets), fromJSON('["x86_64-v1-linux-gnu"]')[0])
name: Unit name: Unit
uses: ./.github/workflows/bake.yml uses: ./.github/workflows/bake.yml
@@ -62,8 +62,8 @@ jobs:
sys_names: ${{inputs.sys_names}} sys_names: ${{inputs.sys_names}}
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: '["x86_64-v1-linux-gnu"]'
machines: '["X64"]' machines: ${{inputs.machines}}
excludes: ${{inputs.excludes}} excludes: ${{inputs.excludes}}
includes: ${{inputs.includes}} includes: ${{inputs.includes}}
@@ -92,6 +92,7 @@ jobs:
{"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_toolchain": "stable"},
{"cargo_profile": "test", "rust_target": "aarch64-unknown-linux-gnu"}, {"cargo_profile": "test", "rust_target": "aarch64-unknown-linux-gnu"},
{"cargo_profile": "test", "sys_target": "x86_64-v2-linux-gnu", "bake_target": "smoke-valgrind"},
{"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"},
@@ -104,12 +105,29 @@ jobs:
{"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"}, {"cargo_profile": "release-native", "rust_target": "aarch64-unknown-linux-gnu"},
{"cargo_profile": "release-native", "sys_target": "x86_64-v2-linux-gnu"},
{"cargo_profile": "release-native", "sys_target": "x86_64-v3-linux-gnu"},
{"cargo_profile": "release-native", "sys_target": "x86_64-v4-linux-gnu"},
{"rust_target": "aarch64-unknown-linux-gnu", "feat_set": "none"}, {"rust_target": "aarch64-unknown-linux-gnu", "feat_set": "none"},
{"rust_target": "aarch64-unknown-linux-gnu", "feat_set": "default"}, {"rust_target": "aarch64-unknown-linux-gnu", "feat_set": "default"},
{"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-linux-gnu"}, {"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-v1-linux-gnu"},
{"rust_target": "x86_64-unknown-linux-gnu", "sys_target": "aarch64-linux-gnu"}, {"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-v2-linux-gnu"},
{"sys_target": "x86_64-linux-gnu", "machine": "ARM64"}, {"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-v3-linux-gnu"},
{"sys_target": "aarch64-linux-gnu", "machine": "X64"}, {"rust_target": "aarch64-unknown-linux-gnu", "sys_target": "x86_64-v4-linux-gnu"},
{"rust_target": "x86_64-unknown-linux-gnu", "sys_target": "aarch64-v8-linux-gnu"},
{"sys_target": "aarch64-v8-linux-gnu", "machine": "X64"},
{"sys_target": "x86_64-v1-linux-gnu", "machine": "ARM64"},
{"sys_target": "x86_64-v2-linux-gnu", "machine": "ARM64"},
{"sys_target": "x86_64-v2-linux-gnu", "feat_set": "none"},
{"sys_target": "x86_64-v2-linux-gnu", "feat_set": "default"},
{"sys_target": "x86_64-v3-linux-gnu", "machine": "ARM64"},
{"sys_target": "x86_64-v3-linux-gnu", "feat_set": "none"},
{"sys_target": "x86_64-v3-linux-gnu", "feat_set": "default"},
{"sys_target": "x86_64-v3-linux-gnu", "bake_target": "smoke-valgrind"},
{"sys_target": "x86_64-v4-linux-gnu", "machine": "ARM64"},
{"sys_target": "x86_64-v4-linux-gnu", "feat_set": "none"},
{"sys_target": "x86_64-v4-linux-gnu", "feat_set": "default"},
{"sys_target": "x86_64-v4-linux-gnu", "bake_target": "smoke-valgrind"},
] ]
complement: complement:
@@ -119,7 +137,7 @@ jobs:
&& 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]) && contains(fromJSON(inputs.sys_targets), fromJSON('["x86_64-v1-linux-gnu"]')[0])
name: Complement name: Complement
uses: ./.github/workflows/bake.yml uses: ./.github/workflows/bake.yml
@@ -131,8 +149,8 @@ jobs:
sys_names: ${{inputs.sys_names}} sys_names: ${{inputs.sys_names}}
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: '["x86_64-v1-linux-gnu"]'
machines: '["X64"]' machines: ${{inputs.machines}}
runner: ${{inputs.complement_runner}} runner: ${{inputs.complement_runner}}
excludes: ${{inputs.excludes}} excludes: ${{inputs.excludes}}
includes: ${{inputs.includes}} includes: ${{inputs.includes}}
@@ -145,7 +163,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]) && contains(fromJSON(inputs.sys_targets), fromJSON('["x86_64-v1-linux-gnu"]')[0])
name: Matrix Compliance name: Matrix Compliance
needs: [complement] needs: [complement]
@@ -163,8 +181,8 @@ jobs:
sys_name: ${{fromJSON(inputs.sys_names)}} sys_name: ${{fromJSON(inputs.sys_names)}}
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('["x86_64-v1-linux-gnu"]')}}
machine: ${{fromJSON('["X64"]')}} machine: ${{fromJSON(inputs.machines)}}
exclude: ${{fromJSON(inputs.excludes)}} exclude: ${{fromJSON(inputs.excludes)}}
include: ${{fromJSON(inputs.includes)}} include: ${{fromJSON(inputs.includes)}}

View File

@@ -1,7 +1,7 @@
# syntax = docker/dockerfile:1.11-labs # syntax = docker/dockerfile:1.11-labs
FROM input AS cargo FROM input AS cargo
ARG sys_target ARG sys_triple
ARG rust_target ARG rust_target
ARG rust_toolchain ARG rust_toolchain
ARG RUST_HOME ARG RUST_HOME
@@ -38,7 +38,7 @@ COPY --link --from=input . .
COPY --link --from=rust ${RUST_HOME} ${RUST_HOME} COPY --link --from=rust ${RUST_HOME} ${RUST_HOME}
COPY --link --from=deps /usr/src/tuwunel /usr/src/tuwunel COPY --link --from=deps /usr/src/tuwunel /usr/src/tuwunel
WORKDIR /usr/lib/${sys_target} WORKDIR /usr/lib/${sys_triple}
COPY --link --from=rocksdb . . COPY --link --from=rocksdb . .
WORKDIR /usr/src/tuwunel WORKDIR /usr/src/tuwunel

View File

@@ -1,7 +1,6 @@
# syntax = docker/dockerfile:1.11-labs # syntax = docker/dockerfile:1.11-labs
FROM input AS audit FROM input AS audit
ARG sys_target
ARG rust_toolchain="nightly" ARG rust_toolchain="nightly"
ARG RUSTUP_HOME ARG RUSTUP_HOME
ARG CARGO_HOME ARG CARGO_HOME

View File

@@ -1,7 +1,6 @@
# syntax = docker/dockerfile:1.11-labs # syntax = docker/dockerfile:1.11-labs
FROM input AS build-deb FROM input AS build-deb
ARG sys_target
ARG rust_target ARG rust_target
ARG rust_toolchain ARG rust_toolchain
ARG RUSTUP_HOME ARG RUSTUP_HOME

View File

@@ -1,7 +1,6 @@
# syntax = docker/dockerfile:1.11-labs # syntax = docker/dockerfile:1.11-labs
FROM input AS fmt FROM input AS fmt
ARG sys_target
ARG rust_toolchain="nightly" ARG rust_toolchain="nightly"
ARG RUSTUP_HOME ARG RUSTUP_HOME
ARG CARGO_HOME ARG CARGO_HOME

View File

@@ -1,7 +1,6 @@
# syntax = docker/dockerfile:1.11-labs # syntax = docker/dockerfile:1.11-labs
FROM input AS lychee FROM input AS lychee
ARG sys_target
ARG rust_toolchain="nightly" ARG rust_toolchain="nightly"
ARG RUSTUP_HOME ARG RUSTUP_HOME
ARG CARGO_HOME ARG CARGO_HOME

View File

@@ -1,7 +1,6 @@
# syntax = docker/dockerfile:1.11-labs # syntax = docker/dockerfile:1.11-labs
FROM input AS build-rpm FROM input AS build-rpm
ARG sys_target
ARG rust_toolchain ARG rust_toolchain
ARG RUSTUP_HOME ARG RUSTUP_HOME
ARG CARGO_HOME ARG CARGO_HOME

View File

@@ -26,10 +26,10 @@ EOF
FROM input AS rocksdb-build FROM input AS rocksdb-build
ARG rocksdb_shared=0 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 -mno-outline-atomics" ARG rocksdb_cxx_flags="-ftls-model=initial-exec"
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

@@ -16,7 +16,7 @@ RUN <<EOF
var="${rustup_version}/${rust_target}" var="${rustup_version}/${rust_target}"
url="https://static.rust-lang.org/rustup/archive/$var/rustup-init" 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 a+rx rustup-init
EOF EOF
FROM input AS rust FROM input AS rust
@@ -54,7 +54,7 @@ RUN \
--no-update-default-toolchain \ --no-update-default-toolchain \
--no-modify-path --no-modify-path
chmod -R go+rw $CARGO_HOME $RUSTUP_HOME chmod -R a+rw $CARGO_HOME $RUSTUP_HOME
rm rustup-init rm rustup-init
rustup component add \ rustup component add \

View File

@@ -18,7 +18,6 @@ EOF
FROM input AS ingredients FROM input AS ingredients
ARG sys_target
ARG rust_target ARG rust_target
ARG rust_toolchain ARG rust_toolchain
ARG RUST_HOME ARG RUST_HOME

View File

@@ -16,9 +16,6 @@ variable "repo" {
variable "docker_repo" { variable "docker_repo" {
default = "${repo}" default = "${repo}"
} }
variable "docker_targets" {
default = "[\"local\"]"
}
variable "git_ref" { variable "git_ref" {
default = "${GITHUB_REF}" default = "${GITHUB_REF}"
@@ -60,19 +57,19 @@ variable "rust_targets" {
default = "[\"x86_64-unknown-linux-gnu\"]" default = "[\"x86_64-unknown-linux-gnu\"]"
} }
variable "sys_targets" { variable "sys_names" {
default = "[\"x86_64-linux-gnu\"]" default = "[\"debian\"]"
} }
variable "sys_versions" { variable "sys_versions" {
default = "[\"testing-slim\"]" default = "[\"testing-slim\"]"
} }
variable "sys_names" { variable "sys_targets" {
default = "[\"debian\"]" default = "[\"x86_64-v1-linux-gnu\"]"
} }
# RocksDB options # RocksDB options
variable "rocksdb_portable" { variable "rocksdb_portable" {
default = 1 default = "1"
} }
variable "rocksdb_opt_level" { variable "rocksdb_opt_level" {
default = "3" default = "3"
@@ -1203,7 +1200,7 @@ target "deps-base" {
join(" ", static_rustflags), join(" ", static_rustflags),
join(" ", static_nightly_rustflags), join(" ", static_nightly_rustflags),
join(" ", native_rustflags), join(" ", native_rustflags),
"-C link-arg=-L/usr/lib/gcc/${sys_target}/14", #FIXME "-C link-arg=-L/usr/lib/gcc/${sys_target_triple(sys_target)}/14", #FIXME
contains(split(",", cargo_feat_sets[feat_set]), "bzip2_compression")? contains(split(",", cargo_feat_sets[feat_set]), "bzip2_compression")?
"-C link-arg=-l:libbz2.a": "", "-C link-arg=-l:libbz2.a": "",
contains(split(",", cargo_feat_sets[feat_set]), "lz4_compression")? contains(split(",", cargo_feat_sets[feat_set]), "lz4_compression")?
@@ -1213,7 +1210,7 @@ target "deps-base" {
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_libs), join(" ", static_libs),
sys_target == "aarch64-linux-gnu"? sys_target_triple(sys_target) == "aarch64-linux-gnu"?
"-C link-arg=-l:libgcc.a": "", "-C link-arg=-l:libgcc.a": "",
]): ]):
@@ -1223,7 +1220,9 @@ target "deps-base" {
join(" ", nightly_rustflags), join(" ", nightly_rustflags),
join(" ", static_rustflags), join(" ", static_rustflags),
join(" ", static_nightly_rustflags), join(" ", static_nightly_rustflags),
"-C link-arg=-L/usr/lib/gcc/${sys_target}/14", #FIXME sys_target_triple(sys_target) == "x86_64-linux-gnu"?
"-C target-cpu=${sys_target_isa(sys_target)}": "",
"-C link-arg=-L/usr/lib/gcc/${sys_target_triple(sys_target)}/14", #FIXME
contains(split(",", cargo_feat_sets[feat_set]), "bzip2_compression")? contains(split(",", cargo_feat_sets[feat_set]), "bzip2_compression")?
"-C link-arg=-l:libbz2.a": "", "-C link-arg=-l:libbz2.a": "",
contains(split(",", cargo_feat_sets[feat_set]), "lz4_compression")? contains(split(",", cargo_feat_sets[feat_set]), "lz4_compression")?
@@ -1233,7 +1232,7 @@ target "deps-base" {
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_libs), join(" ", static_libs),
sys_target == "aarch64-linux-gnu"? sys_target_triple(sys_target) == "aarch64-linux-gnu"?
"-C link-arg=-l:libgcc.a": "", "-C link-arg=-l:libgcc.a": "",
]): ]):
@@ -1241,7 +1240,9 @@ target "deps-base" {
join(" ", [ join(" ", [
join(" ", rustflags), join(" ", rustflags),
join(" ", static_rustflags), join(" ", static_rustflags),
"-C link-arg=-L/usr/lib/gcc/${sys_target}/14", #FIXME sys_target_triple(sys_target) == "x86_64-linux-gnu"?
"-C target-cpu=${sys_target_isa(sys_target)}": "",
"-C link-arg=-L/usr/lib/gcc/${sys_target_triple(sys_target)}/14", #FIXME
contains(split(",", cargo_feat_sets[feat_set]), "bzip2_compression")? contains(split(",", cargo_feat_sets[feat_set]), "bzip2_compression")?
"-C link-arg=-l:libbz2.a": "", "-C link-arg=-l:libbz2.a": "",
contains(split(",", cargo_feat_sets[feat_set]), "lz4_compression")? contains(split(",", cargo_feat_sets[feat_set]), "lz4_compression")?
@@ -1251,7 +1252,7 @@ target "deps-base" {
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_libs), join(" ", static_libs),
sys_target == "aarch64-linux-gnu"? sys_target_triple(sys_target) == "aarch64-linux-gnu"?
"-C link-arg=-l:libgcc.a": "", "-C link-arg=-l:libgcc.a": "",
]): ]):
@@ -1259,7 +1260,9 @@ target "deps-base" {
join(" ", [ join(" ", [
join(" ", rustflags), join(" ", rustflags),
join(" ", static_rustflags), join(" ", static_rustflags),
"-C link-arg=-L/usr/lib/gcc/${sys_target}/14", #FIXME sys_target_triple(sys_target) == "x86_64-linux-gnu"?
"-C target-cpu=${sys_target_isa(sys_target)}": "",
"-C link-arg=-L/usr/lib/gcc/${sys_target_triple(sys_target)}/14", #FIXME
contains(split(",", cargo_feat_sets[feat_set]), "bzip2_compression")? contains(split(",", cargo_feat_sets[feat_set]), "bzip2_compression")?
"-C link-arg=-l:libbz2.a": "", "-C link-arg=-l:libbz2.a": "",
contains(split(",", cargo_feat_sets[feat_set]), "lz4_compression")? contains(split(",", cargo_feat_sets[feat_set]), "lz4_compression")?
@@ -1269,7 +1272,7 @@ target "deps-base" {
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_libs), join(" ", static_libs),
sys_target == "aarch64-linux-gnu"? sys_target_triple(sys_target) == "aarch64-linux-gnu"?
"-C link-arg=-l:libgcc.a": "", "-C link-arg=-l:libgcc.a": "",
]): ]):
@@ -1278,6 +1281,8 @@ target "deps-base" {
join(" ", rustflags), join(" ", rustflags),
join(" ", nightly_rustflags), join(" ", nightly_rustflags),
join(" ", dynamic_rustflags), join(" ", dynamic_rustflags),
sys_target_triple(sys_target) == "x86_64-linux-gnu"?
"-C target-cpu=${sys_target_isa(sys_target)}": "",
contains(split(",", cargo_feat_sets[feat_set]), "bzip2_compression")? contains(split(",", cargo_feat_sets[feat_set]), "bzip2_compression")?
"-C link-arg=-lbz2": "", "-C link-arg=-lbz2": "",
contains(split(",", cargo_feat_sets[feat_set]), "lz4_compression")? contains(split(",", cargo_feat_sets[feat_set]), "lz4_compression")?
@@ -1336,10 +1341,27 @@ target "rocksdb-build" {
rocksdb_zstd = contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? 1: 0 rocksdb_zstd = contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? 1: 0
rocksdb_jemalloc = contains(split(",", cargo_feat_sets[feat_set]), "jemalloc")? 1: 0 rocksdb_jemalloc = contains(split(",", cargo_feat_sets[feat_set]), "jemalloc")? 1: 0
rocksdb_iouring = contains(split(",", cargo_feat_sets[feat_set]), "io_uring")? 1: 0 rocksdb_iouring = contains(split(",", cargo_feat_sets[feat_set]), "io_uring")? 1: 0
rocksdb_portable = cargo_profile == "release_max_perf"? 0: rocksdb_portable
rocksdb_build_type = rocksdb_build_type
rocksdb_opt_level = rocksdb_opt_level
rocksdb_shared = 0 rocksdb_shared = 0
rocksdb_opt_level = rocksdb_opt_level
rocksdb_build_type = rocksdb_build_type
rocksdb_cxx_flags = (
cargo_profile == "release-native" && sys_target_triple(sys_target) == "aarch64-linux-gnu"?
"-ftls-model=local-exec -mno-outline-atomics":
cargo_profile == "release-native"?
"-ftls-model=local-exec":
sys_target_triple(sys_target) == "aarch64-linux-gnu"?
"-ftls-model=initial-exec -mno-outline-atomics":
sys_target_triple(sys_target) == "x86_64-linux-gnu" && sys_target != "x86_64-v1-linux-gnu"?
"-ftls-model=initial-exec -mpclmul":
"-ftls-model=initial-exec"
)
rocksdb_portable = (
cargo_profile == "release-native"?
"0":
sys_target_triple(sys_target) == "x86_64-linux-gnu"?
"${sys_target_isa(sys_target)}":
rocksdb_portable
)
} }
} }
@@ -1435,8 +1457,8 @@ target "ingredients" {
"--all-features": "--no-default-features" "--all-features": "--no-default-features"
) )
RUST_BACKTRACE = "full" RUST_BACKTRACE = "full"
ROCKSDB_LIB_DIR="/usr/lib/${sys_target}" ROCKSDB_LIB_DIR="/usr/lib/${sys_target_triple(sys_target)}"
JEMALLOC_OVERRIDE="/usr/lib/${sys_target}/libjemalloc.a" JEMALLOC_OVERRIDE="/usr/lib/${sys_target_triple(sys_target)}/libjemalloc.a"
ZSTD_SYS_USE_PKG_CONFIG = ( ZSTD_SYS_USE_PKG_CONFIG = (
contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? 1: 0 contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? 1: 0
) )
@@ -1517,8 +1539,8 @@ target "rust" {
cargo_installs = join(" ", cargo_installs) cargo_installs = join(" ", cargo_installs)
CARGO_TERM_VERBOSE = CARGO_TERM_VERBOSE CARGO_TERM_VERBOSE = CARGO_TERM_VERBOSE
RUSTUP_HOME = "/opt/rust/rustup/${sys_name}/${sys_target}" RUSTUP_HOME = "/opt/rust/rustup/${sys_name}/${sys_target_triple(sys_target)}"
CARGO_HOME = "/opt/rust/cargo/${sys_name}/${sys_target}" CARGO_HOME = "/opt/rust/cargo/${sys_name}/${sys_target_triple(sys_target)}"
} }
} }
@@ -1725,8 +1747,8 @@ target "base" {
} }
args = { args = {
DEBIAN_FRONTEND="noninteractive" DEBIAN_FRONTEND="noninteractive"
var_lib_apt = "/var/lib/apt/${sys_name}/${sys_version}/${sys_target}" var_lib_apt = "/var/lib/apt/${sys_name}/${sys_version}/${sys_target_triple(sys_target)}"
var_cache = "/var/cache/${sys_name}/${sys_version}/${sys_target}" var_cache = "/var/cache/${sys_name}/${sys_version}/${sys_target_triple(sys_target)}"
packages = join(" ", base_pkgs) packages = join(" ", base_pkgs)
} }
} }
@@ -1746,13 +1768,21 @@ target "system" {
cache_to = ["type=local,compression=zstd,mode=max,compression-level=${cache_compress_level}"] cache_to = ["type=local,compression=zstd,mode=max,compression-level=${cache_compress_level}"]
cache_from = ["type=local"] cache_from = ["type=local"]
dockerfile = "${docker_dir}/Dockerfile.system" dockerfile = "${docker_dir}/Dockerfile.system"
platforms = jsondecode(docker_targets)
matrix = sys
context = "." context = "."
matrix = sys
platforms = (
sys_target_triple(sys_target) == "x86_64-linux-gnu"?
["linux/amd64/${sys_target_ver(sys_target)}"]:
sys_target_triple(sys_target) == "aarch64-linux-gnu"?
["linux/arm64"]:
["local"]
)
args = { args = {
sys_name = sys_name sys_name = sys_name
sys_version = sys_version sys_version = sys_version
sys_target = sys_target sys_target = sys_target
sys_triple = sys_target_triple(sys_target)
sys_isa = sys_target_isa(sys_target)
} }
} }
@@ -1761,6 +1791,33 @@ target "system" {
# Utils # Utils
# #
function "sys_target_isa" {
params = [sys_target]
result = (
sys_target_ver(sys_target) != "v1"?
join("-",
[
replace(split("-", sys_target)[0], "_", "-"),
sys_target_ver(sys_target)
]):
replace(split("-", sys_target)[0], "_", "-")
)
}
function "sys_target_triple" {
params = [sys_target]
result = join("-", [
split("-", sys_target)[0],
split("-", sys_target)[2],
split("-", sys_target)[3],
])
}
function "sys_target_ver" {
params = [sys_target]
result = split("-", sys_target)[1]
}
function "elem_tag" { function "elem_tag" {
params = [prefix, matrix, tag] params = [prefix, matrix, tag]
result = join(":", [elem(prefix, matrix), tag]) result = join(":", [elem(prefix, matrix), tag])

View File

@@ -14,9 +14,8 @@ default_feat_sets='["all"]'
default_rust_toolchains='["nightly"]' default_rust_toolchains='["nightly"]'
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_versions='["testing-slim"]' default_sys_versions='["testing-slim"]'
default_docker_targets='["local"]' default_sys_targets='["x86_64-v1-linux-gnu"]'
if test ! -z "$cargo_profile"; then if test ! -z "$cargo_profile"; then
env_cargo_profiles="[\"${cargo_profile}\"]" env_cargo_profiles="[\"${cargo_profile}\"]"
@@ -46,10 +45,6 @@ if test ! -z "$sys_version"; then
env_sys_versions="[\"${sys_version}\"]" env_sys_versions="[\"${sys_version}\"]"
fi fi
if test ! -z "$docker_target"; then
env_docker_targets="[\"${docker_target}\"]"
fi
set -a set -a
bake_target="${bake_target:-$@}" bake_target="${bake_target:-$@}"
cargo_profiles="${env_cargo_profiles:-$default_cargo_profiles}" cargo_profiles="${env_cargo_profiles:-$default_cargo_profiles}"
@@ -59,7 +54,6 @@ rust_toolchains="${env_rust_toolchains:-$default_rust_toolchains}"
sys_names="${env_sys_names:-$default_sys_names}" sys_names="${env_sys_names:-$default_sys_names}"
sys_targets="${env_sys_targets:-$default_sys_targets}" sys_targets="${env_sys_targets:-$default_sys_targets}"
sys_versions="${env_sys_versions:-$default_sys_versions}" sys_versions="${env_sys_versions:-$default_sys_versions}"
docker_targets="${env_docker_targets:-$default_docker_targets}"
docker_dir="$PWD/$BASEDIR" docker_dir="$PWD/$BASEDIR"
builder_name="${GITHUB_ACTOR:-owo}" builder_name="${GITHUB_ACTOR:-owo}"

View File

@@ -12,7 +12,7 @@ default_feat_set="all"
default_rust_toolchain="nightly" default_rust_toolchain="nightly"
default_rust_target="x86_64-unknown-linux-gnu" default_rust_target="x86_64-unknown-linux-gnu"
default_sys_name="debian" default_sys_name="debian"
default_sys_target="x86_64-linux-gnu" default_sys_target="x86_64-v1-linux-gnu"
default_sys_version="testing-slim" default_sys_version="testing-slim"
set -a set -a