Some checks failed
check / check (push) Failing after 1m4s
- KRITISKT: notify-watchern reagerade på Access-events, så vår egen läsning av configen triggade ny omladdning i all oändlighet (var 155:e ms). Panelen revs och byggdes om konstant → blinkande hover, klick som aldrig landade. Nu filtreras eventen till riktiga skrivningar (Modify/Create/Remove/Close-Write). - Titeländringar (webbläsare/terminaler) bygger inte längre om UI:t; tooltips slås i stället upp färskt vid hover (query-tooltip), och klick/skroll/menyer agerar på färskt fönster-state vid eventtillfället. - hotspots::rebuild är idempotent (skippar om config+skärmar oförändrade). - Settings: markup-escape i rubriker (Kant & skugga-varningen). - CI: check + release körs på byggnoden brasse-linux01 (runs-on linux-amd64) — waydock byggs BARA för x86_64, aldrig på Pi5:ns arm-runner. Ny release.yaml: vX.Y.Z-tagg bygger x64-binären och laddar upp till Gitea-släppsidan + rullande latest. release.sh är nu bara tagga-och-pusha. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
102 lines
4.4 KiB
YAML
102 lines
4.4 KiB
YAML
name: release
|
|
|
|
# Släppbygge på byggnoden på brasse-linux01 (x64-runnern, label
|
|
# linux-amd64). En vX.Y.Z-tagg ger en versionerad release + uppdaterar
|
|
# rullande "latest". Bara linux-x64 byggs — waydock är en desktopapp
|
|
# för brasse-linux01, ingen arm-build.
|
|
on:
|
|
push:
|
|
tags: ["v*"]
|
|
workflow_dispatch:
|
|
inputs:
|
|
tag:
|
|
description: "Release-tag (lämna tom för 'latest')"
|
|
required: false
|
|
|
|
jobs:
|
|
build-release:
|
|
runs-on: linux-amd64
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Bestäm tag
|
|
id: t
|
|
run: |
|
|
case "$GITHUB_REF" in
|
|
refs/tags/*) T="$GITHUB_REF_NAME" ;;
|
|
*) T="${{ inputs.tag }}"; [ -z "$T" ] && T="latest" ;;
|
|
esac
|
|
echo "tag=$T" >> "$GITHUB_OUTPUT"
|
|
echo "bygger release: $T"
|
|
|
|
- name: Install toolchain + GTK4 deps
|
|
run: |
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
apt-get update -qq
|
|
apt-get install -y -qq curl build-essential pkg-config git jq \
|
|
libgtk-4-dev meson ninja-build wayland-protocols libwayland-dev
|
|
if ! apt-get install -y -qq libgtk4-layer-shell-dev; then
|
|
git clone --depth 1 https://github.com/wmww/gtk4-layer-shell.git /tmp/g4ls
|
|
meson setup /tmp/g4ls/build /tmp/g4ls \
|
|
-Dintrospection=false -Dvapi=false -Dexamples=false \
|
|
-Ddocs=false -Dtests=false
|
|
ninja -C /tmp/g4ls/build install
|
|
ldconfig
|
|
arch_dir=$(gcc -dumpmachine)
|
|
echo "PKG_CONFIG_PATH=/usr/local/lib/${arch_dir}/pkgconfig:/usr/local/lib/pkgconfig" >> "$GITHUB_ENV"
|
|
echo "LD_LIBRARY_PATH=/usr/local/lib/${arch_dir}:/usr/local/lib" >> "$GITHUB_ENV"
|
|
fi
|
|
curl -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal
|
|
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
|
|
|
|
- name: Bygg x64-binären
|
|
run: |
|
|
cargo build --release --locked
|
|
cargo test --locked
|
|
mkdir -p out
|
|
cp target/release/waydock "out/waydock-${{ steps.t.outputs.tag }}-linux-x64"
|
|
cp target/release/waydock out/waydock-latest-linux-x64
|
|
cp install.sh out/install.sh
|
|
cd out && sha256sum waydock-* install.sh > checksums.txt && ls -la
|
|
|
|
- name: Skapa Gitea-release + ladda upp assets
|
|
env:
|
|
API: ${{ github.server_url }}/api/v1
|
|
REPO: ${{ github.repository }}
|
|
TAG: ${{ steps.t.outputs.tag }}
|
|
TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
BODY="waydock $TAG — linux-x64. Installera: curl -fsSL https://gitea.brasse-pc.eu/brasse/waydock/raw/branch/master/install.sh | sh"
|
|
publish() { # $1 = releasetagg, $2... = assetfiler
|
|
local tag=$1; shift
|
|
local rid
|
|
rid=$(curl -s -X POST "$API/repos/$REPO/releases" \
|
|
-H "Authorization: token $TOKEN" -H 'Content-Type: application/json' \
|
|
-d "{\"tag_name\":\"$tag\",\"name\":\"waydock $tag\",\"body\":\"$BODY\"}" | jq -r '.id // empty')
|
|
[ -z "$rid" ] && rid=$(curl -s "$API/repos/$REPO/releases/tags/$tag" \
|
|
-H "Authorization: token $TOKEN" | jq -r '.id')
|
|
echo "release $tag -> id $rid"
|
|
for f in "$@"; do
|
|
local aid
|
|
aid=$(curl -s "$API/repos/$REPO/releases/$rid/assets" \
|
|
-H "Authorization: token $TOKEN" | jq -r ".[] | select(.name==\"$f\") | .id")
|
|
if [ -n "$aid" ] && [ "$aid" != "null" ]; then
|
|
curl -s -X DELETE "$API/repos/$REPO/releases/$rid/assets/$aid" \
|
|
-H "Authorization: token $TOKEN" -o /dev/null
|
|
fi
|
|
curl -s -X POST "$API/repos/$REPO/releases/$rid/assets?name=$f" \
|
|
-H "Authorization: token $TOKEN" -F "attachment=@out/$f" \
|
|
-o /dev/null -w " $f -> HTTP %{http_code}\n"
|
|
done
|
|
}
|
|
if [ "$TAG" != "latest" ]; then
|
|
publish "$TAG" "waydock-$TAG-linux-x64" install.sh checksums.txt
|
|
fi
|
|
# rullande latest: flytta taggen till HEAD och publicera om
|
|
git config user.name gitea-actions
|
|
git config user.email actions@gitea.brasse-pc.eu
|
|
git tag -f latest
|
|
git push -f origin latest || echo "kunde inte flytta latest-taggen (fortsätter ändå)"
|
|
publish latest waydock-latest-linux-x64 install.sh checksums.txt
|