ci: Add oci image to pipeline.
ci: Tweak package targets; elim max-perf for containers. Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
1
.github/workflows/bake.yml
vendored
1
.github/workflows/bake.yml
vendored
@@ -66,6 +66,7 @@ jobs:
|
|||||||
bake:
|
bake:
|
||||||
if: >
|
if: >
|
||||||
!failure() && !cancelled()
|
!failure() && !cancelled()
|
||||||
|
&& inputs.machines
|
||||||
&& fromJSON(inputs.machines)[0] != null
|
&& fromJSON(inputs.machines)[0] != null
|
||||||
&& fromJSON(inputs.bake_targets)[0] != null
|
&& fromJSON(inputs.bake_targets)[0] != null
|
||||||
|
|
||||||
|
|||||||
5
.github/workflows/main.yml
vendored
5
.github/workflows/main.yml
vendored
@@ -141,7 +141,7 @@ jobs:
|
|||||||
{"cargo_profile": "release-max-perf", "rust_toolchain": "stable"},
|
{"cargo_profile": "release-max-perf", "rust_toolchain": "stable"},
|
||||||
{"cargo_profile": "release-max-perf", "feat_set": "default"},
|
{"cargo_profile": "release-max-perf", "feat_set": "default"},
|
||||||
{"cargo_profile": "release-max-perf", "feat_set": "none"},
|
{"cargo_profile": "release-max-perf", "feat_set": "none"},
|
||||||
{"cargo_profile": "release"}
|
{"cargo_profile": "release-debuginfo"}
|
||||||
]
|
]
|
||||||
|
|
||||||
package:
|
package:
|
||||||
@@ -166,9 +166,12 @@ jobs:
|
|||||||
{"cargo_profile": "test"},
|
{"cargo_profile": "test"},
|
||||||
{"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-max-perf", "feat_set": "default"},
|
{"cargo_profile": "release-max-perf", "feat_set": "default"},
|
||||||
{"cargo_profile": "release-max-perf", "rust_toolchain": "stable"},
|
{"cargo_profile": "release-max-perf", "rust_toolchain": "stable"},
|
||||||
{"cargo_profile": "release-max-perf", "feat_set": "default"},
|
{"cargo_profile": "release-max-perf", "feat_set": "default"},
|
||||||
|
{"cargo_profile": "release-max-perf", "bake_target": "docker"},
|
||||||
|
{"cargo_profile": "release-max-perf", "bake_target": "oci"},
|
||||||
{"cargo_profile": "release", "rust_toolchain": "nightly"}
|
{"cargo_profile": "release", "rust_toolchain": "nightly"}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
40
.github/workflows/package.yml
vendored
40
.github/workflows/package.yml
vendored
@@ -63,14 +63,14 @@ jobs:
|
|||||||
"book": {"dst": "book", "src": "/book"},
|
"book": {"dst": "book", "src": "/book"},
|
||||||
}
|
}
|
||||||
|
|
||||||
build_standalone:
|
binary:
|
||||||
if: >
|
if: >
|
||||||
!failure() && !cancelled()
|
!failure() && !cancelled()
|
||||||
|
|
||||||
name: Standalone
|
name: Binaries
|
||||||
uses: ./.github/workflows/bake.yml
|
uses: ./.github/workflows/bake.yml
|
||||||
with:
|
with:
|
||||||
bake_targets: '["standalone", "tuwunel"]'
|
bake_targets: '["static"]'
|
||||||
cargo_profiles: ${{inputs.cargo_profiles}}
|
cargo_profiles: ${{inputs.cargo_profiles}}
|
||||||
feat_sets: ${{inputs.feat_sets}}
|
feat_sets: ${{inputs.feat_sets}}
|
||||||
rust_toolchains: ${{inputs.rust_toolchains}}
|
rust_toolchains: ${{inputs.rust_toolchains}}
|
||||||
@@ -83,18 +83,41 @@ jobs:
|
|||||||
includes: ${{inputs.includes}}
|
includes: ${{inputs.includes}}
|
||||||
artifact: >
|
artifact: >
|
||||||
{
|
{
|
||||||
"standalone": {"dst": "tuwunel", "src": "/usr/bin/tuwunel" },
|
"static": {"dst": "tuwunel", "src": "/usr/bin/tuwunel" },
|
||||||
"tuwunel": {"dst": "tuwunel-docker.tar.gz", "img": true }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
build_pkgs:
|
container:
|
||||||
|
if: >
|
||||||
|
!failure() && !cancelled()
|
||||||
|
|
||||||
|
name: Containers
|
||||||
|
uses: ./.github/workflows/bake.yml
|
||||||
|
with:
|
||||||
|
bake_targets: '["docker", "oci"]'
|
||||||
|
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}}
|
||||||
|
artifact: >
|
||||||
|
{
|
||||||
|
"docker": {"dst": "tuwunel-docker.tar.gz", "img": true },
|
||||||
|
"oci": {"dst": "tuwunel-oci.tar.zst", "runner": true }
|
||||||
|
}
|
||||||
|
|
||||||
|
pkgs:
|
||||||
if: >
|
if: >
|
||||||
!failure() && !cancelled()
|
!failure() && !cancelled()
|
||||||
&& 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])
|
||||||
|
|
||||||
name: Build Pkgs
|
name: Distro Pkgs
|
||||||
uses: ./.github/workflows/bake.yml
|
uses: ./.github/workflows/bake.yml
|
||||||
with:
|
with:
|
||||||
bake_targets: '["pkg-deb", "pkg-rpm"]'
|
bake_targets: '["pkg-deb", "pkg-rpm"]'
|
||||||
@@ -120,9 +143,10 @@ 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])
|
||||||
|
&& false
|
||||||
|
|
||||||
name: Check Pkgs
|
name: Check Pkgs
|
||||||
needs: [build_pkgs]
|
needs: [pkgs]
|
||||||
uses: ./.github/workflows/bake.yml
|
uses: ./.github/workflows/bake.yml
|
||||||
with:
|
with:
|
||||||
bake_targets: '["pkg-deb-install", "pkg-rpm-install"]'
|
bake_targets: '["pkg-deb-install", "pkg-rpm-install"]'
|
||||||
|
|||||||
2
.github/workflows/publish.yml
vendored
2
.github/workflows/publish.yml
vendored
@@ -50,7 +50,7 @@ jobs:
|
|||||||
&& inputs.docker_repo != ''
|
&& inputs.docker_repo != ''
|
||||||
&& github.ref == 'refs/heads/main'
|
&& github.ref == 'refs/heads/main'
|
||||||
|
|
||||||
name: Publish containers
|
name: Containers
|
||||||
runs-on: ${{matrix.machine}}
|
runs-on: ${{matrix.machine}}
|
||||||
permissions: write-all
|
permissions: write-all
|
||||||
continue-on-error: false
|
continue-on-error: false
|
||||||
|
|||||||
@@ -280,7 +280,7 @@ target "github" {
|
|||||||
output = ["type=registry,compression=zstd,mode=min,compression-level=${image_compress_level}"]
|
output = ["type=registry,compression=zstd,mode=min,compression-level=${image_compress_level}"]
|
||||||
matrix = cargo_rust_feat_sys
|
matrix = cargo_rust_feat_sys
|
||||||
inherits = [
|
inherits = [
|
||||||
elem("tuwunel", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
elem("docker", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -294,7 +294,7 @@ target "dockerhub" {
|
|||||||
output = ["type=registry,compression=zstd,mode=min,compression-level=${image_compress_level}"]
|
output = ["type=registry,compression=zstd,mode=min,compression-level=${image_compress_level}"]
|
||||||
matrix = cargo_rust_feat_sys
|
matrix = cargo_rust_feat_sys
|
||||||
inherits = [
|
inherits = [
|
||||||
elem("tuwunel", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
elem("docker", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -520,8 +520,9 @@ target "smoketest" {
|
|||||||
group "installs" {
|
group "installs" {
|
||||||
targets = [
|
targets = [
|
||||||
"install",
|
"install",
|
||||||
"standalone",
|
"static",
|
||||||
"tuwunel",
|
"docker",
|
||||||
|
"oci",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -539,14 +540,26 @@ install_labels = {
|
|||||||
"org.opencontainers.image.version" = "${package_version}"
|
"org.opencontainers.image.version" = "${package_version}"
|
||||||
}
|
}
|
||||||
|
|
||||||
target "tuwunel" {
|
target "oci" {
|
||||||
name = elem("tuwunel", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
name = elem("oci", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
||||||
tags = [
|
tags = [
|
||||||
elem_tag("tuwunel", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
|
elem_tag("oci", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
|
||||||
|
]
|
||||||
|
output = ["type=oci,dest=tuwunel-oci.tar.zst,mode=min,compression-level=${image_compress_level}"]
|
||||||
|
matrix = cargo_rust_feat_sys
|
||||||
|
inherits = [
|
||||||
|
elem("docker", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
target "docker" {
|
||||||
|
name = elem("docker", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
||||||
|
tags = [
|
||||||
|
elem_tag("docker", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
|
||||||
]
|
]
|
||||||
matrix = cargo_rust_feat_sys
|
matrix = cargo_rust_feat_sys
|
||||||
inherits = [
|
inherits = [
|
||||||
elem("standalone", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
elem("static", [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]),
|
elem("install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
||||||
]
|
]
|
||||||
contexts = {
|
contexts = {
|
||||||
@@ -555,22 +568,22 @@ target "tuwunel" {
|
|||||||
|| cargo_profile == "release-max-perf"
|
|| cargo_profile == "release-max-perf"
|
||||||
|| cargo_profile == "release"
|
|| cargo_profile == "release"
|
||||||
|| cargo_profile == "release-debuginfo"?
|
|| cargo_profile == "release-debuginfo"?
|
||||||
elem("target:standalone", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]):
|
elem("target:static", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]):
|
||||||
elem("target:install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
elem("target:install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
target = "tuwunel"
|
target = "image"
|
||||||
dockerfile-inline =<<EOF
|
dockerfile-inline =<<EOF
|
||||||
FROM input AS tuwunel
|
FROM input AS image
|
||||||
EXPOSE 8008 8448
|
EXPOSE 8008 8448
|
||||||
ENTRYPOINT ["tuwunel"]
|
ENTRYPOINT ["tuwunel"]
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
target "standalone" {
|
target "static" {
|
||||||
name = elem("standalone", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
name = elem("static", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
||||||
tags = [
|
tags = [
|
||||||
elem_tag("standalone", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
|
elem_tag("static", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
|
||||||
]
|
]
|
||||||
matrix = cargo_rust_feat_sys
|
matrix = cargo_rust_feat_sys
|
||||||
inherits = [
|
inherits = [
|
||||||
@@ -579,9 +592,9 @@ target "standalone" {
|
|||||||
contexts = {
|
contexts = {
|
||||||
input = elem("target:install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
input = elem("target:install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
|
||||||
}
|
}
|
||||||
target = "standalone"
|
target = "static"
|
||||||
dockerfile-inline =<<EOF
|
dockerfile-inline =<<EOF
|
||||||
FROM scratch AS standalone
|
FROM scratch AS static
|
||||||
COPY --from=input /usr/bin/tuwunel /usr/bin/tuwunel
|
COPY --from=input /usr/bin/tuwunel /usr/bin/tuwunel
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
@@ -592,7 +605,7 @@ target "install" {
|
|||||||
elem_tag("install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
|
elem_tag("install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
|
||||||
]
|
]
|
||||||
labels = install_labels
|
labels = install_labels
|
||||||
output = ["type=docker,compression=zstd,mode=min,compression-level=${cache_compress_level}"]
|
output = ["type=docker,compression=zstd,mode=min,compression-level=${image_compress_level}"]
|
||||||
cache_to = ["type=local,compression=zstd,mode=min,compression-level=${cache_compress_level}"]
|
cache_to = ["type=local,compression=zstd,mode=min,compression-level=${cache_compress_level}"]
|
||||||
dockerfile = "${docker_dir}/Dockerfile.install"
|
dockerfile = "${docker_dir}/Dockerfile.install"
|
||||||
target = "install"
|
target = "install"
|
||||||
|
|||||||
Reference in New Issue
Block a user