Files
agent-helm/.gitea/workflows/release.yaml
Bjorn Blomberg a6e304fb53
All checks were successful
build-and-push / build (push) Successful in 26s
release-client / build-release (push) Successful in 1m3s
Klient-distribution: självständiga binärer + curl|sh-installer
- daemon: byt node-pty -> @homebridge/node-pty-prebuilt-multiarch (N-API-
  prebuilds för x64+arm64, ingen kompilering); esbuild-bundle av daemonen
- .gitea/workflows/release.yaml: på tag v* bygger pkg båda arkitekturerna på
  Pi-runnern (utan QEMU — prebuilds för båda finns) och publicerar som
  Gitea-release-assets via API
- install.sh: 'curl -fsSL .../install.sh | sh' — detekterar arch, hämtar rätt
  binär från senaste releasen, lägger agent-helm i PATH, skapar config.env +
  valfri systemd-user-service (Arch/Ubuntu)
- deploy/client-build/package.json: pkg-config (assets för prebuilds)
- DEPLOY.md: klient-installationssektion

Verifierat lokalt: pkg-binär (x64, 83 MB) startar, node-pty spawnar pty,
ansluter och input/output funkar end-to-end.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 17:24:21 +02:00

63 lines
2.9 KiB
YAML

name: release-client
# Bygger självständiga klient-binärer (Node + node-pty inbäddat) för
# linux-x64 OCH linux-arm64 på Pi-runnern (prebuilt-multiarch shippar båda
# arkitekturernas prebuilds, så pkg cross-bygger utan QEMU), och publicerar
# dem som assets på en Gitea-release.
on:
push:
tags: ["v*"]
workflow_dispatch:
inputs:
tag:
description: "Release-tag (t.ex. v0.1.0)"
required: true
jobs:
build-release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Bestäm tag
id: t
run: |
if [ -n "${{ inputs.tag }}" ]; then echo "tag=${{ inputs.tag }}" >> "$GITHUB_OUTPUT"; else echo "tag=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT"; fi
- name: Bundla daemonen
run: |
npm install -g pnpm@11.3.0
pnpm install --frozen-lockfile --filter "@agent-helm/daemon..."
pnpm --filter @agent-helm/daemon bundle
- name: Bygg binärer (x64 + arm64) med pkg
run: |
B=/tmp/clientbuild
mkdir -p "$B/out"
cp packages/daemon/dist/daemon.cjs "$B/daemon.cjs"
cp deploy/client-build/package.json "$B/package.json"
cd "$B"
npm install --ignore-scripts --no-audit --no-fund @homebridge/node-pty-prebuilt-multiarch@0.13.1 @yao-pkg/pkg@6.20.0
./node_modules/.bin/pkg daemon.cjs --targets node22-linux-x64 --output out/agent-helm-linux-x64
./node_modules/.bin/pkg daemon.cjs --targets node22-linux-arm64 --output out/agent-helm-linux-arm64
cp "$GITHUB_WORKSPACE/install.sh" out/install.sh
cd out && sha256sum agent-helm-linux-* install.sh > checksums.txt && ls -la
- name: Skapa Gitea-release + ladda upp assets
env:
API: http://gitea-d:3000/api/v1
REPO: ${{ github.repository }}
TAG: ${{ steps.t.outputs.tag }}
TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
B=/tmp/clientbuild/out
BODY="agent-helm klient $TAG — sjalvstandiga binarer (linux x64/arm64). Installera: curl -fsSL https://gitea.brasse-pc.eu/brasse/agent-helm/raw/branch/main/install.sh | sh"
rid=$(curl -s -X POST "$API/repos/$REPO/releases" -H "Authorization: token $TOKEN" -H 'Content-Type: application/json' -d "{\"tag_name\":\"$TAG\",\"name\":\"$TAG\",\"body\":\"$BODY\"}" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
if [ -z "$rid" ]; then rid=$(curl -s "$API/repos/$REPO/releases/tags/$TAG" -H "Authorization: token $TOKEN" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2); fi
echo "release id: $rid"
for f in agent-helm-linux-x64 agent-helm-linux-arm64 install.sh checksums.txt; do
echo "laddar upp $f ..."
curl -s -X POST "$API/repos/$REPO/releases/$rid/assets?name=$f" -H "Authorization: token $TOKEN" -F "attachment=@$B/$f" -o /dev/null -w " -> HTTP %{http_code}\n"
done