name: gerrit-ci-jobs
jobs:
- "{project-name}-ci-jobs"
- - gerrit-branch-lock
project-name: gerrit-ciman
Gerrit Branch Lock
------------------
-Job submits a patch to lock or unlock a project's branch.
+Job submits a patch to lock or unlock a project's branch. This should only be
+loaded once, as "ci-management-gerrit-branch-lock" (or "ci-management"
+equivalent). That job will process lock/unlock requests for all projects and
+all branches.
:Template Names:
- - {project-name}-gerrit-branch-lock-{stream}
+ - {project-name}-gerrit-branch-lock
- gerrit-branch-lock
:Comment Trigger:
:Optional parameters:
- :branch: Git branch to build against. (default: master)
:git-url: URL to clone project from. (default: $GIT_URL/$GERRIT_PROJECT)
- :stream: Keyword that can be used to represent a release code-name.
- Often the same as the branch. (default: master)
:submodule-timeout: Timeout (in minutes) for checkout operation.
(default: 10)
- :submodule-disable: Disable submodule checkout operation.
- (default: false)
:gerrit_merge_triggers: Override Gerrit Triggers.
.. _lf-global-jjb-jenkins-cfg-merge:
- gerrit-jjb-deploy-job
- gerrit-jjb-merge
- gerrit-jjb-verify
+ - gerrit-branch-lock
- job-group:
name: "{project-name}-github-ci-jobs"
######################
- job-template:
- name: "{project-name}-gerrit-branch-lock-{stream}"
+ name: "{project-name}-gerrit-branch-lock"
id: gerrit-branch-lock
######################
# Default parameters #
######################
- branch: master
+ branch: "**"
disable-job: false
git-url: "$GIT_URL/$GERRIT_PROJECT"
- stream: master
submodule-timeout: 10
- submodule-disable: false
+ submodule-disable: true
gerrit_merge_triggers:
- comment-added-contains-event:
comment-contains-value: (un)?lock branch$
parameters:
- lf-infra-parameters:
project: "{project}"
- stream: "{stream}"
+ stream: ""
branch: "{branch}"
wrappers:
- lf-infra-gerrit-scm:
git-url: "{git-url}"
refspec: ""
- branch: "{branch}"
+ branch: "$GERRIT_BRANCH"
submodule-recursive: false
submodule-timeout: "{submodule-timeout}"
submodule-disable: "{submodule-disable}"
trigger-on: "{obj:gerrit_merge_triggers}"
projects:
- project-compare-type: ANT
- project-pattern: "{project}"
+ project-pattern: "**"
branches:
- branch-compare-type: ANT
branch-pattern: "**/{branch}"
--- /dev/null
+---
+features:
+ - |
+ Add gerrit-branch-lock to gerrit ci-jobs, and make it so that it can be
+ triggered from any change, for any branch.
--- /dev/null
+---
+fixes:
+ - |
+ Currently a Job Config Tarball is added to the archive. The directory
+ layout created by 'jenkins-jobs test' has changed and as a result the code
+ that sorted/reformated the directory and generated the tarball was broken.
+
+ The prefix path of the tarball is now 'job-configs'. The number of log
+ messages has been improved and greatly reduced. The tarball generated
+ contains directory names with spaces and upper-case characters.
# Groups must be mapped in the groups file before they can be used
if ! grep 'Registered Users'; then
echo -e "global:Registered-Users\tRegistered Users" >> groups
+ git add groups
fi
mode=$(echo "$GERRIT_EVENT_COMMENT_TEXT" | grep branch | awk '{print $1}')
##############################################################################
echo "---> jjb-verify-job.sh"
-# Ensure we fail the job if any steps fail.
-set -eu -o pipefail
+set -eufo pipefail
# shellcheck disable=SC1090
source ~/lf-env.sh
lf-activate-venv jenkins-job-builder
-jenkins-jobs -l DEBUG test --recursive -o archives/job-configs --config-xml jjb/
+jenkins-jobs test --recursive -o archives/job-configs --config-xml jjb/
-# Sort job output into sub-directories. On large Jenkins systems that have
-# many jobs archiving so many files into the same directory makes NGINX return
-# the directory list slow.
-pushd archives/job-configs
-for letter in {a..z}
-do
- if [[ $(ls "$letter"* > /dev/null 2>&1) -eq 0 ]]
- then
- mkdir "$letter"
- find . -maxdepth 1 -type f -name "$letter*" -exec mv {} "$letter" \;
- fi
-done
-popd
+# Enable 'globbing'
+set +f
+# NGINX is very sluggish with directories containing large numbers of objects
+# Add another directory level named {a..z} and move directories to them.
+# Directories beginning with {0..9} or {A..Z} are left at the top level.
+( cd archives/job-configs
+ for letter in {a..z}; do
+ if ls -d $letter* > /dev/null 2>&1; then
+ mkdir .tmp
+ mv $letter* .tmp
+ mv .tmp $letter
+ fi
+ done
+)
-if [ -n "$(ls -A archives/job-configs)" ]; then
- tar cJvf archives/job-configs.tar.xz archives/job-configs
- rm -rf archives/job-configs
-fi
+( cd archives
+ echo "INFO: Archiving $(find job-configs -name \*.xml | wc -l) job configurations"
+ tar -cJf job-configs.tar.xz job-configs
+ rm -rf job-configs
+)