该 runner(Forgejo 系 v3.3.2)未导出 GITEA_REF_NAME 等别名环境变量
(checkout 因空 pathspec 失败)。改为 job 级 env 显式表达式注入:
TAG=${{ github.ref_name }},token 按 GITHUB_TOKEN/GITEA_TOKEN/FORGEJO_TOKEN 依次回退。
This commit is contained in:
@@ -28,12 +28,17 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container:
|
container:
|
||||||
image: node:24-bookworm
|
image: node:24-bookworm
|
||||||
|
env:
|
||||||
|
# 这台 runner 只保证 GITHUB_* 兼容层(GITEA_REF_NAME 等别名不可靠),
|
||||||
|
# 一律经表达式显式注入,不直接读 GITEA_* 环境变量
|
||||||
|
TAG: ${{ github.ref_name }}
|
||||||
|
TOKEN: ${{ secrets.GITHUB_TOKEN || secrets.GITEA_TOKEN || secrets.FORGEJO_TOKEN }}
|
||||||
steps:
|
steps:
|
||||||
# 完整历史:供 git log 生成上一个 tag 以来的变更日志
|
# 完整历史:供 git log 生成上一个 tag 以来的变更日志
|
||||||
- name: 检出代码
|
- name: 检出代码
|
||||||
run: |
|
run: |
|
||||||
git clone "$SITE/$REPO.git" .
|
git clone "$SITE/$REPO.git" .
|
||||||
git checkout --detach "$GITEA_REF_NAME"
|
git checkout --detach "$TAG"
|
||||||
git log --oneline -1
|
git log --oneline -1
|
||||||
|
|
||||||
- name: 安装 Go(版本取自 go.mod)
|
- name: 安装 Go(版本取自 go.mod)
|
||||||
@@ -56,7 +61,7 @@ jobs:
|
|||||||
export PATH=/usr/local/go/bin:$PATH
|
export PATH=/usr/local/go/bin:$PATH
|
||||||
# 模块代理双层回退:官方代理不可达时走 goproxy.cn
|
# 模块代理双层回退:官方代理不可达时走 goproxy.cn
|
||||||
export GOPROXY=https://proxy.golang.org,https://goproxy.cn,direct
|
export GOPROXY=https://proxy.golang.org,https://goproxy.cn,direct
|
||||||
scripts/build-release.sh "${GITEA_REF_NAME}"
|
scripts/build-release.sh "$TAG"
|
||||||
|
|
||||||
# 首个 tag 无上一版本,变更日志段自动省略
|
# 首个 tag 无上一版本,变更日志段自动省略
|
||||||
- name: 生成发布说明
|
- name: 生成发布说明
|
||||||
@@ -65,7 +70,7 @@ jobs:
|
|||||||
prev=$(git describe --tags --abbrev=0 "HEAD^" 2>/dev/null || true)
|
prev=$(git describe --tags --abbrev=0 "HEAD^" 2>/dev/null || true)
|
||||||
short=$(git rev-parse --short HEAD)
|
short=$(git rev-parse --short HEAD)
|
||||||
{
|
{
|
||||||
echo "## pn ${GITEA_REF_NAME}"
|
echo "## pn ${TAG}"
|
||||||
echo
|
echo
|
||||||
echo "- commit: \`$short\`"
|
echo "- commit: \`$short\`"
|
||||||
echo "- 构建时间: $(date -u '+%Y-%m-%dT%H:%M:%SZ')"
|
echo "- 构建时间: $(date -u '+%Y-%m-%dT%H:%M:%SZ')"
|
||||||
@@ -79,20 +84,18 @@ jobs:
|
|||||||
cat release-notes.md
|
cat release-notes.md
|
||||||
|
|
||||||
- name: 创建 Release 并上传产物
|
- name: 创建 Release 并上传产物
|
||||||
env:
|
|
||||||
TOKEN: ${{ secrets.GITEA_TOKEN || secrets.GITHUB_TOKEN }}
|
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
API="$SITE/api/v1/repos/$REPO"
|
API="$SITE/api/v1/repos/$REPO"
|
||||||
AUTH="Authorization: token ${TOKEN}"
|
AUTH="Authorization: token ${TOKEN}"
|
||||||
REQ=$(node -e 'const fs=require("fs");process.stdout.write(JSON.stringify({tag_name:process.env.GITEA_REF_NAME,name:"pn "+process.env.GITEA_REF_NAME,body:fs.readFileSync("release-notes.md","utf8")}))')
|
REQ=$(node -e 'const fs=require("fs");process.stdout.write(JSON.stringify({tag_name:process.env.TAG,name:"pn "+process.env.TAG,body:fs.readFileSync("release-notes.md","utf8")}))')
|
||||||
# 同 tag release 已存在(如重跑)时回退为查询
|
# 同 tag release 已存在(如重跑)时回退为查询
|
||||||
REL=$(curl -fsS -X POST "$API/releases" -H "$AUTH" -H 'Content-Type: application/json' -d "$REQ") \
|
REL=$(curl -fsS -X POST "$API/releases" -H "$AUTH" -H 'Content-Type: application/json' -d "$REQ") \
|
||||||
|| REL=$(curl -fsS "$API/releases/tags/${GITEA_REF_NAME}" -H "$AUTH")
|
|| REL=$(curl -fsS "$API/releases/tags/${TAG}" -H "$AUTH")
|
||||||
RID=$(node -e 'let s="";process.stdin.on("data",d=>s+=d);process.stdin.on("end",()=>process.stdout.write(String(JSON.parse(s).id))' <<<"$REL")
|
RID=$(node -e 'let s="";process.stdin.on("data",d=>s+=d);process.stdin.on("end",()=>process.stdout.write(String(JSON.parse(s).id))' <<<"$REL")
|
||||||
echo "==> release id=$RID"
|
echo "==> release id=$RID"
|
||||||
for f in dist/*; do
|
for f in dist/*; do
|
||||||
echo "==> 上传 $(basename "$f")"
|
echo "==> 上传 $(basename "$f")"
|
||||||
curl -fsS -X POST "$API/releases/$RID/assets?name=$(basename "$f")" -H "$AUTH" -F "attachment=@$f" >/dev/null
|
curl -fsS -X POST "$API/releases/$RID/assets?name=$(basename "$f")" -H "$AUTH" -F "attachment=@$f" >/dev/null
|
||||||
done
|
done
|
||||||
echo "==> 完成:$SITE/$REPO/releases/tag/${GITEA_REF_NAME}"
|
echo "==> 完成:$SITE/$REPO/releases/tag/${TAG}"
|
||||||
|
|||||||
Reference in New Issue
Block a user