- hosts: all name: Autoconverted job legacy-neutron-vpnaas-dashboard-releasenotes from old job gate-neutron-vpnaas-dashboard-releasenotes tasks: - shell: cmd: | set -e set -x CLONEMAP=`mktemp` REQS_DIR=`mktemp -d` function cleanup { mkdir -p $WORKSPACE rm -rf $CLONEMAP $REQS_DIR } trap cleanup EXIT cat > $CLONEMAP << EOF clonemap: - name: $ZUUL_PROJECT dest: . EOF # zuul cloner works poorly if there are 2 names that are the # same in here. if [[ "$ZUUL_PROJECT" != "openstack/requirements" ]]; then cat >> $CLONEMAP << EOF - name: openstack/requirements dest: $REQS_DIR EOF fi /usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \ git://git.openstack.org $ZUUL_PROJECT openstack/requirements # REQS_DIR is not set for openstack/requirements and there is also # no need to copy in this case. if [[ "$ZUUL_PROJECT" != "openstack/requirements" ]]; then cp $REQS_DIR/upper-constraints.txt ./ fi executable: /bin/bash environment: '{{ zuul | zuul_legacy_vars }}' - shell: cmd: /usr/local/jenkins/slave_scripts/install-distro-packages.sh environment: '{{ zuul | zuul_legacy_vars }}' - shell: cmd: | set -x sudo rm -f /etc/sudoers.d/jenkins-sudo # Prove that general sudo access is actually revoked ! sudo -n true executable: /bin/bash environment: '{{ zuul | zuul_legacy_vars }}' - shell: cmd: | set -e set -x # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. DOCNAME=releasenotes DIRECTORY=releasenotes script_path=/usr/local/jenkins/slave_scripts # Mapping of language codes to language names declare -A LANG_NAME=( ["de"]="German" ["en_AU"]="English (Australian)" ["en_GB"]="English (United Kingdom)" ["es"]="Spanish" ["fr"]="French" ["id"]="Indonesian" ["it"]="Italian" ["ja"]="Japanese" ["ko_KR"]="Korean (South Korea)" ["pt_BR"]="Portuguese (Brazil)" ["ru"]="Russian" ["tr_TR"]="Turkish (Turkey)" ["zh_CN"]="Chinese (China)" ) # This file always exists in OpenStack CI jobs, check for it so that # it can be used manually as well. if [ -e "$(pwd)/upper-constraints.txt" ]; then export UPPER_CONSTRAINTS_FILE=$(pwd)/upper-constraints.txt fi if [ ! -e ${DIRECTORY}/source/locale/ ]; then echo "No translations found, only building normal release notes" $script_path/run-tox.sh releasenotes exit 0 fi # Check that locale_dirs is really set, otherwise translations # will not work. if ! grep -q -E '^locale_dirs *=' $DIRECTORY/source/conf.py; then echo "Translations exist and locale_dirs missing in source/conf.py" exit 1 fi REFERENCES=`mktemp` trap "rm -f -- '$REFERENCES'" EXIT # Extract translations tox -e venv -- sphinx-build -b gettext \ -d ${DIRECTORY}/build/doctrees.gettext \ ${DIRECTORY}/source/ \ ${DIRECTORY}/source/locale/ # Add links for translations to index file cat <> ${REFERENCES} Translated Release Notes ======================== EOF # Check all language translation resources for locale in `find ${DIRECTORY}/source/locale/ -maxdepth 1 -type d` ; do # Skip if it is not a valid language translation resource. if [ ! -e ${locale}/LC_MESSAGES/${DOCNAME}.po ]; then continue fi language=$(basename $locale) echo "Building $language translation" # Prepare all translation resources for pot in ${DIRECTORY}/source/locale/*.pot ; do # Get filename resname=$(basename ${pot} .pot) # Merge all translation resources. Note this is done the same # way as done in common_translation_update.sh where we merge # all strings together in a single file. msgmerge --silent -o \ ${DIRECTORY}/source/locale/${language}/LC_MESSAGES/${resname}.po \ ${DIRECTORY}/source/locale/${language}/LC_MESSAGES/${DOCNAME}.po \ ${pot} # Compile all translation resources msgfmt -o \ ${DIRECTORY}/source/locale/${language}/LC_MESSAGES/${resname}.mo \ ${DIRECTORY}/source/locale/${language}/LC_MESSAGES/${resname}.po done # Build translated document tox -e venv -- sphinx-build -b html -D language=${language} \ -d "${DIRECTORY}/build/doctrees.${language}" \ ${DIRECTORY}/source/ ${DIRECTORY}/build/html/${language} # Reference translated document from index file if [ ${LANG_NAME["${language}"]+_} ] ; then name=${LANG_NAME["${language}"]} name+=" (${language})" echo "* \`$name <${language}/index.html>\`__" >> ${REFERENCES} else echo "* \`${language} <${language}/index.html>\`__" >> ${REFERENCES} fi # Remove newly created files git clean -f -q ${DIRECTORY}/source/locale/${language}/LC_MESSAGES/*.po git clean -f -x -q ${DIRECTORY}/source/locale/${language}/LC_MESSAGES/*.mo # revert changes to po file git reset -q ${DIRECTORY}/source/locale/${language}/LC_MESSAGES/${DOCNAME}.po git checkout -- ${DIRECTORY}/source/locale/${language}/LC_MESSAGES/${DOCNAME}.po done # Now append our references to the index file. We cannot do this # earlier since the sphinx commands will read this file. cat ${REFERENCES} >> ${DIRECTORY}/source/index.rst # Remove newly created pot files rm -f ${DIRECTORY}/source/locale/*.pot # Now build releasenotes with reference to translations $script_path/run-tox.sh releasenotes # Revert any changes to the index file. git checkout -- ${DIRECTORY}/source/index.rst executable: /bin/bash environment: '{{ zuul | zuul_legacy_vars }}'