Skip to content

Check status of translation jobs #413

Check status of translation jobs

Check status of translation jobs #413

name: Check status of translation jobs
on:
workflow_dispatch:
schedule:
# 12pm every day
- cron: '0 12 * * *'
env:
TRANSLATION_VENDOR_API_URL: ${{ secrets.TRANSLATION_VENDOR_API_URL }}
DB_CONNECTION_INFO: ${{ secrets.DB_CONNECTION_INFO }}
BOT_NAME: svc-docs-eng-opensource-bot
BOT_EMAIL: [email protected]
CI: true
NEW_RELIC_ACCOUNT_ID: ${{ secrets.NEW_RELIC_ACCOUNT_ID }}
NEW_RELIC_LICENSE_KEY: ${{ secrets.NEW_RELIC_LICENSE_KEY }}
jobs:
fetch-content:
name: Fetch translated content
runs-on: ubuntu-latest
env:
TRANSLATION_VENDOR_PROJECT: ${{ secrets.TRANSLATION_VENDOR_PROJECT }}
TRANSLATION_VENDOR_USER: ${{ secrets.TRANSLATION_VENDOR_USER }}
TRANSLATION_VENDOR_SECRET: ${{ secrets.TRANSLATION_VENDOR_SECRET }}
TRANSLATION_TYPE: human
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 22.4
- name: Get current date
id: date
run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
- name: Cache dependencies
id: yarn-cache
uses: actions/cache@v3
with:
path: '**/node_modules'
key: ${{ runner.os }}-node-modules-${{ hashFiles('**/yarn.lock') }}
- name: Install dependencies
if: steps.yarn-cache.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile
- name: Fetches translated content and deserializes
id: fetch-deserialize
run: |
node ./scripts/actions/check-job-progress.mjs
- name: Commit changes
id: commit-changes
if: steps.fetch-deserialize.outputs.successfulTranslations != 0
run: |
git config --local user.email "${{ env.BOT_EMAIL }}"
git config --local user.name "${{ env.BOT_NAME }}"
git add ./src/i18n/content
git commit -m 'chore: add translations'
echo "commit=true" >> $GITHUB_OUTPUT
- name: Create Pull Request
id: create-pr
if: steps.fetch-deserialize.outputs.successfulTranslations != 0
uses: peter-evans/create-pull-request@v5
with:
token: ${{ secrets.DOCS_ENG_BOT_TOKEN }}
title: Updated translations - ${{ steps.date.outputs.date }}
body: ''
labels: translations
branch: translations
branch-suffix: short-commit-hash
base: develop
delete-branch: true
reviewers: jmiraNR
team-reviewers: docs-engineering
- name: Remove Completed Batches From Queue
if: steps.fetch-deserialize.outputs.successfulTranslations != 0 && steps.create-pr.outcome == 'success'
id: remove-batches
run: |
node ./scripts/actions/remove-completed-batch.mjs
- name: Fail workflow if at least one translation failed
if: steps.fetch-deserialization.outputs.failedTranslations > 0
run: exit 1
fetch-machine-translated-content:
name: Fetch machine translated content
runs-on: ubuntu-latest
env:
TRANSLATION_VENDOR_PROJECT: ${{ secrets.TRANSLATION_VENDOR_MT_PROJECT }}
TRANSLATION_VENDOR_USER: ${{ secrets.TRANSLATION_VENDOR_MT_USER }}
TRANSLATION_VENDOR_SECRET: ${{ secrets.TRANSLATION_VENDOR_MT_SECRET }}
TRANSLATION_TYPE: machine
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 22.4
- name: Get current date
id: date
run: echo "date:=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
- name: Cache dependencies
id: yarn-cache
uses: actions/cache@v3
with:
path: '**/node_modules'
key: ${{ runner.os }}-node-modules-${{ hashFiles('**/yarn.lock') }}
- name: Install dependencies
if: steps.yarn-cache.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile
- name: Fetches translated content and deserializes
id: fetch-deserialize
run: |
node ./scripts/actions/check-job-progress.mjs
- name: Commit changes
id: commit-changes
if: steps.fetch-deserialize.outputs.successfulTranslations != 0
run: |
git config --local user.email "${{ env.BOT_EMAIL }}"
git config --local user.name "${{ env.BOT_NAME }}"
git add ./src/i18n/content
git commit -m 'chore: add translations'
echo "commit=true" >> $GITHUB_OUTPUT
- name: Create Pull Request
id: create-pr
if: steps.fetch-deserialize.outputs.successfulTranslations != 0
uses: peter-evans/create-pull-request@v5
with:
token: ${{ secrets.DOCS_ENG_BOT_TOKEN }}
title: Updated translations - ${{ steps.date.outputs.date }} (machine translation)
body: ''
labels: translations
branch: translations
branch-suffix: short-commit-hash
base: develop
delete-branch: true
reviewers: jmiraNR
team-reviewers: docs-engineering
- name: Remove Completed Batches From Queue
if: steps.fetch-deserialize.outputs.successfulTranslations != 0 && steps.create-pr.outcome == 'success'
id: remove-batches
run: |
node ./scripts/actions/remove-completed-batch.mjs
- name: Fail workflow if at least one translation failed
if: steps.fetch-deserialization.outputs.failedTranslations > 0
run: exit 1