Add autostart status and release builds
This commit is contained in:
@@ -2,19 +2,27 @@
|
||||
set -euo pipefail
|
||||
|
||||
# Optional first argument mirrors build-linux.sh. The Docker build still writes
|
||||
# the final artifact into the local dist/ tree, not into the container.
|
||||
output="${1:-dist/linux/pysentry}"
|
||||
# the final artifact into the local dist/ tree, not into the container. The
|
||||
# default includes the application version and target platform.
|
||||
version="$(sed -n 's/^var Version = "\(.*\)"/\1/p' src/core/version.go)"
|
||||
version="${version:-0.0.0-dev}"
|
||||
output="${1:-dist/linux/pysentry-${version}-linux-amd64}"
|
||||
|
||||
# Dockerfile contains the native packages required by Fyne. Keeping that
|
||||
# environment in Docker makes Linux builds repeatable from Windows hosts and CI.
|
||||
docker build -f Dockerfile -t pysentry-linux-builder .
|
||||
docker build -f Dockerfile -t gitea.mixdep.ru/mix/pysentry-builder .
|
||||
|
||||
# The image build produces /out/linux and /out/windows. This helper copies only
|
||||
# the Linux binary for compatibility with the older Linux-only workflow; use
|
||||
# build-release-linux.sh when both platform artifacts are needed.
|
||||
container_id="$(docker create gitea.mixdep.ru/mix/pysentry-builder)"
|
||||
cleanup() {
|
||||
docker rm "$container_id" >/dev/null
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
# The image build produces /out/pysentry. A temporary container is used only as a
|
||||
# convenient way to copy that file out; the app is not run inside the container.
|
||||
container_id="$(docker create pysentry-linux-builder)"
|
||||
mkdir -p "$(dirname "$output")"
|
||||
docker cp "${container_id}:/out/pysentry" "$output"
|
||||
docker rm "$container_id" >/dev/null
|
||||
docker cp "${container_id}:/out/linux/pysentry-${version}-linux-amd64" "$output"
|
||||
|
||||
# Icons are embedded in the Go binary, so there is no assets directory to copy
|
||||
# after extracting the Linux executable.
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Optional first argument lets a developer or CI job choose the output path.
|
||||
# dist/linux/pysentry is the default so generated binaries stay outside src/.
|
||||
output="${1:-dist/linux/pysentry}"
|
||||
# Optional first argument lets a developer or CI job choose the output path. The
|
||||
# default includes the application version and target platform.
|
||||
version="$(sed -n 's/^var Version = "\(.*\)"/\1/p' src/core/version.go)"
|
||||
version="${version:-0.0.0-dev}"
|
||||
output="${1:-dist/linux/pysentry-${version}-linux-amd64}"
|
||||
mkdir -p "$(dirname "$output")"
|
||||
|
||||
# Fyne needs CGO for its native desktop backend. The script pins the target to
|
||||
@@ -15,7 +17,7 @@ export GOARCH=amd64
|
||||
|
||||
# -trimpath removes local machine paths from debug/build metadata. -s -w strips
|
||||
# symbol/debug tables to keep the desktop binary smaller.
|
||||
go build -trimpath -ldflags "-s -w" -o "$output" ./cmd/pysentry
|
||||
go build -trimpath -ldflags "-s -w -X github.com/pysentry/pysentry/src/core.Version=${version}" -o "$output" ./cmd/pysentry
|
||||
|
||||
# The application icon is embedded by Go, so the Linux build does not need a
|
||||
# sidecar assets directory beside the executable.
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Build all release artifacts from a Linux host or CI runner. The Docker image
|
||||
# contains Linux/Fyne dependencies for amd64 and arm64, plus the MinGW
|
||||
# cross-compiler used for the Windows GUI executable.
|
||||
tag="gitea.mixdep.ru/mix/pysentry-builder"
|
||||
|
||||
docker build -f Dockerfile -t "$tag" .
|
||||
|
||||
container_id="$(docker create "$tag")"
|
||||
cleanup() {
|
||||
docker rm "$container_id" >/dev/null
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
mkdir -p dist/linux dist/windows
|
||||
docker cp "${container_id}:/out/linux/." dist/linux
|
||||
docker cp "${container_id}:/out/windows/." dist/windows
|
||||
|
||||
echo "Built release artifacts:"
|
||||
find dist/linux dist/windows -maxdepth 1 -type f -print
|
||||
@@ -1,11 +1,20 @@
|
||||
@echo off
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
REM Double-clicking a .bat file can start it with an arbitrary working
|
||||
REM directory. Move to the repository root (the parent of scripts\) before using
|
||||
REM relative paths such as .\cmd\pysentry and packaging\windows\pysentry.rc.
|
||||
cd /d "%~dp0\.."
|
||||
|
||||
for /f "tokens=4" %%V in ('findstr /C:"var Version" src\core\version.go') do set "VERSION=%%~V"
|
||||
if "%VERSION%"=="" set "VERSION=0.0.0-dev"
|
||||
set "VERSION=%VERSION:"=%"
|
||||
|
||||
REM Optional first argument allows CI or a developer to choose another output
|
||||
REM path. The default keeps all generated binaries under dist\ so the source tree
|
||||
REM stays clean and the old bin\ folder is no longer needed.
|
||||
set "OUTPUT=%~1"
|
||||
if "%OUTPUT%"=="" set "OUTPUT=dist\windows\pysentry.exe"
|
||||
if "%OUTPUT%"=="" set "OUTPUT=dist\windows\pysentry-%VERSION%-windows-amd64.exe"
|
||||
|
||||
REM Prefer the standard Go installer path on Windows, but fall back to PATH for
|
||||
REM machines where Go was installed by another package manager.
|
||||
@@ -38,7 +47,7 @@ if %ERRORLEVEL%==0 (
|
||||
REM -trimpath removes local machine paths from the binary, -s -w reduce binary
|
||||
REM size, and -H=windowsgui prevents a separate console window from opening when
|
||||
REM the GUI app starts from Explorer or a shortcut.
|
||||
"%GOEXE%" build -trimpath -ldflags "-s -w -H=windowsgui" -o "%OUTPUT%" .\cmd\pysentry
|
||||
"%GOEXE%" build -trimpath -ldflags "-s -w -H=windowsgui -X github.com/pysentry/pysentry/src/core.Version=%VERSION%" -o "%OUTPUT%" .\cmd\pysentry
|
||||
if errorlevel 1 exit /b 1
|
||||
|
||||
REM Icons are embedded into the executable, so no assets directory is copied next
|
||||
|
||||
Reference in New Issue
Block a user