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<> $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 <> $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: | # 处理英文原文和中文翻译中的换行符为 `
` ENGLISH_TEXT=$(echo "${{ steps.fetch_commits.outputs.messages }}" | sed ':a;N;$!ba;s/\n/
/g') CHINESE_TEXT=$(echo "${{ steps.translate.outputs.translated_text }}" | sed ':a;N;$!ba;s/\n/
/g') # 创建 Markdown 表格 echo "| 英文原文 | 中文翻译 |" > ./更新日志对照表格.md echo "| --- | --- |" >> ./更新日志对照表格.md echo "| $ENGLISH_TEXT | $CHINESE_TEXT |" >> ./更新日志对照表格.md # 输出表格内容,方便调试 cat ./更新日志对照表格.md # 5. 更新 更新日志.md 文件 - name: 更新 更新日志.md 文件 run: | # 生成要插入的新内容 NEW_CONTENT="\n\n" NEW_CONTENT+="| 英文原文 | 中文翻译 |\n" NEW_CONTENT+="| --- | --- |\n" NEW_CONTENT+="| $(echo "${{ steps.fetch_commits.outputs.messages }}" | sed ':a;N;$!ba;s/\n/
/g') | $(echo "${{ steps.translate.outputs.translated_text }}" | sed ':a;N;$!ba;s/\n/
/g') |\n\n" NEW_CONTENT+="" # 替换更新日志.md 文件中的标记内容 sed -i "//, //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