f1950ffb6f
Deploy Server / deploy-server (push) Failing after 13m45s
- lib-forgejo/release-server: 5 处 read -r X < file 在 set -e 下遇无结尾换行的
EOF 会返回 1 静默中止(ver_from_tag printf 无换行、curl -w http_code 无换行);
逐处加 || true 容错(值已赋)。
- lib-forgejo: 空数组 ${FORGEJO_CURL_TLS[@]} 在 set -u 下老 bash 报 unbound;
改 empty-safe 展开(可移植 + 本地可测)。
- deploy-server.yml: Setup Go 加 sha256 校验(供应链完整性, 防镜像篡改注入工具链)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
37 lines
1.4 KiB
Bash
37 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
# release-server.sh — ensure the Forgejo release for a server-v* tag exists
|
|
# and upload the three compiled binaries as release assets. Assumes
|
|
# compile-backend.sh has already produced
|
|
# server/out/{pangolin-server,pangolin-agent,pangolin-migrate}.
|
|
#
|
|
# Usage: scripts/ci/release-server.sh <tag> (e.g. server-v1.2.3)
|
|
# Requires env: FORGEJO_URL, FORGEJO_TOKEN (see lib-forgejo.sh).
|
|
set -euo pipefail
|
|
|
|
TAG="${1:?usage: release-server.sh <tag>}"
|
|
|
|
# shellcheck source=scripts/ci/_env.sh
|
|
. scripts/ci/_env.sh
|
|
# shellcheck source=scripts/ci/lib-forgejo.sh
|
|
. scripts/ci/lib-forgejo.sh
|
|
|
|
# No command substitution ($()): ver_from_tag prints to stdout, captured via
|
|
# a temp file + `read`, same no-substitution pattern as lib-forgejo.sh.
|
|
ver_file="/tmp/release_server_ver.$$"
|
|
ver_from_tag server "$TAG" > "$ver_file"
|
|
VER=""
|
|
# `|| true`: ver_from_tag 用 printf '%s'(无结尾换行),read 到无换行的 EOF 会返回 1
|
|
# (但 VER 已正确赋值)——set -e 下会静默退出。容错 read 的这个退出码,不掩盖真错。
|
|
read -r VER < "$ver_file" || true
|
|
rm -f "$ver_file"
|
|
|
|
echo "==> release-server: tag=${TAG} ver=${VER}"
|
|
|
|
forgejo_release_ensure "$TAG" "server ${VER}"
|
|
|
|
forgejo_upload_asset "$TAG" server/out/pangolin-server
|
|
forgejo_upload_asset "$TAG" server/out/pangolin-agent
|
|
forgejo_upload_asset "$TAG" server/out/pangolin-migrate
|
|
|
|
echo "==> release-server: done"
|