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