Add read-only task context inheritance, ordered task-level LLM failover, live Worker controls, cascading task cleanup, FIFO task concurrency, cancellation diagnostics, UI updates, tests, build script, and changelog.
66 lines
2.3 KiB
Bash
Executable File
66 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# ARTEX 单二进制构建脚本:静态导出前端并嵌入 Go 二进制。
|
||
#
|
||
# 可选环境变量:
|
||
# ARTEX_TARGET_OS=linux 目标系统,默认当前系统
|
||
# ARTEX_TARGET_ARCH=amd64 目标架构,默认当前架构
|
||
# ARTEX_BUILD_VERSION=v0.3.0 构建版本,默认取 git describe
|
||
# ARTEX_OUTPUT=/path/to/artex 输出路径
|
||
# ARTEX_SKIP_NPM_CI=1 跳过 npm ci,复用现有依赖
|
||
# ARTEX_GOSUMDB=sum.golang.org Go checksum database
|
||
set -euo pipefail
|
||
|
||
cd "$(cd "$(dirname "$0")" && pwd)"
|
||
|
||
info() { printf '\033[36m[*]\033[0m %s\n' "$*"; }
|
||
ok() { printf '\033[32m[+]\033[0m %s\n' "$*"; }
|
||
die() { printf '\033[31m[x]\033[0m %s\n' "$*" >&2; exit 1; }
|
||
|
||
command -v go >/dev/null 2>&1 || die "未检测到 Go(项目需要 Go 1.26 或更高版本)"
|
||
command -v npm >/dev/null 2>&1 || die "未检测到 npm(前端静态构建需要 Node.js/npm)"
|
||
command -v rsync >/dev/null 2>&1 || die "未检测到 rsync"
|
||
|
||
ARTEX_GOSUMDB="${ARTEX_GOSUMDB:-sum.golang.org}"
|
||
ARTEX_TARGET_OS="${ARTEX_TARGET_OS:-$(GOSUMDB="$ARTEX_GOSUMDB" go env GOOS)}"
|
||
ARTEX_TARGET_ARCH="${ARTEX_TARGET_ARCH:-$(GOSUMDB="$ARTEX_GOSUMDB" go env GOARCH)}"
|
||
|
||
if [ -z "${ARTEX_BUILD_VERSION:-}" ]; then
|
||
if command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
||
ARTEX_BUILD_VERSION="$(git describe --tags --always --dirty)"
|
||
else
|
||
ARTEX_BUILD_VERSION="dev"
|
||
fi
|
||
fi
|
||
|
||
ARTEX_BINARY_NAME="artex"
|
||
[ "$ARTEX_TARGET_OS" = "windows" ] && ARTEX_BINARY_NAME="artex.exe"
|
||
ARTEX_OUTPUT="${ARTEX_OUTPUT:-dist/artex-${ARTEX_TARGET_OS}-${ARTEX_TARGET_ARCH}/${ARTEX_BINARY_NAME}}"
|
||
|
||
info "构建前端静态资源"
|
||
if [ "${ARTEX_SKIP_NPM_CI:-0}" != "1" ]; then
|
||
(cd web && npm ci)
|
||
fi
|
||
(cd web && npm run build:static)
|
||
|
||
info "同步前端资源到 server/webui/dist"
|
||
mkdir -p server/webui/dist
|
||
rsync -a --delete web/out/ server/webui/dist/
|
||
|
||
info "编译 ${ARTEX_TARGET_OS}/${ARTEX_TARGET_ARCH},版本 ${ARTEX_BUILD_VERSION}"
|
||
mkdir -p "$(dirname "$ARTEX_OUTPUT")"
|
||
GOSUMDB="$ARTEX_GOSUMDB" \
|
||
CGO_ENABLED=0 \
|
||
GOOS="$ARTEX_TARGET_OS" \
|
||
GOARCH="$ARTEX_TARGET_ARCH" \
|
||
go build \
|
||
-tags embedui \
|
||
-trimpath \
|
||
-ldflags "-s -w -X main.version=${ARTEX_BUILD_VERSION}" \
|
||
-o "$ARTEX_OUTPUT" \
|
||
./cmd/artex
|
||
|
||
ok "编译完成:$ARTEX_OUTPUT"
|
||
if command -v file >/dev/null 2>&1; then
|
||
file "$ARTEX_OUTPUT"
|
||
fi
|