[ English | English (United Kingdom) | 한국어 (대한민국) | 中文 (简体, 中国) | Deutsch | Indonesia | 日本語 | русский ]
Debugging job scripts¶
While it would be rare, you may would like to debug the translation
job scripts. This section describes tips for such cases.
propose_translation_update.sh
is mainly covered.
Bemerkung
It is not a complete document for debugging. It was just written as a note. Feel free to add more topics.
Environment¶
It is better to use the same environment (e.g., Linux distribution version)
used in the translation job. To find the information, check nodeset
of the
propose-translation-update
job definition in
zuul configuration
in openstack/project-config repository.
As of Feb 2021, ubuntu-bionic
is used.
Preparations¶
You can prepare dependencies by following prepare-zanata-client role.
What you need are:
Installing Zanata CLI and its dependencies. Ensure
zanata-cli
command is found in your path.Prepare
~/.config/zanata.ini
. See Zanata CLI for more detail.Copy the translation scripts to your working directory from openstack-zuul-jobs/roles/prepare-zanata-client/files. In addition, you need to copy
common.sh
from project-config/roles/copy-proposal-common-scripts/files to the same working directory.
Commenting out CI-specific codes¶
The job scripts contain codes specific to OpenStack CI. For example, there is a code to communicate with OpenStack gerrit and the account is hardcoded. It looks convenient to comment out such code blocks to debug the scripts in a local env. It should be useful unless you are debuging a CI-specific issue.
Code blocks which look better to be commented out are:
common_translation_update.sh
trap "finish" EXIT
(It depends on testrepository and usually fails in local envs)
propose_translation_update.sh
setup_review
and a logic to check an existing change (It is unnecessary as we do not propose a real change to gerrit. The account used is hardcoded and it always fails in local runs.)send_patch
(It is unnecessary as we do not want to propose a real change to gerrit.)(optional) The main logic (from
case "$PROJECT" in
tofilter_commits
) (we will debug the main logic, so perhaps we would like to run the script piece by piece.)
The diff would be like http://paste.openstack.org/show/802260/.
Copying upper-constraints.txt¶
The job scripts assume that upper-constraints.txt exists in the top directory of the target project repository.
$ cd $PROJECT_DIR
$ wget https://releases.openstack.org/constraints/upper/master
Note that you need to adjust the URL of the upper-constraints file when you work on a stable branch.
Creating ~/.venv virtualenv¶
The job scripts assume that required python modules are installed in
~/.venv
virtualenv. In the zuul job, this virtualenv is prepared via
ensure-sphinx
and ensure-babel
roles in zuul/zuul-jobs.
You need to do the same.
Note that doc/requirements.txt in most projects are almost samer so perhaps you can reuse this virtualenv for most projects. If it does not work, consider recreating the virtualenv.
$ python3 -m venv ~/.venv
$ . ~/.venv/bin/activate
# $PROJECT_DIR is a target project repository like horizon, ironic-ui ....
(.venv) $ cd $PROJECT_DIR
# Install sphinx related modules ensure-sphinx installs
(.venv) $ pip install -r doc/requirements.txt -c ../requirements/upper-constraints.txt
# Install modules ensure-babel installs
(.venv) $ pip install Babel lxml pbr requests -c ../requirements/upper-constraints.txt
(.venv) $ deactivate
Loading scripts¶
# It is better to start a new shell when debugging the script
$ bash
> cd $PROJECT_REPO
# The arguments are: {{ zuul.project.short_name }} {{ zuul.branch }} {{ zuul.job }} $HORIZON_REPO
> . $WORKDIR/propose_translation_update.sh ironic-ui master propose-translation-update ../horizon
>
Simulating translation changes¶
If you would like to simulate translation changes, you can download translations in advance (using zanata-cli) and modify them as you want. In such case, you can modify the script as follows:
--- a/roles/prepare-zanata-client/files/common_translation_update.sh
+++ b/roles/prepare-zanata-client/files/common_translation_update.sh
@@ -734,7 +732,8 @@ function pull_from_zanata {
# Since Zanata does not currently have an option to not download new
# files, we download everything, and then remove new files that are not
# translated enough.
- zanata-cli -B -e pull
+ #zanata-cli -B -e pull
+ cp -r $DOWNLOAD_TRANSLATIONS/$project/* .
# We skip directories starting with '.' because they never contain
# translations for the project (in particular, '.tox'). Likewise
You can download translations as below.
zanata.xml
will be created once you run the propose_translation_update.sh
(or you can prepare it by following Zanata CLI „Project configuration“).
$ cd $DOWNLOAD_TRANSLATIONS/$project
$ zanata-cli -B -e pull --project-config $PROJECT_DIR/zanata.xml