Sync Translated Content #673
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Sync Translated Content | |
on: | |
workflow_dispatch: | |
inputs: | |
notes: | |
description: "Notes" | |
required: false | |
default: "" | |
schedule: | |
# * is a special character in YAML so you have to quote this string | |
- cron: "0 1 * * *" | |
jobs: | |
build: | |
if: github.repository == 'mdn/translated-content' | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
lang: | |
- es | |
- fr | |
- ja | |
- ko | |
- pt-br | |
- ru | |
- zh-cn | |
- zh-tw | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/checkout@v4 | |
with: | |
repository: mdn/content | |
path: mdn/content | |
- name: Setup Node.js environment | |
uses: actions/setup-node@v4 | |
with: | |
node-version-file: ".nvmrc" | |
cache: "yarn" | |
cache-dependency-path: mdn/content/yarn.lock | |
- name: Install all yarn packages | |
working-directory: ${{ github.workspace }}/mdn/content | |
run: yarn --frozen-lockfile | |
env: | |
# https://github.com/microsoft/vscode-ripgrep#github-api-limit-note | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Sync translated content | |
env: | |
CONTENT_ROOT: ${{ github.workspace }}/mdn/content/files | |
CONTENT_TRANSLATED_ROOT: ${{ github.workspace }}/files | |
working-directory: ${{ github.workspace }}/mdn/content | |
run: yarn content sync-translated-content ${{ matrix.lang }} | |
- name: Gather related upstream commits | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
# get upstream head sha | |
UPSTREAM_HEAD_SHA=$(cd "${{ github.workspace }}/mdn/content" && git rev-parse HEAD) | |
echo "upstream head sha: ${UPSTREAM_HEAD_SHA}" | |
# get original path of moved files | |
MOVED_FILES=$(git diff --cached --name-status --diff-filter=R | cut -f2 | sed "s|files/${{ matrix.lang }}|files/en-us|") | |
FILE_COMMIT_URLS="" | |
while read -r MOVED_FILE; do | |
# gather related upstream commits | |
COMMIT_URL=$(gh api -XGET repos/mdn/content/commits -F path="${MOVED_FILE}" -F per_page=1 -F sha="${UPSTREAM_HEAD_SHA}" --jq '.[0].html_url') | |
if [ -n "${COMMIT_URL}" ]; then | |
FILE_COMMIT_URLS+="- ${COMMIT_URL}\n" | |
fi | |
done <<< "${MOVED_FILES}" | |
FILE_COMMIT_URLS=$(echo -e "${FILE_COMMIT_URLS}" | grep -v '^$' | sort | uniq) | |
echo -e "commit urls:\n${FILE_COMMIT_URLS}" | |
# set multiline string to env | |
# https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings | |
# as the commit urls would not contain 'EOF', we can use it as a delimiter | |
{ | |
echo 'COMMIT_URLS<<EOF' | |
echo "${FILE_COMMIT_URLS}" | |
echo EOF | |
} >> "$GITHUB_ENV" | |
- name: Create PR with sync for ${{ matrix.lang }} | |
uses: peter-evans/create-pull-request@v6 | |
with: | |
commit-message: "${{ matrix.lang }}: sync translated content" | |
branch: content-sync-${{ matrix.lang }} | |
title: "[${{ matrix.lang }}] sync translated content" | |
author: mdn-bot <[email protected]> | |
committer: mdn-bot <[email protected]> | |
body: "Yari generated sync. Related upstream commits:\n\n${{ env.COMMIT_URLS }}" | |
labels: | | |
automated pr | |
token: ${{ secrets.AUTOMERGE_TOKEN }} |