fix(ci): 兼容精简 runner(Alpine)环境
- checkout 改为原生 git 浅克隆(action-checkout 依赖 node,Alpine runner 无) - 发布 release 改用 grep/sed 解析 JSON(不依赖 python3) - 小程序密钥 PEM 规整改用 node 实现 - 通知步骤增加容错(失败不阻断主流程)
This commit is contained in:
@@ -13,9 +13,14 @@ jobs:
|
||||
# 标准标签:hk / bt-runner 均带 ubuntu-latest,任一空闲 runner 接单
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: https://gitea.neatcn.com/gouki/action-checkout@v4
|
||||
with:
|
||||
fetch-depth: 20
|
||||
# hk 等精简 runner(Alpine)无 node,无法跑 action-checkout;直接用 git 浅克隆
|
||||
- name: Checkout
|
||||
run: |
|
||||
git init -q .
|
||||
git remote add origin "$GITEA_SERVER_URL/$GITEA_REPOSITORY"
|
||||
git fetch -q --depth 20 origin "$GITEA_REF_NAME"
|
||||
git checkout -q FETCH_HEAD
|
||||
git log --oneline -3
|
||||
|
||||
- name: Prepare Go toolchain
|
||||
run: |
|
||||
@@ -107,15 +112,16 @@ jobs:
|
||||
# Gitea Actions 内建的 job 令牌(仓库写权限)
|
||||
AUTH="Authorization: token ${GITEA_TOKEN}"
|
||||
|
||||
# 幂等:同 tag 已存在则先删除(重跑场景)
|
||||
EXISTING=$(curl -sS -H "$AUTH" "$API/releases/tags/$TAG" | python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('id',''))" 2>/dev/null || true)
|
||||
if [ -n "$EXISTING" ] && [ "$EXISTING" != "None" ]; then
|
||||
# 幂等:同 tag 已存在则先删除(重跑场景);不依赖 python3,纯 grep/sed 解析
|
||||
EXISTING=$(curl -sS -H "$AUTH" "$API/releases/tags/$TAG" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2 || true)
|
||||
if [ -n "$EXISTING" ]; then
|
||||
curl -sS -X DELETE -H "$AUTH" "$API/releases/$EXISTING" -o /dev/null -w "删除旧 release: HTTP %{http_code}\n"
|
||||
fi
|
||||
|
||||
RELEASE_ID=$(curl -sS -X POST -H "$AUTH" -H "Content-Type: application/json" \
|
||||
-d "{\"tag_name\":\"$TAG\",\"name\":\"server $VERSION\",\"target_commitish\":\"main\",\"body\":\"CI 自动构建,commit ${GITEA_SHA:0:7}。doc79 由 deploy-watch.sh 拉取本附件完成部署。\"}" \
|
||||
"$API/releases" | python3 -c "import json,sys; print(json.load(sys.stdin)['id'])")
|
||||
"$API/releases" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
|
||||
test -n "$RELEASE_ID"
|
||||
echo "Release created: id=$RELEASE_ID tag=$TAG"
|
||||
|
||||
curl -sS -X POST -H "$AUTH" \
|
||||
@@ -135,7 +141,7 @@ jobs:
|
||||
VERSION="1.0.${GITEA_RUN_NUMBER}"
|
||||
bash .gitea/scripts/notify.sh success \
|
||||
"后端构建发布成功" \
|
||||
"版本: v${VERSION}\n产物: releases/tag/server-v${VERSION}\ndoc79 将自动拉取部署"
|
||||
"版本: v${VERSION}\n产物: releases/tag/server-v${VERSION}\ndoc79 将自动拉取部署" || echo "通知发送失败,不影响主流程"
|
||||
|
||||
- name: Send failure notification
|
||||
if: failure()
|
||||
@@ -146,7 +152,7 @@ jobs:
|
||||
run: |
|
||||
bash .gitea/scripts/notify.sh failure \
|
||||
"后端构建失败" \
|
||||
"请检查 Actions 日志了解失败原因"
|
||||
"请检查 Actions 日志了解失败原因" || echo "通知发送失败"
|
||||
|
||||
- name: Cleanup
|
||||
if: always()
|
||||
|
||||
Reference in New Issue
Block a user