gitea-action-test/.github/workflows/翻译更新日志.yml
LIRUI 31212b0ffa
All checks were successful
发布wordpress文章 / generate_changelog (push) Successful in 7s
1028.yml
2024-10-29 00:14:19 +08:00

125 lines
5.2 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: 翻译更新日志
on:
# push:
# branches:
# - main
jobs:
generate_changelog:
runs-on: ubuntu-latest
steps:
# 检出代码
- name: 🛒 检出代码
uses: https://git.aoun.ltd/actions/checkout@v4
# 设置时区
- name: 设置时区
env:
TZ: Asia/Shanghai
run: date # 验证时区设置是否生效
# 1. 使用 GitHub API 获取提交信息
- name: 获取最新提交信息
id: fetch_commits
run: |
COMMIT_URL="https://api.github.com/repos/coolsnowwolf/lede/commits"
# 通过 API 获取最近的提交
COMMIT_DATA=$(curl -s "$COMMIT_URL")
# 提取最新提交的日期
LATEST_DATE=$(echo "$COMMIT_DATA" | jq -r '.[0].commit.committer.date[:10]')
# 过滤与最新日期相同的所有提交消息并排除包含“Signed-off-by”的行
MESSAGES=$(echo "$COMMIT_DATA" | jq -r --arg date "$LATEST_DATE" '.[] | select(.commit.committer.date | startswith($date)) | .commit.message' | grep -v "Signed-off-by")
# 将所有提交消息合并为一个字符串,保留换行符
FORMATTED_MESSAGES=$(echo "$MESSAGES")
echo "messages<<EOF" >> $GITHUB_OUTPUT
echo "$FORMATTED_MESSAGES" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
# 2. 调用翻译 API
- name: 翻译更新日志
id: translate
env:
TRANSLATION_URL: "https://ollama.aoun.ltd/api/generate"
run: |
# 定义 PROMPT多行内容使用 EOF 来保留格式
PROMPT=$(cat <<EOF
你是一位熟悉技术文档、硬件描述和设备树配置的专业翻译员,请准确且简洁地将以下内容从英文翻译成简体中文。
要求:
1. 务必使用 text 文本格式,但不要使用 \`\`\` 等语言标记。
2. 遵循技术术语的准确性,不意译,不简化。
3. 保持原文的标题和分段结构。
4. 保证每一项内容之间留有一行空行,适当使用换行符 \`\\n\` 使段落清晰分隔。
5. 不要添加任何额外的描述或解释,直接翻译每条内容即可。
以下是需要翻译的内容:
${{ steps.fetch_commits.outputs.messages }}
EOF
)
# 使用 jq 构建 JSON 数据
JSON_PAYLOAD=$(jq -n \
--arg model "llama3.2" \
--arg prompt "$PROMPT" \
'{model: $model, prompt: $prompt, stream: false}')
# 调用翻译 API
RESPONSE=$(curl -s -X POST "$TRANSLATION_URL" \
-H "Content-Type: application/json" \
-d "$JSON_PAYLOAD")
# 获取翻译的文本内容
TRANSLATED_TEXT=$(echo "$RESPONSE" | jq -r '.response // "翻译失败"')
# 将翻译结果设置为输出
echo "translated_text<<EOF" >> $GITHUB_OUTPUT
echo "$TRANSLATED_TEXT" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
# 3. 输出到更新日志文件
- name: 生成更新日志
run: |
echo "${{ steps.translate.outputs.translated_text }}" > ./更新日志.txt
cat ./更新日志.txt
# 4. 创建中英文对照的更新日志使用markdown格式的表格展示
- name: 生成中英文对照的更新日志
run: |
# 处理英文原文和中文翻译中的换行符为 `<br>`
ENGLISH_TEXT=$(echo "${{ steps.fetch_commits.outputs.messages }}" | sed ':a;N;$!ba;s/\n/<br>/g')
CHINESE_TEXT=$(echo "${{ steps.translate.outputs.translated_text }}" | sed ':a;N;$!ba;s/\n/<br>/g')
# 创建 Markdown 表格
echo "| 英文原文 | 中文翻译 |" > ./更新日志对照表格.md
echo "| --- | --- |" >> ./更新日志对照表格.md
echo "| $ENGLISH_TEXT | $CHINESE_TEXT |" >> ./更新日志对照表格.md
# 输出表格内容,方便调试
cat ./更新日志对照表格.md
# 5. 更新 更新日志.md 文件
- name: 更新 更新日志.md 文件
run: |
# 生成要插入的新内容
NEW_CONTENT="<!--action-update-start-->\n\n"
NEW_CONTENT+="| 英文原文 | 中文翻译 |\n"
NEW_CONTENT+="| --- | --- |\n"
NEW_CONTENT+="| $(echo "${{ steps.fetch_commits.outputs.messages }}" | sed ':a;N;$!ba;s/\n/<br>/g') | $(echo "${{ steps.translate.outputs.translated_text }}" | sed ':a;N;$!ba;s/\n/<br>/g') |\n\n"
NEW_CONTENT+="<!--action-update-end-->"
# 替换更新日志.md 文件中的标记内容
sed -i "/<!--action-update-start-->/, /<!--action-update-end-->/c\\$NEW_CONTENT" 更新日志.md
# 显示更新后的 更新日志.md 内容
cat 更新日志.md
# 6. 配置 Git 用户信息并提交更改
- name: 提交并推送更改
#env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git config --global user.name '298977887'
git config --global user.email '298977887@qq.com'
git add 更新日志.md
git commit -m "🤖 更新 更新日志.md"
git push origin HEAD:main