Skip to content

Update

Update #472

Workflow file for this run

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