agent-joule/.github/workflows/agent-joule-release.yml
David Charlot 1ef28e02bb Rename Agent-Zed to Agent-Joule
Rebrand the fork's own surface from agent-zed to agent-joule, leaving all
upstream Zed/GPUI crate names and the fork heritage intact:

- crate agent_zed_panel -> agent_joule_panel (dir, [lib] path, struct
  AgentJoulePanel, the agent_joule action namespace + keymap bindings)
- binary agent-zed -> agent-joule (default-run, bundle, deb, scoop, signing)
- APP_NAME, MCP tool names (agent_joule_*), product/display name "Agent Joule"
  (theme, DMG volume, .desktop, bundle-stable identifier science.transaction.AgentJoule)
- docs + privacy-rationale comments + GitHub workflow files/URLs

Pure token rename (agent-zed/agent_zed/AgentZed/"Agent Zed" -> joule forms);
no behavior change. joule_core 58 tests pass, agent_joule_panel builds green.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-20 13:22:58 -04:00

108 lines
3.9 KiB
YAML

name: Agent Joule Release (Linux)
# Builds the Linux release tarballs (x86_64 + aarch64) on GitHub-hosted runners
# and attaches them to an existing GitHub Release. Manual-dispatch only for now.
on:
workflow_dispatch:
inputs:
tag:
description: "Existing release tag to attach the Linux builds to (e.g. v0.1.0)"
required: true
push:
tags:
- "v*"
permissions:
contents: write
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
# Cap parallelism so the heavy webrtc-sys C++ compile doesn't OOM-kill the compiler.
CARGO_BUILD_JOBS: "2"
# The release target/ (Zed + webrtc/libgit2 C++ trees) is tens of GB — put it on
# the large ephemeral /mnt disk.
CARGO_TARGET_DIR: /mnt/agent-joule-target
jobs:
linux:
strategy:
fail-fast: false
matrix:
include:
- runner: ubuntu-22.04
rs: x86_64-unknown-linux-gnu
cc: clang
cxx: clang++
- runner: ubuntu-22.04-arm
rs: aarch64-unknown-linux-gnu
cc: gcc-14
cxx: g++-14
runs-on: ${{ matrix.runner }}
env:
REMOTE_SERVER_TARGET: ${{ matrix.rs }}
CC: ${{ matrix.cc }}
CXX: ${{ matrix.cxx }}
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Reclaim disk + set up target/swap on /mnt
run: |
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc \
/opt/hostedtoolcache/CodeQL /usr/local/share/boost \
/usr/local/lib/node_modules || true
sudo docker image prune -a -f || true
sudo mkdir -p "$CARGO_TARGET_DIR"
sudo chmod 777 "$CARGO_TARGET_DIR"
sudo fallocate -l 10G /mnt/swapfile
sudo chmod 600 /mnt/swapfile
sudo mkswap /mnt/swapfile
sudo swapon /mnt/swapfile
df -h / /mnt; free -h
- name: Install Linux build dependencies
run: ./script/linux
# The prebuilt arm64 libwebrtc uses SME; its runtime support symbols
# (__arm_tpidr2_save, …) live in GCC 14's libgcc, not the runner's GCC 12.
# Install GCC 14 and make it the default cc/c++ so the link resolves them.
- name: Install GCC 14 for arm64 SME runtime
if: matrix.rs == 'aarch64-unknown-linux-gnu'
run: |
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -y gcc-14 g++-14
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-14 100
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-14 100
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-14 100
cc --version
- name: Install Rust toolchain (pinned by rust-toolchain.toml)
run: |
rustup show active-toolchain || rustup toolchain install
rustup target add "${{ matrix.rs }}"
- name: Bundle Linux release
run: ./script/bundle-linux
- name: Rebrand artifacts to Agent Joule
run: |
cd "$CARGO_TARGET_DIR/release"
for f in zed-linux-*.tar.gz; do mv -f "$f" "agent-${f}"; done
ls -lah agent-joule-linux-*.tar.gz
- name: Upload to GitHub Release
env:
GH_TOKEN: ${{ github.token }}
run: |
TAG="${{ github.event.inputs.tag || github.ref_name }}"
# Create the release on first tag-push (idempotent across matrix jobs).
gh release view "$TAG" --repo "${{ github.repository }}" >/dev/null 2>&1 \
|| gh release create "$TAG" --repo "${{ github.repository }}" \
--title "Agent Joule $TAG" --generate-notes || true
gh release upload "$TAG" \
"$CARGO_TARGET_DIR"/release/agent-joule-linux-*.tar.gz \
--repo "${{ github.repository }}" --clobber