Skip to content

Commit 1a80bdd

Browse files
committed
ci(publish): build and publish container runner release artifacts
1 parent 081809c commit 1a80bdd

3 files changed

Lines changed: 44 additions & 0 deletions

File tree

.github/workflows/publish.yaml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,23 @@ jobs:
157157
upload_prefix: engine
158158
platform: windows-x64
159159
release_only: true
160+
# Container runner binary: static musl builds only. The runner only ever
161+
# runs inside Linux containers, where users curl the released binary into
162+
# their image.
163+
- name: container-runner (linux-x64-musl)
164+
build_target: container-runner
165+
docker: docker/build/linux-x64-musl.Dockerfile
166+
artifact: rivet-container-runner-x86_64-unknown-linux-musl
167+
upload_prefix: container-runner
168+
platform: linux-x64-musl
169+
release_only: false
170+
- name: container-runner (linux-arm64-musl)
171+
build_target: container-runner
172+
docker: docker/build/linux-arm64-musl.Dockerfile
173+
artifact: rivet-container-runner-aarch64-unknown-linux-musl
174+
upload_prefix: container-runner
175+
platform: linux-arm64-musl
176+
release_only: false
160177
# Rivet Cloud CLI: 4 platforms for preview, 5 for release. The publish
161178
# job also places the matching rivet-engine artifact next to the CLI
162179
# binary so `rivet dev` works from the npm package.
@@ -407,6 +424,12 @@ jobs:
407424
path: cli-artifacts
408425
pattern: cli-*
409426
merge-multiple: true
427+
- name: Download container runner artifacts
428+
uses: actions/download-artifact@v4
429+
with:
430+
path: container-runner-artifacts
431+
pattern: container-runner-*
432+
merge-multiple: true
410433
- name: Place native binaries in platform packages
411434
run: |
412435
NATIVE_DIR=rivetkit-typescript/packages/rivetkit-napi
@@ -552,6 +575,12 @@ jobs:
552575
R2_RELEASES_SECRET_ACCESS_KEY: ${{ secrets.R2_RELEASES_SECRET_ACCESS_KEY }}
553576
run: pnpm --filter=publish exec tsx src/ci/bin.ts upload-r2 --source "$GITHUB_WORKSPACE/engine-artifacts" --sha ${{ needs.context.outputs.sha }}
554577

578+
- name: Upload container runner binaries to R2
579+
env:
580+
R2_RELEASES_ACCESS_KEY_ID: ${{ secrets.R2_RELEASES_ACCESS_KEY_ID }}
581+
R2_RELEASES_SECRET_ACCESS_KEY: ${{ secrets.R2_RELEASES_SECRET_ACCESS_KEY }}
582+
run: pnpm --filter=publish exec tsx src/ci/bin.ts upload-r2 --source "$GITHUB_WORKSPACE/container-runner-artifacts" --sha ${{ needs.context.outputs.sha }} --name container-runner
583+
555584
- name: Copy R2 artifacts to version path
556585
if: needs.context.outputs.trigger == 'release'
557586
env:
@@ -562,6 +591,11 @@ jobs:
562591
--sha ${{ needs.context.outputs.sha }} \
563592
--version ${{ needs.context.outputs.version }} \
564593
--latest ${{ needs.context.outputs.latest }}
594+
pnpm --filter=publish exec tsx src/ci/bin.ts copy-r2 \
595+
--sha ${{ needs.context.outputs.sha }} \
596+
--version ${{ needs.context.outputs.version }} \
597+
--latest ${{ needs.context.outputs.latest }} \
598+
--name container-runner
565599
566600
- name: Dry-run Rust crate publish
567601
if: needs.context.outputs.trigger != 'release'

docker/build/linux-arm64-musl.Dockerfile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,11 @@ RUN --mount=type=cache,id=cargo-registry-linux-arm64-musl,target=/usr/local/carg
7676
cargo build -p rivet-cli --bin rivet $CARGO_FLAG --target aarch64-unknown-linux-musl && \
7777
/opt/aarch64-linux-musl-cross/bin/aarch64-linux-musl-strip target/aarch64-unknown-linux-musl/$PROFILE_DIR/rivet && \
7878
cp target/aarch64-unknown-linux-musl/$PROFILE_DIR/rivet /artifacts/rivet-aarch64-unknown-linux-musl; \
79+
elif [ "$BUILD_TARGET" = "container-runner" ]; then \
80+
RUSTFLAGS="-C target-feature=+crt-static -C link-arg=-static-libgcc" \
81+
cargo build -p rivet-container-runner --bin rivet-container-runner $CARGO_FLAG --target aarch64-unknown-linux-musl && \
82+
/opt/aarch64-linux-musl-cross/bin/aarch64-linux-musl-strip target/aarch64-unknown-linux-musl/$PROFILE_DIR/rivet-container-runner && \
83+
cp target/aarch64-unknown-linux-musl/$PROFILE_DIR/rivet-container-runner /artifacts/rivet-container-runner-aarch64-unknown-linux-musl; \
7984
elif [ "$BUILD_TARGET" = "rivetkit-napi" ]; then \
8085
cd rivetkit-typescript/packages/rivetkit-napi && \
8186
RUSTFLAGS="--cfg tokio_unstable -C target-feature=-crt-static" \

docker/build/linux-x64-musl.Dockerfile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,11 @@ RUN --mount=type=cache,id=cargo-registry-linux-x64-musl,target=/usr/local/cargo/
7575
cargo build -p rivet-cli --bin rivet $CARGO_FLAG --target x86_64-unknown-linux-musl && \
7676
/opt/x86_64-unknown-linux-musl/bin/x86_64-unknown-linux-musl-strip target/x86_64-unknown-linux-musl/$PROFILE_DIR/rivet && \
7777
cp target/x86_64-unknown-linux-musl/$PROFILE_DIR/rivet /artifacts/rivet-x86_64-unknown-linux-musl; \
78+
elif [ "$BUILD_TARGET" = "container-runner" ]; then \
79+
RUSTFLAGS="-C target-feature=+crt-static -C link-arg=-static-libgcc" \
80+
cargo build -p rivet-container-runner --bin rivet-container-runner $CARGO_FLAG --target x86_64-unknown-linux-musl && \
81+
/opt/x86_64-unknown-linux-musl/bin/x86_64-unknown-linux-musl-strip target/x86_64-unknown-linux-musl/$PROFILE_DIR/rivet-container-runner && \
82+
cp target/x86_64-unknown-linux-musl/$PROFILE_DIR/rivet-container-runner /artifacts/rivet-container-runner-x86_64-unknown-linux-musl; \
7883
elif [ "$BUILD_TARGET" = "rivetkit-napi" ]; then \
7984
cd rivetkit-typescript/packages/rivetkit-napi && \
8085
RUSTFLAGS="--cfg tokio_unstable -C target-feature=-crt-static" \

0 commit comments

Comments
 (0)