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]>
108 lines
3.9 KiB
YAML
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
|