2121 R2_BUCKET : rivet-releases
2222 R2_ENDPOINT : https://2a94c6a0ced8d35ea63cddc86c2681e7.r2.cloudflarestorage.com
2323 SIDECAR_PLATFORMS : " linux-x64-gnu linux-arm64-gnu darwin-x64 darwin-arm64"
24- PUBLISH_INCLUDE_REGISTRY_PACKAGES : " 1"
24+ RUST_TOOLCHAIN : " 1.91. 1"
2525 LINUX_GNU_LLVM_VERSION : " 22"
2626 LINUX_GNU_SYSROOT_TAG : " sysroot-20250207"
2727
6666 targets : wasm32-wasip1
6767 - uses : Swatinem/rust-cache@v2
6868 with :
69- workspaces : registry/native -> registry/native/target
69+ workspaces : registry/native -> target
70+ cache-workspace-crates : true
7071 key : wasm-commands-${{ hashFiles('registry/native/Cargo.lock') }}
7172 - run : pnpm install --frozen-lockfile --filter '@rivet-dev/agentos-runtime-core...'
7273 - run : make -C registry/native commands
@@ -79,141 +80,87 @@ jobs:
7980
8081 build-sidecar :
8182 needs : [context]
82- name : " Build sidecars (${{ matrix.platform }})"
83+ name : " Build linux native artifacts (${{ matrix.platform }})"
8384 strategy :
8485 fail-fast : false
8586 matrix :
8687 include :
8788 - platform : linux-x64-gnu
88- runner : [self-hosted, agentos-builder]
89+ runner : ubuntu-22.04
8990 target : x86_64-unknown-linux-gnu
9091 - platform : linux-arm64-gnu
9192 runner : ubuntu-22.04-arm
9293 target : aarch64-unknown-linux-gnu
9394 runs-on : ${{ matrix.runner }}
9495 steps :
9596 - uses : actions/checkout@v4
96- - uses : pnpm/action-setup@v4
97- - uses : actions/setup-node@v4
98- with :
99- node-version : 22
100- cache : pnpm
101- cache-dependency-path : pnpm-lock.yaml
102- - uses : dtolnay/rust-toolchain@stable
103- with :
104- targets : ${{ matrix.target }}
105- - uses : Swatinem/rust-cache@v2
106- with :
107- workspaces : . -> target
108- key : ${{ matrix.target }}-${{ env.LINUX_GNU_SYSROOT_TAG }}-llvm-${{ env.LINUX_GNU_LLVM_VERSION }}-${{ needs.context.outputs.trigger }}
109- - uses : actions/cache@v4
110- with :
111- path : ~/.cargo/.rusty_v8
112- key : ${{ runner.os }}-${{ matrix.target }}-rusty-v8-${{ hashFiles('Cargo.lock') }}
113- restore-keys : |
114- ${{ runner.os }}-${{ matrix.target }}-rusty-v8-
115- - run : pnpm install --frozen-lockfile --filter='!@agentos/website'
116- - name : Set up Linux GNU sysroot
117- run : scripts/ci/setup-linux-gnu-sysroot.sh
118- - name : Build sidecar binaries
119- id : build
97+ - uses : docker/setup-buildx-action@v3
98+ - name : Resolve build profile
99+ id : mode
120100 run : |
121101 set -euo pipefail
122- out="target/sidecar-artifacts/${{ matrix.platform }}"
123- mkdir -p "$out"
124102 if [ "${{ needs.context.outputs.trigger }}" = "release" ]; then
125- flag="--release"
126- profile="release"
103+ echo "profile=release" >> "$GITHUB_OUTPUT"
127104 else
128- flag=""
129- profile="debug"
105+ echo "profile=debug" >> "$GITHUB_OUTPUT"
130106 fi
131- cargo build $flag -p agentos-sidecar -p agentos-native-sidecar --target ${{ matrix.target }}
132- cp "target/${{ matrix.target }}/${profile}/agentos-sidecar" "$out/agentos-sidecar"
133- cp "target/${{ matrix.target }}/${profile}/agentos-native-sidecar" "$out/agentos-native-sidecar"
134- echo "dir=$out" >> "$GITHUB_OUTPUT"
107+ - name : Build linux artifacts
108+ uses : docker/build-push-action@v6
109+ with :
110+ context : .
111+ file : docker/build/linux-gnu.Dockerfile
112+ build-args : |
113+ TARGET=${{ matrix.target }}
114+ BUILD_PROFILE=${{ steps.mode.outputs.profile }}
115+ CACHE_PLATFORM=${{ matrix.platform }}
116+ RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}
117+ LINUX_GNU_LLVM_VERSION=${{ env.LINUX_GNU_LLVM_VERSION }}
118+ LINUX_GNU_SYSROOT_TAG=${{ env.LINUX_GNU_SYSROOT_TAG }}
119+ tags : agentos-linux-${{ matrix.platform }}
120+ load : true
121+ cache-from : type=gha,scope=linux-${{ matrix.platform }}-${{ steps.mode.outputs.profile }}
122+ cache-to : type=gha,mode=max,scope=linux-${{ matrix.platform }}-${{ steps.mode.outputs.profile }}
123+ - name : Extract linux artifacts
124+ id : extract
125+ run : |
126+ set -euo pipefail
127+ sidecar_out="target/sidecar-artifacts/${{ matrix.platform }}"
128+ plugin_out="target/plugin-artifacts/${{ matrix.platform }}"
129+ mkdir -p "$sidecar_out" "$plugin_out"
130+ cid=$(docker create agentos-linux-${{ matrix.platform }})
131+ docker cp "$cid:/artifacts/agentos-sidecar" "$sidecar_out/agentos-sidecar"
132+ docker cp "$cid:/artifacts/agentos-native-sidecar" "$sidecar_out/agentos-native-sidecar"
133+ docker cp "$cid:/artifacts/libagentos_actor_plugin.so" "$plugin_out/libagentos_actor_plugin.so"
134+ docker rm "$cid"
135+ test -f "$sidecar_out/agentos-sidecar"
136+ test -f "$sidecar_out/agentos-native-sidecar"
137+ test -f "$plugin_out/libagentos_actor_plugin.so"
138+ echo "sidecar_dir=$sidecar_out" >> "$GITHUB_OUTPUT"
139+ echo "plugin_dir=$plugin_out" >> "$GITHUB_OUTPUT"
135140 - name : Check glibc floor
136141 run : |
137142 scripts/ci/check-linux-glibc-floor.sh \
138- "${{ steps.build.outputs.dir }}/agentos-sidecar" \
139- "${{ steps.build.outputs.dir }}/agentos-native-sidecar"
140- - name : Smoke-run in old Linux containers
143+ "${{ steps.extract.outputs.sidecar_dir }}/agentos-sidecar" \
144+ "${{ steps.extract.outputs.sidecar_dir }}/agentos-native-sidecar" \
145+ "${{ steps.extract.outputs.plugin_dir }}/libagentos_actor_plugin.so"
146+ - name : Smoke-run binaries in old Linux containers
141147 run : |
142148 scripts/ci/smoke-linux-artifacts.sh binary \
143- "${{ steps.build.outputs.dir }}/agentos-sidecar" \
144- "${{ steps.build.outputs.dir }}/agentos-native-sidecar"
149+ "${{ steps.extract.outputs.sidecar_dir }}/agentos-sidecar" \
150+ "${{ steps.extract.outputs.sidecar_dir }}/agentos-native-sidecar"
151+ - name : Smoke-run plugin in old Linux containers
152+ run : |
153+ scripts/ci/smoke-linux-artifacts.sh shared-library \
154+ "${{ steps.extract.outputs.plugin_dir }}/libagentos_actor_plugin.so"
145155 - uses : actions/upload-artifact@v4
146156 with :
147157 name : sidecar-${{ matrix.platform }}
148- path : ${{ steps.build .outputs.dir }}
158+ path : ${{ steps.extract .outputs.sidecar_dir }}
149159 if-no-files-found : error
150-
151- build-plugin :
152- needs : [context]
153- name : " Build plugin (${{ matrix.platform }})"
154- strategy :
155- fail-fast : false
156- matrix :
157- include :
158- - platform : linux-x64-gnu
159- runner : ubuntu-22.04
160- target : x86_64-unknown-linux-gnu
161- - platform : linux-arm64-gnu
162- runner : ubuntu-22.04-arm
163- target : aarch64-unknown-linux-gnu
164- runs-on : ${{ matrix.runner }}
165- steps :
166- - uses : actions/checkout@v4
167- - uses : pnpm/action-setup@v4
168- - uses : actions/setup-node@v4
169- with :
170- node-version : 22
171- cache : pnpm
172- cache-dependency-path : pnpm-lock.yaml
173- - uses : dtolnay/rust-toolchain@stable
174- with :
175- targets : ${{ matrix.target }}
176- - uses : Swatinem/rust-cache@v2
177- with :
178- workspaces : . -> target
179- key : plugin-${{ matrix.target }}-${{ env.LINUX_GNU_SYSROOT_TAG }}-llvm-${{ env.LINUX_GNU_LLVM_VERSION }}-${{ needs.context.outputs.trigger }}
180- - uses : actions/cache@v4
181- with :
182- path : ~/.cargo/.rusty_v8
183- key : ${{ runner.os }}-${{ matrix.target }}-rusty-v8-${{ hashFiles('Cargo.lock') }}
184- restore-keys : |
185- ${{ runner.os }}-${{ matrix.target }}-rusty-v8-
186- - run : pnpm install --frozen-lockfile --filter='!@agentos/website'
187- - name : Set up Linux GNU sysroot
188- run : scripts/ci/setup-linux-gnu-sysroot.sh
189- - name : Build plugin cdylib
190- id : build
191- run : |
192- set -euo pipefail
193- out="target/plugin-artifacts/${{ matrix.platform }}"
194- mkdir -p "$out"
195- if [ "${{ needs.context.outputs.trigger }}" = "release" ]; then
196- cargo build --release -p agentos-actor-plugin --target ${{ matrix.target }}
197- profile="release"
198- else
199- cargo build -p agentos-actor-plugin --target ${{ matrix.target }}
200- profile="debug"
201- fi
202- cp "target/${{ matrix.target }}/${profile}/libagentos_actor_plugin.so" \
203- "$out/libagentos_actor_plugin.so"
204- echo "dir=$out" >> "$GITHUB_OUTPUT"
205- - name : Check glibc floor
206- run : |
207- scripts/ci/check-linux-glibc-floor.sh \
208- "${{ steps.build.outputs.dir }}/libagentos_actor_plugin.so"
209- - name : Smoke-run in old Linux containers
210- run : |
211- scripts/ci/smoke-linux-artifacts.sh shared-library \
212- "${{ steps.build.outputs.dir }}/libagentos_actor_plugin.so"
213160 - uses : actions/upload-artifact@v4
214161 with :
215162 name : plugin-${{ matrix.platform }}
216- path : ${{ steps.build .outputs.dir }}
163+ path : ${{ steps.extract .outputs.plugin_dir }}
217164 if-no-files-found : error
218165
219166 build-sidecar-darwin :
@@ -232,19 +179,36 @@ jobs:
232179 runs-on : ubuntu-22.04
233180 steps :
234181 - uses : actions/checkout@v4
182+ - uses : docker/setup-buildx-action@v3
235183 - name : Log in to ghcr.io
236184 run : echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
185+ - name : Compute build profile
186+ id : mode
187+ run : |
188+ set -euo pipefail
189+ if [ "${{ needs.context.outputs.trigger }}" = "release" ]; then
190+ echo "profile=release" >> "$GITHUB_OUTPUT"
191+ else
192+ echo "profile=debug" >> "$GITHUB_OUTPUT"
193+ fi
237194 - name : Cross-compile via osxcross
195+ uses : docker/build-push-action@v6
196+ with :
197+ context : .
198+ file : docker/build/darwin.Dockerfile
199+ build-args : |
200+ TARGET=${{ matrix.target }}
201+ CLANG=${{ matrix.clang }}
202+ BUILD_PROFILE=${{ steps.mode.outputs.profile }}
203+ CACHE_PLATFORM=${{ matrix.platform }}
204+ RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}
205+ tags : agentos-darwin-${{ matrix.platform }}
206+ load : true
207+ cache-from : type=gha,scope=darwin-${{ matrix.platform }}-${{ steps.mode.outputs.profile }}
208+ cache-to : type=gha,mode=max,scope=darwin-${{ matrix.platform }}-${{ steps.mode.outputs.profile }}
209+ - name : Extract darwin artifacts
238210 run : |
239211 set -euo pipefail
240- if [ "${{ needs.context.outputs.trigger }}" = "release" ]; then profile=release; else profile=debug; fi
241- DOCKER_BUILDKIT=1 docker build \
242- -f docker/build/darwin.Dockerfile \
243- --build-arg TARGET=${{ matrix.target }} \
244- --build-arg CLANG=${{ matrix.clang }} \
245- --build-arg BUILD_PROFILE="${profile}" \
246- -t agentos-darwin-${{ matrix.platform }} .
247-
248212 sidecar_out="target/sidecar-artifacts/${{ matrix.platform }}"
249213 plugin_out="target/plugin-artifacts/${{ matrix.platform }}"
250214 mkdir -p "$sidecar_out" "$plugin_out"
@@ -256,6 +220,14 @@ jobs:
256220 test -f "$sidecar_out/agentos-sidecar"
257221 test -f "$sidecar_out/agentos-native-sidecar"
258222 test -f "$plugin_out/libagentos_actor_plugin.dylib"
223+ case "${{ matrix.platform }}" in
224+ darwin-x64) expected_arch="x86_64" ;;
225+ darwin-arm64) expected_arch="arm64" ;;
226+ *) echo "unknown darwin platform: ${{ matrix.platform }}" >&2; exit 2 ;;
227+ esac
228+ file "$sidecar_out/agentos-sidecar" | grep -F "$expected_arch"
229+ file "$sidecar_out/agentos-native-sidecar" | grep -F "$expected_arch"
230+ file "$plugin_out/libagentos_actor_plugin.dylib" | grep -F "$expected_arch"
259231 - uses : actions/upload-artifact@v4
260232 with :
261233 name : sidecar-${{ matrix.platform }}
@@ -268,9 +240,9 @@ jobs:
268240 if-no-files-found : error
269241
270242 publish-npm :
271- needs : [context, wasm-commands, build-sidecar, build-plugin, build- sidecar-darwin]
243+ needs : [context, wasm-commands, build-sidecar, build-sidecar-darwin]
272244 name : Publish npm
273- if : ${{ !cancelled() && needs.wasm-commands.result == 'success' && needs.build-sidecar.result == 'success' && needs.build-plugin.result == 'success' && needs.build- sidecar-darwin.result == 'success' }}
245+ if : ${{ !cancelled() && needs.wasm-commands.result == 'success' && needs.build-sidecar.result == 'success' && needs.build-sidecar-darwin.result == 'success' }}
274246 runs-on : ubuntu-latest
275247 steps :
276248 - uses : actions/checkout@v4
@@ -330,14 +302,13 @@ jobs:
330302 pnpm --filter=publish exec tsx src/ci/bin.ts bump-versions \
331303 --version ${{ needs.context.outputs.version }} \
332304 --version-only
333- - name : Install wasm-pack
334- run : |
335- rustup target add wasm32-unknown-unknown
336- curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
337305 - run : node packages/runtime-core/scripts/copy-wasm-commands.mjs --require
338306 - name : Build TypeScript packages
307+ env :
308+ AGENTOS_SKIP_NATIVE_META_BUILD : " 1"
339309 run : |
340310 npx turbo build \
311+ --filter='!@rivet-dev/agentos-plugin' \
341312 --filter='!@rivet-dev/agentos-playground' \
342313 --filter='!./examples/*' \
343314 --filter='!./examples/quickstart/*'
@@ -394,6 +365,7 @@ jobs:
394365 cp "artifacts/sidecar-${p}/agentos-sidecar" "release-assets/agentos-sidecar-${target}"
395366 cp "artifacts/sidecar-${p}/agentos-native-sidecar" "release-assets/agentos-native-sidecar-${target}"
396367 done
368+ chmod +x release-assets/agentos-sidecar-* release-assets/agentos-native-sidecar-*
397369 if [ -d crates/execution/assets/pyodide ]; then
398370 mkdir -p release-assets/pyodide
399371 cp -R crates/execution/assets/pyodide/. release-assets/pyodide/
0 commit comments