Version 1.0.0; Linux release build and Gitea release script
scripts/linux.Dockerfile builds the AppImage, .deb and Linux native host in Debian 12 (amd64); scripts/gitea-release.sh creates the v<version> release and uploads them with SHA256SUMS. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "kestrove-desktop",
|
"name": "kestrove-desktop",
|
||||||
"version": "0.1.0",
|
"version": "1.0.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "kestrove-desktop",
|
"name": "kestrove-desktop",
|
||||||
"version": "0.1.0",
|
"version": "1.0.0",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@tauri-apps/api": "2.12.3"
|
"@tauri-apps/api": "2.12.3"
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "kestrove-desktop",
|
"name": "kestrove-desktop",
|
||||||
"version": "0.1.0",
|
"version": "1.0.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|||||||
Executable
+30
@@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Creates (or reuses) the Gitea release for this version and uploads the desktop bundles to it.
|
||||||
|
#
|
||||||
|
# GITEA_TOKEN=… scripts/gitea-release.sh [dir-with-files] (default ../release/desktop)
|
||||||
|
#
|
||||||
|
# GITEA_TOKEN: a Gitea access token with the write:repository scope (Settings → Applications). The tag
|
||||||
|
# v<version> must already be pushed. Files: *.AppImage, *.deb, *-setup.exe, kestrove-nmh-*, SHA256SUMS.
|
||||||
|
set -eu
|
||||||
|
cd "$(dirname "$0")/.."
|
||||||
|
: "${GITEA_TOKEN:?set GITEA_TOKEN (Gitea → Settings → Applications → token with write:repository)}"
|
||||||
|
API=${GITEA_API:-https://gitea.samialabri.com/api/v1}
|
||||||
|
REPO=${GITEA_REPO:-kestrove/kestrove-desktop}
|
||||||
|
DIR=${1:-../release/desktop}
|
||||||
|
V=$(node -p 'require("./package.json").version')
|
||||||
|
TAG="v$V"
|
||||||
|
AUTH="Authorization: token $GITEA_TOKEN"
|
||||||
|
|
||||||
|
(cd "$DIR" && rm -f SHA256SUMS && shasum -a 256 -- *.AppImage *.deb *-setup.exe kestrove-nmh-* 2>/dev/null > SHA256SUMS; cat SHA256SUMS)
|
||||||
|
|
||||||
|
ID=$(curl -fsS -H "$AUTH" "$API/repos/$REPO/releases/tags/$TAG" 2>/dev/null | node -e 'let s="";process.stdin.on("data",d=>s+=d).on("end",()=>{try{console.log(JSON.parse(s).id||"")}catch{console.log("")}})')
|
||||||
|
if [ -z "$ID" ]; then
|
||||||
|
BODY=$(node -e 'console.log(JSON.stringify({tag_name: process.argv[1], name: "Kestrove " + process.argv[2], body: "Kestrove desktop " + process.argv[2] + " for Windows and Linux. On a Mac, use the Kestrove app from the Mac App Store instead.\n\nVerify downloads with SHA256SUMS.", draft: false, prerelease: false}))' "$TAG" "$V")
|
||||||
|
ID=$(curl -fsS -X POST -H "$AUTH" -H "Content-Type: application/json" -d "$BODY" "$API/repos/$REPO/releases" | node -e 'let s="";process.stdin.on("data",d=>s+=d).on("end",()=>console.log(JSON.parse(s).id))')
|
||||||
|
fi
|
||||||
|
for f in "$DIR"/*.AppImage "$DIR"/*.deb "$DIR"/*-setup.exe "$DIR"/kestrove-nmh-* "$DIR"/SHA256SUMS; do
|
||||||
|
[ -f "$f" ] || continue
|
||||||
|
echo "uploading $(basename "$f")"
|
||||||
|
curl -fsS -X POST -H "$AUTH" -F "attachment=@$f" "$API/repos/$REPO/releases/$ID/assets?name=$(basename "$f")" >/dev/null
|
||||||
|
done
|
||||||
|
echo "Release: ${API%/api/v1}/$REPO/releases/tag/$TAG"
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# Linux release bundles (AppImage + .deb) for the Gitea release, built in a clean Debian 12 container:
|
||||||
|
# docker buildx build --platform linux/amd64 -f kestrove-desktop/scripts/linux.Dockerfile \
|
||||||
|
# --target out -o type=local,dest=release/desktop ..
|
||||||
|
# Build context = the folder holding kestrove-core and kestrove-desktop. Debian 12's glibc (2.36) keeps
|
||||||
|
# the AppImage runnable on most current distributions.
|
||||||
|
FROM rust:1-bookworm AS build
|
||||||
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev libssl-dev libxdo-dev \
|
||||||
|
libsecret-1-dev file patchelf xdg-utils curl ca-certificates \
|
||||||
|
&& curl -fsSL https://deb.nodesource.com/setup_22.x | bash - && apt-get install -y nodejs \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
WORKDIR /src
|
||||||
|
COPY kestrove-core kestrove-core
|
||||||
|
COPY kestrove-desktop kestrove-desktop
|
||||||
|
WORKDIR /src/kestrove-desktop
|
||||||
|
RUN npm ci --no-audit --no-fund && npm run tauri build -- --bundles appimage,deb \
|
||||||
|
&& cd src-tauri && cargo build --release --bin kestrove-nmh
|
||||||
|
|
||||||
|
FROM scratch AS out
|
||||||
|
COPY --from=build /src/kestrove-desktop/src-tauri/target/release/bundle/appimage/*.AppImage /
|
||||||
|
COPY --from=build /src/kestrove-desktop/src-tauri/target/release/bundle/deb/*.deb /
|
||||||
|
COPY --from=build /src/kestrove-desktop/src-tauri/target/release/kestrove-nmh /kestrove-nmh-linux-x86_64
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
**/target
|
||||||
|
**/node_modules
|
||||||
|
**/dist
|
||||||
|
**/.git
|
||||||
|
kestrove-core/fuzz
|
||||||
Generated
+10
-10
@@ -3012,7 +3012,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kestrove-desktop"
|
name = "kestrove-desktop"
|
||||||
version = "0.1.0"
|
version = "1.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arboard",
|
"arboard",
|
||||||
"base64 0.22.1",
|
"base64 0.22.1",
|
||||||
@@ -3086,7 +3086,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kv-crypto"
|
name = "kv-crypto"
|
||||||
version = "0.1.0"
|
version = "1.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"argon2",
|
"argon2",
|
||||||
"chacha20poly1305",
|
"chacha20poly1305",
|
||||||
@@ -3104,7 +3104,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kv-ffi"
|
name = "kv-ffi"
|
||||||
version = "0.1.0"
|
version = "1.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aes-gcm",
|
"aes-gcm",
|
||||||
"base64 0.22.1",
|
"base64 0.22.1",
|
||||||
@@ -3131,7 +3131,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kv-import"
|
name = "kv-import"
|
||||||
version = "0.1.0"
|
version = "1.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"argon2",
|
"argon2",
|
||||||
"chacha20poly1305",
|
"chacha20poly1305",
|
||||||
@@ -3151,7 +3151,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kv-ipc"
|
name = "kv-ipc"
|
||||||
version = "0.1.0"
|
version = "1.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
@@ -3160,7 +3160,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kv-model"
|
name = "kv-model"
|
||||||
version = "0.1.0"
|
version = "1.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"data-encoding",
|
"data-encoding",
|
||||||
"hmac 0.12.1",
|
"hmac 0.12.1",
|
||||||
@@ -3179,7 +3179,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kv-proto"
|
name = "kv-proto"
|
||||||
version = "0.1.0"
|
version = "1.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64 0.22.1",
|
"base64 0.22.1",
|
||||||
"opaque-ke",
|
"opaque-ke",
|
||||||
@@ -3190,7 +3190,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kv-store"
|
name = "kv-store"
|
||||||
version = "0.1.0"
|
version = "1.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"kv-proto",
|
"kv-proto",
|
||||||
"rusqlite",
|
"rusqlite",
|
||||||
@@ -3201,7 +3201,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kv-sync"
|
name = "kv-sync"
|
||||||
version = "0.1.0"
|
version = "1.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64 0.22.1",
|
"base64 0.22.1",
|
||||||
"blake3",
|
"blake3",
|
||||||
@@ -5581,7 +5581,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
|
checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"fastrand",
|
"fastrand",
|
||||||
"getrandom 0.4.3",
|
"getrandom 0.3.4",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"rustix",
|
"rustix",
|
||||||
"windows-sys 0.61.2",
|
"windows-sys 0.61.2",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "kestrove-desktop"
|
name = "kestrove-desktop"
|
||||||
version = "0.1.0"
|
version = "1.0.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = "1.82"
|
rust-version = "1.82"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://schema.tauri.app/config/2",
|
"$schema": "https://schema.tauri.app/config/2",
|
||||||
"productName": "Kestrove",
|
"productName": "Kestrove",
|
||||||
"version": "0.1.0",
|
"version": "1.0.0",
|
||||||
"identifier": "app.kestrove.desktop",
|
"identifier": "app.kestrove.desktop",
|
||||||
"build": {
|
"build": {
|
||||||
"beforeDevCommand": "npm run dev",
|
"beforeDevCommand": "npm run dev",
|
||||||
|
|||||||
Reference in New Issue
Block a user