Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -14,7 +14,7 @@ if [ ! -f dist/jiu-server ] || [ ! -f dist/web.tar.gz ] || [ ! -f dist/configs.t
|
|||||||
echo "==> deploy: dist/ incomplete — downloading assets for ${TAG} from Forgejo"
|
echo "==> deploy: dist/ incomplete — downloading assets for ${TAG} from Forgejo"
|
||||||
mkdir -p dist
|
mkdir -p dist
|
||||||
|
|
||||||
curl -sf \
|
curl -f \
|
||||||
-H "Authorization: token ${FORGEJO_TOKEN}" \
|
-H "Authorization: token ${FORGEJO_TOKEN}" \
|
||||||
"${FORGEJO_URL}/api/v1/repos/${GITEA_REPOSITORY}/releases/tags/${TAG}" \
|
"${FORGEJO_URL}/api/v1/repos/${GITEA_REPOSITORY}/releases/tags/${TAG}" \
|
||||||
-o /tmp/release-info.json
|
-o /tmp/release-info.json
|
||||||
@@ -99,13 +99,13 @@ cp /tmp/version.yaml /opt/jiu/backend/config/version.yaml
|
|||||||
sudo systemctl start jiu
|
sudo systemctl start jiu
|
||||||
echo "Waiting for health check..."
|
echo "Waiting for health check..."
|
||||||
for i in $(seq 1 30); do
|
for i in $(seq 1 30); do
|
||||||
if curl -sf http://localhost:8080/health > /dev/null 2>&1; then
|
if curl -f http://localhost:8080/health > /dev/null 2>&1; then
|
||||||
echo "Health check passed"
|
echo "Health check passed"
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
sleep 2
|
sleep 2
|
||||||
done
|
done
|
||||||
curl -sf http://localhost:8080/health > /dev/null || { echo "Health check failed!"; exit 1; }
|
curl -f http://localhost:8080/health > /dev/null || { echo "Health check failed!"; exit 1; }
|
||||||
|
|
||||||
# Swap Flutter web app (atomic)
|
# Swap Flutter web app (atomic)
|
||||||
rm -rf /opt/jiu/web-old
|
rm -rf /opt/jiu/web-old
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ fi
|
|||||||
MSG="${ICON} 岩美 ${TAG} ${LABEL}
|
MSG="${ICON} 岩美 ${TAG} ${LABEL}
|
||||||
https://jiu.51yanmei.com"
|
https://jiu.51yanmei.com"
|
||||||
|
|
||||||
curl -sf -X POST "https://api.telegram.org/bot${TELEGRAM_TOKEN}/sendMessage" \
|
curl -f -X POST "https://api.telegram.org/bot${TELEGRAM_TOKEN}/sendMessage" \
|
||||||
-d "chat_id=${TELEGRAM_CHAT_ID}" \
|
-d "chat_id=${TELEGRAM_CHAT_ID}" \
|
||||||
--data-urlencode "text=${MSG}" \
|
--data-urlencode "text=${MSG}" \
|
||||||
> /dev/null
|
> /dev/null
|
||||||
|
|||||||
+24
-16
@@ -20,7 +20,8 @@ try:
|
|||||||
notes = []
|
notes = []
|
||||||
for line in lines[1:]:
|
for line in lines[1:]:
|
||||||
stripped = line.strip()
|
stripped = line.strip()
|
||||||
if stripped.startswith('#'):
|
# 只在遇到同级 ## 时停止,### 子标题保留
|
||||||
|
if stripped.startswith('## '):
|
||||||
break
|
break
|
||||||
if stripped:
|
if stripped:
|
||||||
notes.append(stripped)
|
notes.append(stripped)
|
||||||
@@ -82,30 +83,37 @@ print(json.dumps(body))
|
|||||||
PYEOF
|
PYEOF
|
||||||
)
|
)
|
||||||
|
|
||||||
RESP=$(curl -sf -X POST "${FORGEJO_URL}/api/v1/repos/${GITEA_REPOSITORY}/releases" \
|
HTTP_CODE=$(curl -w "%{http_code}" -o /tmp/release_resp.json \
|
||||||
|
-X POST "${FORGEJO_URL}/api/v1/repos/${GITEA_REPOSITORY}/releases" \
|
||||||
-H "Authorization: token ${FORGEJO_TOKEN}" \
|
-H "Authorization: token ${FORGEJO_TOKEN}" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d "{\"tag_name\":\"${TAG}\",\"name\":\"Release ${TAG}\",\"body\":${BODY},\"draft\":false,\"prerelease\":false}")
|
-d "{\"tag_name\":\"${TAG}\",\"name\":\"Release ${TAG}\",\"body\":${BODY},\"draft\":false,\"prerelease\":false}")
|
||||||
|
|
||||||
echo "==> release: API response: ${RESP}"
|
RESP=$(cat /tmp/release_resp.json)
|
||||||
|
echo "==> release: API response (HTTP ${HTTP_CODE}): ${RESP}"
|
||||||
|
|
||||||
|
if [ "$HTTP_CODE" -lt 200 ] || [ "$HTTP_CODE" -ge 300 ]; then
|
||||||
|
echo "==> release: FAILED — HTTP ${HTTP_CODE}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
RELEASE_ID=$(python3 -c "import sys,json; print(json.load(sys.stdin)['id'])" <<< "${RESP}")
|
RELEASE_ID=$(python3 -c "import sys,json; print(json.load(sys.stdin)['id'])" <<< "${RESP}")
|
||||||
echo "==> release: release_id=${RELEASE_ID}"
|
echo "==> release: release_id=${RELEASE_ID}"
|
||||||
|
|
||||||
# Upload assets
|
# Upload assets
|
||||||
curl -sf -X POST "${FORGEJO_URL}/api/v1/repos/${GITEA_REPOSITORY}/releases/${RELEASE_ID}/assets" \
|
upload_asset() {
|
||||||
-H "Authorization: token ${FORGEJO_TOKEN}" \
|
local file="$1"
|
||||||
-F "attachment=@dist/jiu-server"
|
local code
|
||||||
echo "==> release: uploaded jiu-server"
|
code=$(curl -w "%{http_code}" -o /tmp/upload_resp.json \
|
||||||
|
-X POST "${FORGEJO_URL}/api/v1/repos/${GITEA_REPOSITORY}/releases/${RELEASE_ID}/assets" \
|
||||||
|
-H "Authorization: token ${FORGEJO_TOKEN}" \
|
||||||
|
-F "attachment=@${file}")
|
||||||
|
echo "==> release: uploaded ${file} (HTTP ${code}): $(cat /tmp/upload_resp.json)"
|
||||||
|
if [ "$code" -lt 200 ] || [ "$code" -ge 300 ]; then exit 1; fi
|
||||||
|
}
|
||||||
|
|
||||||
curl -sf -X POST "${FORGEJO_URL}/api/v1/repos/${GITEA_REPOSITORY}/releases/${RELEASE_ID}/assets" \
|
upload_asset dist/jiu-server
|
||||||
-H "Authorization: token ${FORGEJO_TOKEN}" \
|
upload_asset dist/web.tar.gz
|
||||||
-F "attachment=@dist/web.tar.gz"
|
upload_asset dist/configs.tar.gz
|
||||||
echo "==> release: uploaded web.tar.gz"
|
|
||||||
|
|
||||||
curl -sf -X POST "${FORGEJO_URL}/api/v1/repos/${GITEA_REPOSITORY}/releases/${RELEASE_ID}/assets" \
|
|
||||||
-H "Authorization: token ${FORGEJO_TOKEN}" \
|
|
||||||
-F "attachment=@dist/configs.tar.gz"
|
|
||||||
echo "==> release: uploaded configs.tar.gz"
|
|
||||||
|
|
||||||
echo "==> release: done — Release ${TAG} created"
|
echo "==> release: done — Release ${TAG} created"
|
||||||
|
|||||||
Reference in New Issue
Block a user