Files
AgentCompany/.github/workflows/remote-release-platforms.yml
T
ZacharyZhang-NY 6bb656c43a Package Boss build 0.4.171 from the current workspace snapshot
Constraint: Boss Windows artifacts are built on a native GitHub runner from a temporary snapshot branch
Rejected: Build Boss Windows locally on Apple Silicon | docker/wine packaging is not stable on this host
Confidence: medium
Scope-risk: narrow
Directive: This snapshot branch is transport-only and should be deleted after the Boss build is recovered locally
Tested: local Boss mac build stages before snapshot creation
Not-tested: remote Boss Windows packaging before workflow execution
2026-04-21 21:49:01 -04:00

174 lines
5.5 KiB
YAML

name: Remote Release Platforms
on:
workflow_dispatch:
inputs:
release_tag:
description: Draft GitHub release tag used as the transport bucket
required: true
type: string
release_title:
description: Human-readable title for the draft release
required: false
type: string
concurrency:
group: remote-release-${{ github.ref }}-${{ inputs.release_tag }}
cancel-in-progress: false
env:
PNPM_VERSION: "10.24.0"
NODE_VERSION: "22"
jobs:
build-windows:
name: Windows Universal Installer
runs-on: windows-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: ${{ env.PNPM_VERSION }}
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: pnpm
- run: pnpm install --frozen-lockfile
- name: Build electron-vite
run: pnpm exec electron-vite build
- name: Package
run: pnpm exec electron-builder --win --x64 --arm64 --config electron-builder.yml --publish never
env:
CSC_LINK: ${{ secrets.WIN_CERTIFICATE_P12_BASE64 }}
CSC_KEY_PASSWORD: ${{ secrets.WIN_CERTIFICATE_PASSWORD }}
- name: Upload release files
shell: bash
env:
GH_TOKEN: ${{ github.token }}
RELEASE_TAG: ${{ inputs.release_tag }}
RELEASE_TITLE: ${{ inputs.release_title }}
run: |
set -euo pipefail
gh release view "$RELEASE_TAG" >/dev/null 2>&1 || \
gh release create "$RELEASE_TAG" \
--draft \
--prerelease \
--title "${RELEASE_TITLE:-Remote Release $GITHUB_RUN_ID}" \
--notes "Temporary release transport generated by remote-release-platforms.yml." \
--target "$GITHUB_SHA"
shopt -s nullglob
files=(
build/release/*.exe
build/release/*.blockmap
build/release/latest.yml
)
if [ ${#files[@]} -eq 0 ]; then
echo "No Windows release files found."
exit 1
fi
gh release upload "$RELEASE_TAG" "${files[@]}" --clobber
build-linux-x64:
name: Linux x64
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: ${{ env.PNPM_VERSION }}
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: pnpm
- run: pnpm install --frozen-lockfile
- name: Build electron-vite
run: pnpm exec electron-vite build
- name: Package
run: pnpm exec electron-builder --linux --x64 --config electron-builder.yml --publish never
- name: Upload release files
env:
GH_TOKEN: ${{ github.token }}
RELEASE_TAG: ${{ inputs.release_tag }}
RELEASE_TITLE: ${{ inputs.release_title }}
run: |
set -euo pipefail
gh release view "$RELEASE_TAG" >/dev/null 2>&1 || \
gh release create "$RELEASE_TAG" \
--draft \
--prerelease \
--title "${RELEASE_TITLE:-Remote Release $GITHUB_RUN_ID}" \
--notes "Temporary release transport generated by remote-release-platforms.yml." \
--target "$GITHUB_SHA"
shopt -s nullglob
files=()
for file in build/release/AgentCompany-*.AppImage; do
if [[ "$file" != *arm64* ]]; then
files+=("$file")
fi
done
files+=(
build/release/agent-company_*_amd64.deb
build/release/agent-company-*.x86_64.rpm
build/release/latest-linux.yml
)
if [ ${#files[@]} -eq 0 ]; then
echo "No Linux x64 release files found."
exit 1
fi
gh release upload "$RELEASE_TAG" "${files[@]}" --clobber
build-linux-arm64:
name: Linux arm64
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: ${{ env.PNPM_VERSION }}
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: pnpm
- run: pnpm install --frozen-lockfile
- name: Build electron-vite
run: pnpm exec electron-vite build
- name: Package
run: pnpm exec electron-builder --linux --arm64 --config electron-builder.yml --publish never
- name: Upload release files
env:
GH_TOKEN: ${{ github.token }}
RELEASE_TAG: ${{ inputs.release_tag }}
RELEASE_TITLE: ${{ inputs.release_title }}
run: |
set -euo pipefail
gh release view "$RELEASE_TAG" >/dev/null 2>&1 || \
gh release create "$RELEASE_TAG" \
--draft \
--prerelease \
--title "${RELEASE_TITLE:-Remote Release $GITHUB_RUN_ID}" \
--notes "Temporary release transport generated by remote-release-platforms.yml." \
--target "$GITHUB_SHA"
shopt -s nullglob
files=(
build/release/*arm64*.AppImage
build/release/*arm64*.deb
build/release/*aarch64*.rpm
)
if [ ${#files[@]} -eq 0 ]; then
echo "No Linux arm64 release files found."
exit 1
fi
gh release upload "$RELEASE_TAG" "${files[@]}" --clobber