mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-20 07:00:09 +08:00
ci(i18n): change auto i18n workflow to run weekly (#11152)
* ci(i18n): change auto i18n workflow to run weekly Update the workflow to run on a weekly schedule instead of on pull request events. Also simplify the workflow by using yarn for dependency management and create a PR for changes instead of committing directly to the branch. * ci(github-actions): improve workflow step names with emojis Use emojis in step names to enhance readability and visual scanning of workflow logs * ci(workflow): prevent committing package.json and yarn.lock changes in i18n workflow
This commit is contained in:
parent
816a92c609
commit
76483d828e
85
.github/workflows/auto-i18n.yml
vendored
85
.github/workflows/auto-i18n.yml
vendored
@ -1,4 +1,4 @@
|
|||||||
name: Auto I18N
|
name: Auto I18N Weekly
|
||||||
|
|
||||||
env:
|
env:
|
||||||
TRANSLATION_API_KEY: ${{ secrets.TRANSLATE_API_KEY }}
|
TRANSLATION_API_KEY: ${{ secrets.TRANSLATE_API_KEY }}
|
||||||
@ -7,14 +7,15 @@ env:
|
|||||||
TRANSLATION_BASE_LOCALE: ${{ vars.AUTO_I18N_BASE_LOCALE || 'en-us'}}
|
TRANSLATION_BASE_LOCALE: ${{ vars.AUTO_I18N_BASE_LOCALE || 'en-us'}}
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
schedule:
|
||||||
types: [opened, synchronize, reopened]
|
# Runs at 00:00 UTC every Sunday.
|
||||||
|
# This corresponds to 08:00 AM UTC+8 (Beijing time) every Sunday.
|
||||||
|
- cron: "0 0 * * 0"
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
auto-i18n:
|
auto-i18n:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: github.event_name == 'workflow_dispatch' || github.event.pull_request.head.repo.full_name == 'CherryHQ/cherry-studio'
|
|
||||||
name: Auto I18N
|
name: Auto I18N
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
@ -24,45 +25,69 @@ jobs:
|
|||||||
- name: 🐈⬛ Checkout
|
- name: 🐈⬛ Checkout
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
ref: ${{ github.event.pull_request.head.ref }}
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: 📦 Setting Node.js
|
- name: 📦 Setting Node.js
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: 22
|
node-version: 22
|
||||||
package-manager-cache: false
|
|
||||||
|
|
||||||
- name: 📦 Install dependencies in isolated directory
|
- name: 📦 Install corepack
|
||||||
|
run: corepack enable && corepack prepare yarn@4.9.1 --activate
|
||||||
|
|
||||||
|
- name: 📂 Get yarn cache directory path
|
||||||
|
id: yarn-cache-dir-path
|
||||||
|
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: 💾 Cache yarn dependencies
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
${{ steps.yarn-cache-dir-path.outputs.dir }}
|
||||||
|
node_modules
|
||||||
|
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-yarn-
|
||||||
|
|
||||||
|
- name: 📦 Install dependencies
|
||||||
run: |
|
run: |
|
||||||
# 在临时目录安装依赖
|
yarn install
|
||||||
mkdir -p /tmp/translation-deps
|
|
||||||
cd /tmp/translation-deps
|
|
||||||
echo '{"dependencies": {"@cherrystudio/openai": "^6.5.0", "cli-progress": "^3.12.0", "tsx": "^4.20.3", "@biomejs/biome": "2.2.4"}}' > package.json
|
|
||||||
npm install --no-package-lock
|
|
||||||
|
|
||||||
# 设置 NODE_PATH 让项目能找到这些依赖
|
|
||||||
echo "NODE_PATH=/tmp/translation-deps/node_modules" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: 🏃♀️ Translate
|
- name: 🏃♀️ Translate
|
||||||
run: npx tsx scripts/sync-i18n.ts && npx tsx scripts/auto-translate-i18n.ts
|
run: yarn sync:i18n && yarn auto:i18n
|
||||||
|
|
||||||
- name: 🔍 Format
|
- name: 🔍 Format
|
||||||
run: cd /tmp/translation-deps && npx biome format --config-path /home/runner/work/cherry-studio/cherry-studio/biome.jsonc --write /home/runner/work/cherry-studio/cherry-studio/src/renderer/src/i18n/
|
run: yarn format
|
||||||
|
|
||||||
- name: 🔄 Commit changes
|
- name: 🔍 Check for changes
|
||||||
|
id: git_status
|
||||||
run: |
|
run: |
|
||||||
git config --local user.email "action@github.com"
|
# Check if there are any uncommitted changes
|
||||||
git config --local user.name "GitHub Action"
|
|
||||||
git add .
|
|
||||||
git reset -- package.json yarn.lock # 不提交 package.json 和 yarn.lock 的更改
|
git reset -- package.json yarn.lock # 不提交 package.json 和 yarn.lock 的更改
|
||||||
if git diff --cached --quiet; then
|
git diff --exit-code --quiet || echo "::set-output name=has_changes::true"
|
||||||
echo "No changes to commit"
|
git status --porcelain
|
||||||
else
|
|
||||||
git commit -m "fix(i18n): Auto update translations for PR #${{ github.event.pull_request.number }}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: 🚀 Push changes
|
- name: 📅 Set current date for PR title
|
||||||
uses: ad-m/github-push-action@master
|
id: set_date
|
||||||
|
run: echo "CURRENT_DATE=$(date +'%b %d, %Y')" >> $GITHUB_ENV # e.g., "Jun 06, 2024"
|
||||||
|
|
||||||
|
- name: 🚀 Create Pull Request if changes exist
|
||||||
|
if: steps.git_status.outputs.has_changes == 'true'
|
||||||
|
uses: peter-evans/create-pull-request@v6
|
||||||
with:
|
with:
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }} # Use the built-in GITHUB_TOKEN for bot actions
|
||||||
branch: ${{ github.event.pull_request.head.ref }}
|
commit-message: "feat(bot): Weekly automated script run"
|
||||||
|
title: "🤖 Weekly Automated Update: ${{ env.CURRENT_DATE }}"
|
||||||
|
body: |
|
||||||
|
This PR includes changes generated by the weekly auto i18n.
|
||||||
|
Review the changes before merging.
|
||||||
|
|
||||||
|
---
|
||||||
|
_Generated by the automated weekly workflow_
|
||||||
|
branch: "auto-i18n-weekly-${{ github.run_id }}" # Unique branch name
|
||||||
|
base: "main" # Or 'develop', set your base branch
|
||||||
|
delete-branch: true # Delete the branch after merging or closing the PR
|
||||||
|
|
||||||
|
- name: 📢 Notify if no changes
|
||||||
|
if: steps.git_status.outputs.has_changes != 'true'
|
||||||
|
run: echo "Bot script ran, but no changes were detected. No PR created."
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user