name: Release
on:
push:
tags:
- 'v*'
jobs:
release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Read rust-toolchain channel
id: rust-channel
run: |
if grep -q 'channel = "' rust-toolchain.toml 2>/dev/null; then
CHANNEL=$(grep 'channel = "' rust-toolchain.toml | sed 's/.*= "\([^"]*\)".*/\1/')
echo "channel=$CHANNEL" >> $GITHUB_OUTPUT
else
echo "channel=stable" >> $GITHUB_OUTPUT
fi
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ steps.rust-channel.outputs.channel }}
- uses: oven-sh/setup-bun@v2
- name: Build web assets
working-directory: surface/oxios-web/web
run: bun install && bun run build
- name: Publish oxios-kernel
run: cargo publish -p oxios-kernel --token "${{ secrets.CARGO_REGISTRY_TOKEN }}" --allow-dirty
- name: Publish oxios-markdown
run: cargo publish -p oxios-markdown --token "${{ secrets.CARGO_REGISTRY_TOKEN }}" --allow-dirty
- name: Publish oxios-ouroboros
run: cargo publish -p oxios-ouroboros --token "${{ secrets.CARGO_REGISTRY_TOKEN }}" --allow-dirty
- name: Publish oxios-gateway
run: cargo publish -p oxios-gateway --token "${{ secrets.CARGO_REGISTRY_TOKEN }}" --allow-dirty
- name: Publish oxios-mcp
run: cargo publish -p oxios-mcp --token "${{ secrets.CARGO_REGISTRY_TOKEN }}" --allow-dirty
- name: Publish oxios-cli
run: cargo publish -p oxios-cli --token "${{ secrets.CARGO_REGISTRY_TOKEN }}" --allow-dirty
- name: Publish oxios-telegram
run: cargo publish -p oxios-telegram --token "${{ secrets.CARGO_REGISTRY_TOKEN }}" --allow-dirty
- name: Publish oxios-bench
run: cargo publish -p oxios-bench --token "${{ secrets.CARGO_REGISTRY_TOKEN }}" --allow-dirty
- name: Publish oxios-web
run: cargo publish -p oxios-web --token "${{ secrets.CARGO_REGISTRY_TOKEN }}" --allow-dirty
- name: Publish oxios (binary)
run: cargo publish --token "${{ secrets.CARGO_REGISTRY_TOKEN }}" --allow-dirty
- name: Package web assets
run: |
cd surface/oxios-web/web/dist
zip -r $GITHUB_WORKSPACE/web-dist.zip .
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
files: web-dist.zip
generate_release_notes: true