From c51382cbfb69d2543c9f104a2fd8c37b4432eaaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=BF=94?= Date: Sat, 28 Mar 2026 22:05:19 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E9=80=9A=E7=9F=A5=E9=85=8D=E7=BD=AE=EF=BC=8C?= =?UTF-8?q?=E4=BD=BF=E7=94=A8curlimages/curl=E9=95=9C=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 使用 curlimages/curl:latest 镜像,无需安装任何工具 - 简化 JSON 构建,避免 YAML 语法错误 - 所有步骤均使用精简镜像,无需安装环境 --- .woodpecker.yml | 130 ++++++++++++------------------------------------ 1 file changed, 32 insertions(+), 98 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index e27eb3e..04a1889 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -410,61 +410,28 @@ steps: # 阶段7: 企业微信通知 # ============================================ notify-wechat-success: - image: python:3.11-slim + image: curlimages/curl:latest environment: WECHAT_WEBHOOK: from_secret: wechat_webhook commands: - - python3 -c " - import os - import json - import urllib.request - from datetime import datetime + - | + BRANCH="${CI_COMMIT_BRANCH:-unknown}" + COMMIT="${CI_COMMIT_SHA:0:7}" + MESSAGE=$(echo "${CI_COMMIT_MESSAGE:-no message}" | tr '\n' ' ' | sed 's/"/\\"/g') + AUTHOR="${CI_COMMIT_AUTHOR:-unknown}" + PIPELINE_NUMBER="${CI_PIPELINE_NUMBER:-0}" + REPO_ID="${CI_REPO_ID:-1}" + TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S") - branch = os.environ.get('CI_COMMIT_BRANCH', 'unknown') - commit = os.environ.get('CI_COMMIT_SHA', 'unknown')[:7] - message = os.environ.get('CI_COMMIT_MESSAGE', 'no message').replace('\n', ' ').replace('\"', \"'\") - author = os.environ.get('CI_COMMIT_AUTHOR', 'unknown') - pipeline_number = os.environ.get('CI_PIPELINE_NUMBER', '0') - repo_id = os.environ.get('CI_REPO_ID', '1') - pipeline_url = f'https://ci.f.novalon.cn/repos/{repo_id}/pipeline/{pipeline_number}' - timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S') - - content = f'''## 🚀 Novalon Website 部署通知 - -> **构建状态**: 成功 - -**项目信息** -> 分支: \`{branch}\` -> 提交: \`{commit}\` -> 作者: {author} - -**提交信息** -> {message} - -**操作** -> [查看构建详情]({pipeline_url}) - ---- -> 时间: {timestamp} -> Pipeline #{pipeline_number}''' - - data = { - 'msgtype': 'markdown', - 'markdown': { - 'content': content + curl -X POST "$WECHAT_WEBHOOK" \ + -H 'Content-Type: application/json' \ + -d "{ + \"msgtype\": \"markdown\", + \"markdown\": { + \"content\": \"## 🚀 Novalon Website 部署通知\\n\\n> **构建状态**: 成功\\n\\n**项目信息**\\n> 分支: \`${BRANCH}\`\\n> 提交: \`${COMMIT}\`\\n> 作者: ${AUTHOR}\\n\\n**提交信息**\\n> ${MESSAGE}\\n\\n**操作**\\n> [查看构建详情](https://ci.f.novalon.cn/repos/${REPO_ID}/pipeline/${PIPELINE_NUMBER})\\n\\n---\\n> 时间: ${TIMESTAMP}\\n> Pipeline #${PIPELINE_NUMBER}\" } - } - - req = urllib.request.Request( - os.environ['WECHAT_WEBHOOK'], - data=json.dumps(data).encode('utf-8'), - headers={'Content-Type': 'application/json'} - ) - - with urllib.request.urlopen(req) as response: - print(response.read().decode('utf-8')) - " + }" when: event: - push @@ -475,61 +442,28 @@ steps: - success notify-wechat-failure: - image: python:3.11-slim + image: curlimages/curl:latest environment: WECHAT_WEBHOOK: from_secret: wechat_webhook commands: - - python3 -c " - import os - import json - import urllib.request - from datetime import datetime + - | + BRANCH="${CI_COMMIT_BRANCH:-unknown}" + COMMIT="${CI_COMMIT_SHA:0:7}" + MESSAGE=$(echo "${CI_COMMIT_MESSAGE:-no message}" | tr '\n' ' ' | sed 's/"/\\"/g') + AUTHOR="${CI_COMMIT_AUTHOR:-unknown}" + PIPELINE_NUMBER="${CI_PIPELINE_NUMBER:-0}" + REPO_ID="${CI_REPO_ID:-1}" + TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S") - branch = os.environ.get('CI_COMMIT_BRANCH', 'unknown') - commit = os.environ.get('CI_COMMIT_SHA', 'unknown')[:7] - message = os.environ.get('CI_COMMIT_MESSAGE', 'no message').replace('\n', ' ').replace('\"', \"'\") - author = os.environ.get('CI_COMMIT_AUTHOR', 'unknown') - pipeline_number = os.environ.get('CI_PIPELINE_NUMBER', '0') - repo_id = os.environ.get('CI_REPO_ID', '1') - pipeline_url = f'https://ci.f.novalon.cn/repos/{repo_id}/pipeline/{pipeline_number}' - timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S') - - content = f'''## 🚀 Novalon Website 部署通知 - -> **构建状态**: 失败 - -**项目信息** -> 分支: \`{branch}\` -> 提交: \`{commit}\` -> 作者: {author} - -**提交信息** -> {message} - -**操作** -> [查看构建详情]({pipeline_url}) - ---- -> 时间: {timestamp} -> Pipeline #{pipeline_number}''' - - data = { - 'msgtype': 'markdown', - 'markdown': { - 'content': content + curl -X POST "$WECHAT_WEBHOOK" \ + -H 'Content-Type: application/json' \ + -d "{ + \"msgtype\": \"markdown\", + \"markdown\": { + \"content\": \"## 🚀 Novalon Website 部署通知\\n\\n> **构建状态**: 失败\\n\\n**项目信息**\\n> 分支: \`${BRANCH}\`\\n> 提交: \`${COMMIT}\`\\n> 作者: ${AUTHOR}\\n\\n**提交信息**\\n> ${MESSAGE}\\n\\n**操作**\\n> [查看构建详情](https://ci.f.novalon.cn/repos/${REPO_ID}/pipeline/${PIPELINE_NUMBER})\\n\\n---\\n> 时间: ${TIMESTAMP}\\n> Pipeline #${PIPELINE_NUMBER}\" } - } - - req = urllib.request.Request( - os.environ['WECHAT_WEBHOOK'], - data=json.dumps(data).encode('utf-8'), - headers={'Content-Type': 'application/json'} - ) - - with urllib.request.urlopen(req) as response: - print(response.read().decode('utf-8')) - " + }" when: event: - push