mirror of
https://github.com/Quad4-Software/Reticulum-Go
synced 2026-08-29 23:48:44 -04:00
214 lines
7.3 KiB
YAML
214 lines
7.3 KiB
YAML
version: '3'
|
|
|
|
vars:
|
|
LINUX_ARCHES: [amd64, arm64, arm, 386, riscv64, ppc64le, ppc64, mips, mipsle, mips64, mips64le, s390x]
|
|
WINDOWS_ARCHES: [amd64, arm64, 386]
|
|
DARWIN_ARCHES: [amd64, arm64]
|
|
FREEBSD_ARCHES: [amd64, 386, arm64, arm, riscv64]
|
|
OPENBSD_ARCHES: [amd64, 386, arm64, arm, ppc64, riscv64]
|
|
NETBSD_ARCHES: [amd64, 386, arm64, arm]
|
|
DRAGONFLY_ARCHES: [amd64]
|
|
SOLARIS_ARCHES: [amd64]
|
|
ILLUMOS_ARCHES: [amd64]
|
|
AIX_ARCHES: [ppc64]
|
|
ANDROID_ARCHES: [arm64]
|
|
# Prefer CLI/env VERSION (e.g. task build VERSION=v1.0.0). Do not use a
|
|
# dynamic sh: VERSION here: Task would export it and override CI env.
|
|
GIT_DESCRIBE:
|
|
sh: git describe --tags --always --dirty 2>/dev/null || echo dev
|
|
|
|
tasks:
|
|
build:
|
|
desc: Build release binary (no debug symbols, static)
|
|
env:
|
|
CGO_ENABLED: '0'
|
|
cmds:
|
|
- mkdir -p {{.BUILD_DIR}}
|
|
- |
|
|
V="${VERSION:-{{.VERSION}}}"
|
|
if [ -z "$V" ]; then
|
|
V="{{.GIT_DESCRIBE}}"
|
|
fi
|
|
{{.GOCMD}} build -ldflags="-s -w -X main.defaultVersion=${V}" -o {{.BUILD_DIR}}/{{.BINARY_NAME}} {{.MAIN_PACKAGE}}
|
|
|
|
build-utils:
|
|
desc: Alias for build (tools are subcommands of reticulum-go)
|
|
cmds:
|
|
- task: build
|
|
|
|
debug:
|
|
desc: Build debug binary
|
|
cmds:
|
|
- mkdir -p {{.BUILD_DIR}}
|
|
- '{{.GOCMD}} build -o {{.BUILD_DIR}}/{{.BINARY_NAME}} {{.MAIN_PACKAGE}}'
|
|
|
|
build-experimental:
|
|
desc: Build binary with experimental features (GOEXPERIMENT=greenteagc)
|
|
env:
|
|
GOEXPERIMENT: greenteagc
|
|
cmds:
|
|
- mkdir -p {{.BUILD_DIR}}
|
|
- '{{.GOCMD}} build -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-experimental {{.MAIN_PACKAGE}}'
|
|
|
|
experimental:
|
|
desc: Alias for build-experimental
|
|
cmds:
|
|
- task: build-experimental
|
|
|
|
release:
|
|
desc: Build stripped static binary for release (alias for build)
|
|
cmds:
|
|
- task: build
|
|
|
|
build-target:
|
|
internal: true
|
|
requires:
|
|
vars: [GOOS, GOARCH]
|
|
env:
|
|
CGO_ENABLED: '0'
|
|
cmds:
|
|
- mkdir -p {{.BUILD_DIR}}
|
|
- |
|
|
export GOOS="{{.GOOS}}" GOARCH="{{.GOARCH}}" VERSION="${VERSION:-{{.VERSION}}}" DEST_DIR="{{.BUILD_DIR}}"
|
|
if [ -z "${VERSION}" ]; then
|
|
VERSION="{{.GIT_DESCRIBE}}"
|
|
export VERSION
|
|
fi
|
|
sh scripts/ci/build-named-release-binary.sh
|
|
|
|
build-linux:
|
|
desc: Build for Linux (amd64 v1+v3, i686/386, arm64, arm, riscv64, ppc, mips, s390x)
|
|
cmds:
|
|
- DEST_DIR="{{.BUILD_DIR}}" VERSION="${VERSION:-{{.VERSION}}}" sh scripts/build-release-targets.sh linux
|
|
|
|
build-windows:
|
|
desc: Build for Windows (amd64, arm64, 386)
|
|
cmds:
|
|
- DEST_DIR="{{.BUILD_DIR}}" VERSION="${VERSION:-{{.VERSION}}}" sh scripts/build-release-targets.sh windows
|
|
|
|
build-windows-legacy:
|
|
desc: Build for Windows 7/8/8.1 using go-legacy-win7 (amd64, arm64)
|
|
env:
|
|
CGO_ENABLED: '0'
|
|
cmds:
|
|
- mkdir -p {{.BUILD_DIR}}
|
|
- |
|
|
V="${VERSION:-{{.VERSION}}}"
|
|
if [ -z "$V" ]; then
|
|
V="{{.GIT_DESCRIBE}}"
|
|
fi
|
|
GOOS=windows GOARCH=amd64 {{.GO_LEGACY_WIN7}} build -ldflags="-s -w -X main.defaultVersion=${V}" -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-windows-amd64-win7.exe {{.MAIN_PACKAGE}}
|
|
GOOS=windows GOARCH=arm64 {{.GO_LEGACY_WIN7}} build -ldflags="-s -w -X main.defaultVersion=${V}" -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-windows-arm64-win7.exe {{.MAIN_PACKAGE}}
|
|
|
|
build-windows-xp:
|
|
desc: Build for Windows XP/2003 using go-legacy-winxp (386, amd64)
|
|
env:
|
|
CGO_ENABLED: '0'
|
|
cmds:
|
|
- mkdir -p {{.BUILD_DIR}}
|
|
- |
|
|
V="${VERSION:-{{.VERSION}}}"
|
|
if [ -z "$V" ]; then
|
|
V="{{.GIT_DESCRIBE}}"
|
|
fi
|
|
GOOS=windows GOARCH=386 {{.GO_LEGACY_WINXP}} build -ldflags="-s -w -X main.defaultVersion=${V}" -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-windows-386-winxp.exe {{.MAIN_PACKAGE}}
|
|
GOOS=windows GOARCH=amd64 {{.GO_LEGACY_WINXP}} build -ldflags="-s -w -X main.defaultVersion=${V}" -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-windows-amd64-winxp.exe {{.MAIN_PACKAGE}}
|
|
|
|
build-darwin:
|
|
desc: Build for MacOS (amd64, arm64)
|
|
cmds:
|
|
- DEST_DIR="{{.BUILD_DIR}}" VERSION="${VERSION:-{{.VERSION}}}" sh scripts/build-release-targets.sh darwin
|
|
|
|
build-freebsd:
|
|
desc: Build for FreeBSD (amd64, 386, arm64, arm, riscv64)
|
|
cmds:
|
|
- DEST_DIR="{{.BUILD_DIR}}" VERSION="${VERSION:-{{.VERSION}}}" sh scripts/build-release-targets.sh freebsd
|
|
|
|
build-openbsd:
|
|
desc: Build for OpenBSD (amd64, 386, arm64, arm, ppc64, riscv64)
|
|
cmds:
|
|
- DEST_DIR="{{.BUILD_DIR}}" VERSION="${VERSION:-{{.VERSION}}}" sh scripts/build-release-targets.sh openbsd
|
|
|
|
build-netbsd:
|
|
desc: Build for NetBSD (amd64, 386, arm64, arm)
|
|
cmds:
|
|
- DEST_DIR="{{.BUILD_DIR}}" VERSION="${VERSION:-{{.VERSION}}}" sh scripts/build-release-targets.sh netbsd
|
|
|
|
build-dragonfly:
|
|
desc: Build for DragonFly BSD (amd64)
|
|
cmds:
|
|
- DEST_DIR="{{.BUILD_DIR}}" VERSION="${VERSION:-{{.VERSION}}}" sh scripts/build-release-targets.sh dragonfly
|
|
|
|
build-solaris:
|
|
desc: Build for Solaris (amd64)
|
|
cmds:
|
|
- DEST_DIR="{{.BUILD_DIR}}" VERSION="${VERSION:-{{.VERSION}}}" sh scripts/build-release-targets.sh solaris
|
|
|
|
build-illumos:
|
|
desc: Build for illumos (amd64)
|
|
cmds:
|
|
- DEST_DIR="{{.BUILD_DIR}}" VERSION="${VERSION:-{{.VERSION}}}" sh scripts/build-release-targets.sh illumos
|
|
|
|
build-aix:
|
|
desc: Build for AIX (ppc64)
|
|
cmds:
|
|
- DEST_DIR="{{.BUILD_DIR}}" VERSION="${VERSION:-{{.VERSION}}}" sh scripts/build-release-targets.sh aix
|
|
|
|
build-android:
|
|
desc: Build for Android (arm64, CGO_ENABLED=0)
|
|
cmds:
|
|
- DEST_DIR="{{.BUILD_DIR}}" VERSION="${VERSION:-{{.VERSION}}}" sh scripts/build-release-targets.sh android
|
|
|
|
build-all:
|
|
desc: Build for all platforms and architectures
|
|
cmds:
|
|
- DEST_DIR="{{.BUILD_DIR}}" VERSION="${VERSION:-{{.VERSION}}}" sh scripts/build-release-targets.sh
|
|
|
|
build-wasm:
|
|
desc: Build WebAssembly binary with standard Go compiler
|
|
env:
|
|
CGO_ENABLED: '0'
|
|
GOOS: js
|
|
GOARCH: wasm
|
|
cmds:
|
|
- mkdir -p {{.BUILD_DIR}}
|
|
- '{{.GOCMD}} build -ldflags="-s -w" -o {{.BUILD_DIR}}/{{.BINARY_NAME}}.wasm ./cmd/reticulum-wasm'
|
|
|
|
tinygo-build:
|
|
desc: Build binary with TinyGo compiler
|
|
cmds:
|
|
- mkdir -p {{.BUILD_DIR}}
|
|
- tinygo build -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-tinygo -size short {{.MAIN_PACKAGE}}
|
|
|
|
tinygo-wasm:
|
|
desc: Build WebAssembly binary with TinyGo compiler
|
|
cmds:
|
|
- mkdir -p {{.BUILD_DIR}}
|
|
- tinygo build -target wasm -o {{.BUILD_DIR}}/{{.BINARY_NAME}}.wasm ./cmd/reticulum-wasm
|
|
|
|
build-librns:
|
|
desc: Build librns shared library and C header (CGO required)
|
|
env:
|
|
CGO_ENABLED: '1'
|
|
cmds:
|
|
- mkdir -p {{.BUILD_DIR}}
|
|
- '{{.GOCMD}} build -buildmode=c-shared -o {{.BUILD_DIR}}/librns.so ./cmd/librns'
|
|
- cp include/rns.h {{.BUILD_DIR}}/rns.h
|
|
|
|
build-librns-targets:
|
|
desc: Cross-build librns for Linux, Android, and Windows (needs NDK and/or mingw/zig)
|
|
cmds:
|
|
- sh scripts/build-librns-targets.sh {{.CLI_ARGS}}
|
|
|
|
checksum:
|
|
desc: Generate SHA256 checksum for binary (uses BINARY_PATH env var if set, otherwise defaults to bin/reticulum-go)
|
|
cmds:
|
|
- |
|
|
BINARY_PATH="${BINARY_PATH:-{{.BUILD_DIR}}/{{.BINARY_NAME}}}"
|
|
if [ -f "$BINARY_PATH" ]; then
|
|
sha256sum "$BINARY_PATH" > "${BINARY_PATH}.sha256"
|
|
echo "Generated checksum: ${BINARY_PATH}.sha256"
|
|
else
|
|
echo "Error: Binary not found at $BINARY_PATH"
|
|
exit 1
|
|
fi
|