Update #415
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: Update | |
on: | |
workflow_dispatch: | |
inputs: | |
BRANCH: | |
description: CPython branch to use | |
required: false | |
type: string | |
default: '3.12' | |
pull_request: | |
paths: | |
- '.github/workflows/update.yml' | |
- 'Makefile' | |
- 'requirements.txt' | |
branches: | |
- '3.12' | |
push: | |
paths: | |
- '.github/workflows/update.yml' | |
- 'Makefile' | |
- 'requirements.txt' | |
branches: | |
- '3.12' | |
- '3.11' | |
- '3.10' | |
- '3.9' | |
- '3.8' | |
- '3.7' | |
schedule: | |
- cron: '0 23 * * *' | |
permissions: | |
contents: read | |
jobs: | |
# Download translations from Transifex, keep PO and Logs artifacts | |
pull: | |
name: Pull from Transifex | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out ${{ github.repository }} | |
uses: actions/[email protected] | |
- name: Get branch name on push or schedule | |
if: | | |
github.event_name == 'push' || | |
github.event_name == 'schedule' | |
run: echo "BRANCH=${GITHUB_REF_NAME}" >>$GITHUB_ENV | |
- name: Get branch name on pull | |
if: github.event_name == 'pull_request' | |
run: echo "BRANCH=${GITHUB_BASE_REF}" >>$GITHUB_ENV | |
- name: Get branch name on manual run | |
if: github.event_name == 'workflow_dispatch' | |
run: echo "BRANCH=${{ github.event.inputs.BRANCH }}" >> $GITHUB_ENV | |
- name: Check out CPython | |
uses: actions/[email protected] | |
with: | |
repository: python/cpython | |
ref: ${{ env.BRANCH }} | |
path: cpython | |
- name: Set up Python 3 | |
uses: actions/[email protected] | |
with: | |
python-version: '3' | |
cache: 'pip' | |
cache-dependency-path: | | |
'requirements.txt' | |
'cpython/requirements.txt' | |
- name: Install dependencies | |
run: sudo apt update -y && sudo apt install gettext tree -y | |
- name: Pull translations | |
run: | | |
make tx-config TX_CLI_DIR=/usr/local/bin | |
if [ "${{ github.event_name }}" != 'pull_request' ]; then | |
make pull -o tx-config TX_CLI_DIR=/usr/local/bin | |
fi | |
env: | |
TX_TOKEN: ${{ secrets.TX_TOKEN }} | |
- name: Upload artifact - po files | |
uses: actions/[email protected] | |
with: | |
name: translations | |
path: | | |
*.po | |
**/*.po | |
.tx/ | |
- name: Upload artifact - log files | |
if: always() | |
uses: actions/[email protected] | |
with: | |
name: pull-logs | |
path: | | |
logs/* | |
/tmp/*.log | |
# Job for getting po files downloaded and storing this repository | |
push: | |
name: Push to repo | |
needs: [pull] | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
steps: | |
- name: Check out ${{ github.repository }} | |
uses: actions/[email protected] | |
- name: Download PO files | |
uses: actions/[email protected] | |
with: | |
name: translations | |
# Exclude file with only changes in POT-Creation-Date | |
- name: Changed files | |
shell: bash | |
run: | | |
git diff -I'^"POT-Creation-Date: ' --numstat *.po **/*.po | cut -f3 | |
git ls-files -o --exclude-standard *.po **/*.po | |
- name: Commit and push changes | |
if: | | |
github.repository == 'python/python-docs-pt-br' && | |
github.event_name != 'pull_request' | |
run: | | |
git config user.name github-actions | |
git config user.email [email protected] | |
make push | |
# Merge translations previously updated into older branches to make sure | |
# older versions of Python Docs gets translated as well. | |
# 'overwrite=true' means strings previously translated will get overwritten; | |
# other branches will preserve translated strings, only filling in new | |
# translations. | |
merge: | |
name: Merge into ${{ matrix.branch }} | |
needs: [push] | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
strategy: | |
fail-fast: false | |
max-parallel: 3 | |
matrix: | |
branch: ['3.11', '3.10', '3.9', '3.8', '3.7', '3.6', '2.7'] | |
include: | |
- branch: 3.11 | |
overwrite: true | |
steps: | |
- name: Get branch name on push or schedule | |
if: | | |
github.event_name == 'push' || | |
github.event_name == 'schedule' | |
run: echo "CURRENT_BRANCH=${GITHUB_REF_NAME}" >>$GITHUB_ENV | |
- name: Get branch name on pull | |
if: github.event_name == 'pull_request' | |
run: echo "CURRENT_BRANCH=${GITHUB_BASE_REF}" >>$GITHUB_ENV | |
- name: Get branch name on manual run | |
if: github.event_name == 'workflow_dispatch' | |
run: echo "CURRENT_BRANCH=${{ github.event.inputs.BRANCH }}" >> $GITHUB_ENV | |
- name: Check out source branch (${{ env.CURRENT_BRANCH }}) | |
uses: actions/[email protected] | |
with: | |
path: ${{ env.CURRENT_BRANCH }} | |
persist-credentials: false | |
- name: Check out target branch (${{ matrix.branch }}) | |
uses: actions/[email protected] | |
with: | |
ref: ${{ matrix.branch }} | |
path: ${{ matrix.branch }} | |
- name: Set up Python 3 | |
uses: actions/[email protected] | |
with: | |
python-version: '3' | |
cache: 'pip' | |
cache-dependency-path: "${{ env.CURRENT_BRANCH }}/requirements.txt" | |
- name: Install dependencies | |
run: | | |
sudo apt update -y && sudo apt install gettext -y | |
pip3 install pomerge powrap | |
- name: Merge overwriting on stable release branch | |
if: ${{ matrix.overwrite == true }} | |
run: | | |
pomerge --from ${{ env.CURRENT_BRANCH }}/**/*.po --to ${{ matrix.branch }}/**/*.po | |
- name: Merge without overwriting on EOL or security-fix release branch | |
if: ${{ matrix.overwrite != true }} | |
run: | | |
pomerge --no-overwrite --from ${{ env.CURRENT_BRANCH }}/**/*.po --to ${{ matrix.branch }}/**/*.po | |
- name: Wrap catalog message files | |
run: | | |
powrap --modified -C ${{ matrix.branch }} | |
#TODO: Solve make push to work with merge scenario | |
- name: Commit and push changes | |
if: | | |
github.repository == 'python/python-docs-pt-br' && | |
github.event_name != 'pull_request' | |
run: | | |
git config user.name github-actions | |
git config user.email [email protected] | |
git diff -I'^"POT-Creation-Date: ' --numstat *.po **/*.po | cut -f3 | xargs -r git add | |
git add $(git ls-files -o --exclude-standard *.po **/*.po) .tx/config | |
git diff-index --cached --quiet HEAD || git commit -m "Merge ${{ env.CURRENT_BRANCH }} into ${{ matrix.branch }}" | |
working-directory: ${{ matrix.branch }} | |
# Call the check.yml workflow after updating to run some tests | |
call-build: | |
name: call | |
needs: push | |
if: github.event_name != 'pull_request' | |
uses: ./.github/workflows/check.yml | |
secrets: inherit |