@@ -409,7 +409,7 @@ jobs:
409409 retention-days : 5
410410
411411 # ---------------------------------------------------------------------------
412- # Build standalone gateway binaries (Linux GNU — native on each arch )
412+ # Build standalone gateway binaries (Linux GNU — glibc 2.31 floor )
413413 # ---------------------------------------------------------------------------
414414 build-gateway-binary-linux :
415415 name : Build Gateway Binary (Linux ${{ matrix.arch }})
@@ -420,9 +420,11 @@ jobs:
420420 - arch : amd64
421421 runner : linux-amd64-cpu8
422422 target : x86_64-unknown-linux-gnu
423+ zig_target : x86_64-unknown-linux-gnu.2.31
423424 - arch : arm64
424425 runner : linux-arm64-cpu8
425426 target : aarch64-unknown-linux-gnu
427+ zig_target : aarch64-unknown-linux-gnu.2.31
426428 runs-on : ${{ matrix.runner }}
427429 timeout-minutes : 60
428430 container :
@@ -461,20 +463,26 @@ jobs:
461463 set -euo pipefail
462464 sed -i -E '/^\[workspace\.package\]/,/^\[/{s/^version[[:space:]]*=[[:space:]]*".*"/version = "'"${{ needs.compute-versions.outputs.cargo_version }}"'"/}' Cargo.toml
463465
464- - name : Build ${{ matrix.target }}
466+ - name : Build ${{ matrix.zig_target }}
465467 env :
466468 OPENSHELL_IMAGE_TAG : ${{ needs.compute-versions.outputs.source_sha }}
467469 run : |
468470 set -euo pipefail
469- mise x -- cargo build --release --target ${{ matrix.target }} -p openshell-server
471+ mise x -- rustup target add ${{ matrix.target }}
472+ mise x -- cargo zigbuild --release --target ${{ matrix.zig_target }} -p openshell-server --bin openshell-gateway
473+ mkdir -p artifacts/bin
474+ install -m 0755 target/${{ matrix.target }}/release/openshell-gateway artifacts/bin/openshell-gateway
470475
471476 - name : Verify packaged binary
472477 run : |
473478 set -euo pipefail
474- OUTPUT="$(target/${{ matrix.target }}/release /openshell-gateway --version)"
479+ OUTPUT="$(artifacts/bin /openshell-gateway --version)"
475480 echo "$OUTPUT"
476481 grep -q '^openshell-gateway ' <<<"$OUTPUT"
477482
483+ - name : Verify glibc symbol floor
484+ run : tasks/scripts/verify-glibc-symbols.sh 2.31 artifacts/bin/openshell-gateway
485+
478486 - name : sccache stats
479487 if : always()
480488 run : mise x -- sccache --show-stats
@@ -484,7 +492,7 @@ jobs:
484492 set -euo pipefail
485493 mkdir -p artifacts
486494 tar -czf artifacts/openshell-gateway-${{ matrix.target }}.tar.gz \
487- -C target/${{ matrix.target }}/release openshell-gateway
495+ -C artifacts/bin openshell-gateway
488496 ls -lh artifacts/
489497
490498 - name : Upload artifact
@@ -677,7 +685,7 @@ jobs:
677685
678686 build-rpm :
679687 name : Build RPM Packages
680- needs : [compute-versions]
688+ needs : [compute-versions, build-cli-linux, build-gateway-binary-linux ]
681689 uses : ./.github/workflows/rpm-package.yml
682690 with :
683691 checkout-ref : ${{ inputs.tag || github.ref }}
@@ -686,12 +694,120 @@ jobs:
686694 cargo-version : ${{ needs.compute-versions.outputs.cargo_version }}
687695 secrets : inherit
688696
697+ smoke-linux-release-artifacts :
698+ name : Smoke Linux Release Artifacts (${{ matrix.name }})
699+ needs : [build-gateway-binary-linux, build-driver-vm-linux, build-deb, build-rpm]
700+ timeout-minutes : 20
701+ strategy :
702+ fail-fast : false
703+ matrix :
704+ include :
705+ - name : ubuntu-20.04-binaries
706+ runner : linux-amd64-cpu8
707+ image : ubuntu:20.04
708+ kind : binary
709+ artifact_arch : amd64
710+ rpm_arch : x86_64
711+ target : x86_64-unknown-linux-gnu
712+ - name : ubuntu-20.04-binaries-arm64
713+ runner : linux-arm64-cpu8
714+ image : ubuntu:20.04
715+ kind : binary
716+ artifact_arch : arm64
717+ rpm_arch : aarch64
718+ target : aarch64-unknown-linux-gnu
719+ - name : ubuntu-22.04-deb
720+ runner : linux-amd64-cpu8
721+ image : ubuntu:22.04
722+ kind : deb
723+ artifact_arch : amd64
724+ rpm_arch : x86_64
725+ target : x86_64-unknown-linux-gnu
726+ - name : ubuntu-22.04-deb-arm64
727+ runner : linux-arm64-cpu8
728+ image : ubuntu:22.04
729+ kind : deb
730+ artifact_arch : arm64
731+ rpm_arch : aarch64
732+ target : aarch64-unknown-linux-gnu
733+ - name : rhel9-rpm
734+ runner : linux-amd64-cpu8
735+ image : rockylinux:9
736+ kind : rpm
737+ artifact_arch : amd64
738+ rpm_arch : x86_64
739+ target : x86_64-unknown-linux-gnu
740+ - name : rhel9-rpm-aarch64
741+ runner : linux-arm64-cpu8
742+ image : rockylinux:9
743+ kind : rpm
744+ artifact_arch : arm64
745+ rpm_arch : aarch64
746+ target : aarch64-unknown-linux-gnu
747+ runs-on : ${{ matrix.runner }}
748+ container :
749+ image : ${{ matrix.image }}
750+ steps :
751+ - name : Download gateway binary artifact
752+ if : matrix.kind == 'binary'
753+ uses : actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
754+ with :
755+ name : gateway-binary-linux-${{ matrix.artifact_arch }}
756+ path : smoke-input/
757+
758+ - name : Download VM driver binary artifact
759+ if : matrix.kind == 'binary'
760+ uses : actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
761+ with :
762+ name : driver-vm-linux-${{ matrix.artifact_arch }}
763+ path : smoke-input/
764+
765+ - name : Smoke binary artifacts
766+ if : matrix.kind == 'binary'
767+ run : |
768+ set -euo pipefail
769+ mkdir -p smoke-bin
770+ tar -xzf smoke-input/openshell-gateway-${{ matrix.target }}.tar.gz -C smoke-bin
771+ tar -xzf smoke-input/openshell-driver-vm-${{ matrix.target }}.tar.gz -C smoke-bin
772+ smoke-bin/openshell-gateway --version
773+ smoke-bin/openshell-driver-vm --version
774+
775+ - name : Download Debian package artifact
776+ if : matrix.kind == 'deb'
777+ uses : actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
778+ with :
779+ name : deb-linux-${{ matrix.artifact_arch }}
780+ path : package-input/
781+
782+ - name : Smoke Debian package
783+ if : matrix.kind == 'deb'
784+ run : |
785+ set -euo pipefail
786+ apt-get update
787+ apt-get install -y --no-install-recommends ./package-input/*.deb
788+ openshell-gateway --version
789+ /usr/libexec/openshell/openshell-driver-vm --version
790+
791+ - name : Download RPM package artifacts
792+ if : matrix.kind == 'rpm'
793+ uses : actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
794+ with :
795+ name : rpm-linux-${{ matrix.rpm_arch }}
796+ path : package-input/
797+
798+ - name : Smoke RPM packages
799+ if : matrix.kind == 'rpm'
800+ run : |
801+ set -euo pipefail
802+ dnf install -y ./package-input/*.rpm
803+ openshell-gateway --version
804+
689805 # ---------------------------------------------------------------------------
690806 # Create a tagged GitHub Release with CLI, gateway, driver, and wheels
691807 # ---------------------------------------------------------------------------
692808 release :
693809 name : Release
694- needs : [compute-versions, build-cli-linux, build-cli-macos, build-gateway-binary-linux, build-gateway-binary-macos, build-supervisor-binary-linux, build-python-wheels-linux, build-python-wheel-macos, tag-ghcr-release, build-driver-vm-linux, build-driver-vm-macos, build-deb, build-rpm]
810+ needs : [compute-versions, build-cli-linux, build-cli-macos, build-gateway-binary-linux, build-gateway-binary-macos, build-supervisor-binary-linux, build-python-wheels-linux, build-python-wheel-macos, tag-ghcr-release, build-driver-vm-linux, build-driver-vm-macos, build-deb, build-rpm, smoke-linux-release-artifacts ]
695811 runs-on : linux-amd64-cpu8
696812 timeout-minutes : 10
697813 permissions :
0 commit comments