Explains Zuul tasks and fixes when Zanata syncs

This patch describes Zuul instead of Jenkins since translation
jobs are also migrated to Zuul v3.

Let's clarify by using terms as follows:
 - Tasks are for Ansible playbooks as yaml tasks
 - Scripts are actual shell scripts called from tasks

Also, while syncs to project repositories are periodic jobs,
syncs to Zanata are post jobs which execute after patches on
repositories are merged.

Change-Id: Iefa50e396d3eb9f016fb17999e2c88b8457e4ea4
This commit is contained in:
Ian Y. Choi 2018-01-16 17:20:14 +09:00
parent c3d3633068
commit f65156b724
1 changed files with 32 additions and 23 deletions

View File

@ -2,30 +2,37 @@
Translation infrastructure
==========================
A series of scripts in OpenStack infrastructure is used to manage translation
changes in Zanata. Without running the scripts, translation changes will not
A series of tasks in OpenStack infrastructure is used to manage translation
changes in Zanata. Without running the tasks, translation changes will not
be reflected into OpenStack projects. This page explains how the infrastructure
scripts runs as Jenkins jobs and monitor the jobs status.
tasks run actual scripts as `Zuul <https://docs.openstack.org/infra/zuul/>`_
jobs and monitor the job status.
.. _translation-jobs:
Translation jobs
----------------
We have two types of Jenkins jobs for translations: syncing Zanata with the
latest repositories and pushing translations into the repositories.
The first job is for Zanata-side updates. It enables Zanata to have up-to-date
texts to be translated by comparing OpenStack project repositories and Zanata.
On the other hand, the second job is aimed to reflect changes related to
translations. For example, if you contribute translations in Zanata, the
translation results need to be pushed to the corresponding repositories.
We have two types of Zuul jobs for translations: syncing source strings into
Zanata with the latest repositories and pushing translations from Zanata into
the repositories.
The first job is for Zanata-side updates. Up-to-date source strings to be
translated are compared and updated between OpenStack project repositories
and Zanata. If source texts in OpenStack project repositories are changed,
then change sets are pushed into Zanata so translaters deal with up-to-date
source strings.
On the other hand, the second job is aimed to reflect changes in translated
strings in Zanata (after translators do translation activities) into
corresponding OpenStack project repositories. The job will propose changes
as :doc:`Translation Import <reviewing-translation-import>` Gerrit patches.
To find updates for both Zanata and OpenStack project repositories,
Jenkins starts to run scripts everyday at **6:00 UTC**.
Update jobs for Zanata start after patches are merged on OpenStack project
repositories, and Zuul starts to run tasks everyday at **6:00 UTC** for
the updates on OpenStack project repositories.
Note that not all translation changes are the target for translation
jobs. The goal is to have consistent translated programs, UIs, and
documentation. There's not much sense if only a few lines are
documentation. There is not much sense if only a few lines are
translated. The team has decided that files that have at least 75
percent of messages translated will be in the git repositories.
@ -34,8 +41,8 @@ get removed, there is also a lower threshold for releases of **66
percent** of messages translated as policy - which is only manually
enforced.
The OpenStack infra scripts currently download new files that are at
least **75 percent** translated and if files grow over time but do not
The OpenStack infra scripts excuted by tasks currently download new files that
are at least **75 percent** translated and if files grow over time but do not
get new translations (or strings change too much), they will be
removed again automatically from the project with a lower threshold of
currently **40 percent**.
@ -51,20 +58,22 @@ dashboard provides us a convenient way to check the translation job status.
* `Post jobs - Syncing to Zanata <http://status.openstack.org/openstack-health/#/g/build_queue/post?groupKey=build_queue&searchJob=translation>`__
* `Periodic jobs: Syncing into repos <http://status.openstack.org/openstack-health/#/g/build_queue/periodic?groupKey=build_queue&searchJob=translation>`__
Translation infrastructure scripts
----------------------------------
Translation infrastructure tasks and scripts
--------------------------------------------
Translation infrastructure scripts are stored and managed in
Translation infrastructure tasks and scripts are stored and managed in
`openstack-infra/project-config <http://git.openstack.org/cgit/openstack-infra/project-config>`__
repository.
* `upstream_translation_update.sh <http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/scripts/upstream_translation_update.sh>`__
* `upstream-translation-update.yaml <https://git.openstack.org/cgit/openstack-infra/project-config/tree/playbooks/translation/upstream-translation-update.yaml>`__
* Implements the first Jenkins job (Syncing to Zanata).
* Implements the first Zuul job (Syncing to Zanata) by executing
`upstream_translation_update.sh <http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/scripts/upstream_translation_update.sh>`__
* `propose_translation_update.sh <http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/scripts/propose_translation_update.sh>`__
* `propose-translation-update.yaml <https://git.openstack.org/cgit/openstack-infra/project-config/tree/playbooks/translation/propose-translation-update.yaml>`__
* Carries out the second Jenkins job (Syncing into repos).
* Carries out the second Zuul job (Syncing into repos) by executing
`propose_translation_update.sh <http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/scripts/propose_translation_update.sh>`__
* `common_translation_update.sh <http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/scripts/common_translation_update.sh>`__
@ -81,5 +90,5 @@ repository.
* Builds release notes in both the original (English) version and translated
versions (if any).
Note that the scripts use `zanata-cli <http://docs.zanata.org/en/release/client/>`__
Note that the scripts in the tasks use `zanata-cli <http://docs.zanata.org/en/release/client/>`__
to pull and push translation content.