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>
This commit is contained in:
62
.gitea/workflows/release.yaml
Normal file
62
.gitea/workflows/release.yaml
Normal file
@@ -0,0 +1,62 @@
|
||||
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
|
||||
Reference in New Issue
Block a user