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
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 :
@@ -88,132 +89,78 @@ jobs:
8889 runner : [self-hosted, agentos-builder]
8990 target : x86_64-unknown-linux-gnu
9091 - platform : linux-arm64-gnu
91- runner : ubuntu-22.04-arm
92+ runner : [self-hosted, agentos-builder-arm64]
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
97+ - uses : docker/setup-buildx-action@v3
11098 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
99+ keep-state : ${{ contains(matrix.runner, 'self-hosted') }}
100+ - name : Resolve build profile
101+ id : mode
120102 run : |
121103 set -euo pipefail
122- out="target/sidecar-artifacts/${{ matrix.platform }}"
123- mkdir -p "$out"
124104 if [ "${{ needs.context.outputs.trigger }}" = "release" ]; then
125- flag="--release"
126- profile="release"
105+ echo "profile=release" >> "$GITHUB_OUTPUT"
127106 else
128- flag=""
129- profile="debug"
107+ echo "profile=debug" >> "$GITHUB_OUTPUT"
130108 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"
109+ - name : Build linux artifacts
110+ uses : docker/build-push-action@v6
111+ with :
112+ context : .
113+ file : docker/build/linux-gnu.Dockerfile
114+ build-args : |
115+ TARGET=${{ matrix.target }}
116+ BUILD_PROFILE=${{ steps.mode.outputs.profile }}
117+ CACHE_PLATFORM=${{ matrix.platform }}
118+ RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}
119+ LINUX_GNU_LLVM_VERSION=${{ env.LINUX_GNU_LLVM_VERSION }}
120+ LINUX_GNU_SYSROOT_TAG=${{ env.LINUX_GNU_SYSROOT_TAG }}
121+ tags : agentos-linux-${{ matrix.platform }}
122+ load : true
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 :
@@ -224,27 +171,46 @@ jobs:
224171 matrix :
225172 include :
226173 - platform : darwin-x64
174+ runner : [self-hosted, agentos-builder]
227175 target : x86_64-apple-darwin
228176 clang : x86_64-apple-darwin20.4
229177 - platform : darwin-arm64
178+ runner : [self-hosted, agentos-builder]
230179 target : aarch64-apple-darwin
231180 clang : aarch64-apple-darwin20.4
232- runs-on : ubuntu-22.04
181+ runs-on : ${{ matrix.runner }}
233182 steps :
234183 - uses : actions/checkout@v4
184+ - uses : docker/setup-buildx-action@v3
185+ with :
186+ keep-state : true
235187 - name : Log in to ghcr.io
236188 run : echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
189+ - name : Compute build profile
190+ id : mode
191+ run : |
192+ set -euo pipefail
193+ if [ "${{ needs.context.outputs.trigger }}" = "release" ]; then
194+ echo "profile=release" >> "$GITHUB_OUTPUT"
195+ else
196+ echo "profile=debug" >> "$GITHUB_OUTPUT"
197+ fi
237198 - name : Cross-compile via osxcross
199+ uses : docker/build-push-action@v6
200+ with :
201+ context : .
202+ file : docker/build/darwin.Dockerfile
203+ build-args : |
204+ TARGET=${{ matrix.target }}
205+ CLANG=${{ matrix.clang }}
206+ BUILD_PROFILE=${{ steps.mode.outputs.profile }}
207+ CACHE_PLATFORM=${{ matrix.platform }}
208+ RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}
209+ tags : agentos-darwin-${{ matrix.platform }}
210+ load : true
211+ - name : Extract darwin artifacts
238212 run : |
239213 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-
248214 sidecar_out="target/sidecar-artifacts/${{ matrix.platform }}"
249215 plugin_out="target/plugin-artifacts/${{ matrix.platform }}"
250216 mkdir -p "$sidecar_out" "$plugin_out"
@@ -256,6 +222,14 @@ jobs:
256222 test -f "$sidecar_out/agentos-sidecar"
257223 test -f "$sidecar_out/agentos-native-sidecar"
258224 test -f "$plugin_out/libagentos_actor_plugin.dylib"
225+ case "${{ matrix.platform }}" in
226+ darwin-x64) expected_arch="x86_64" ;;
227+ darwin-arm64) expected_arch="arm64" ;;
228+ *) echo "unknown darwin platform: ${{ matrix.platform }}" >&2; exit 2 ;;
229+ esac
230+ file "$sidecar_out/agentos-sidecar" | grep -F "$expected_arch"
231+ file "$sidecar_out/agentos-native-sidecar" | grep -F "$expected_arch"
232+ file "$plugin_out/libagentos_actor_plugin.dylib" | grep -F "$expected_arch"
259233 - uses : actions/upload-artifact@v4
260234 with :
261235 name : sidecar-${{ matrix.platform }}
@@ -268,9 +242,9 @@ jobs:
268242 if-no-files-found : error
269243
270244 publish-npm :
271- needs : [context, wasm-commands, build-sidecar, build-plugin, build- sidecar-darwin]
245+ needs : [context, wasm-commands, build-sidecar, build-sidecar-darwin]
272246 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' }}
247+ if : ${{ !cancelled() && needs.wasm-commands.result == 'success' && needs.build-sidecar.result == 'success' && needs.build-sidecar-darwin.result == 'success' }}
274248 runs-on : ubuntu-latest
275249 steps :
276250 - uses : actions/checkout@v4
@@ -330,14 +304,13 @@ jobs:
330304 pnpm --filter=publish exec tsx src/ci/bin.ts bump-versions \
331305 --version ${{ needs.context.outputs.version }} \
332306 --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
337307 - run : node packages/runtime-core/scripts/copy-wasm-commands.mjs --require
338308 - name : Build TypeScript packages
309+ env :
310+ AGENTOS_SKIP_NATIVE_META_BUILD : " 1"
339311 run : |
340312 npx turbo build \
313+ --filter='!@rivet-dev/agentos-plugin' \
341314 --filter='!@rivet-dev/agentos-playground' \
342315 --filter='!./examples/*' \
343316 --filter='!./examples/quickstart/*'
@@ -394,6 +367,7 @@ jobs:
394367 cp "artifacts/sidecar-${p}/agentos-sidecar" "release-assets/agentos-sidecar-${target}"
395368 cp "artifacts/sidecar-${p}/agentos-native-sidecar" "release-assets/agentos-native-sidecar-${target}"
396369 done
370+ chmod +x release-assets/agentos-sidecar-* release-assets/agentos-native-sidecar-*
397371 if [ -d crates/execution/assets/pyodide ]; then
398372 mkdir -p release-assets/pyodide
399373 cp -R crates/execution/assets/pyodide/. release-assets/pyodide/
0 commit comments