diff options
-rwxr-xr-x | jjb/releng/generate-job-list.sh | 68 | ||||
-rw-r--r-- | jjb/releng/releng-ci-jobs.yml | 30 |
2 files changed, 98 insertions, 0 deletions
diff --git a/jjb/releng/generate-job-list.sh b/jjb/releng/generate-job-list.sh new file mode 100755 index 000000000..0e35eaad4 --- /dev/null +++ b/jjb/releng/generate-job-list.sh @@ -0,0 +1,68 @@ +#!/bin/bash +# SPDX-license-identifier: Apache-2.0 +############################################################################## +# Copyright (c) 2016 Linux Foundation and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +set -o errexit +set -o nounset +set -o pipefail + +# Job Number Formatter +function JOBS { + local NUMS=$1 + if [ $NUMS == 1 ]; then + echo -n "Job" + else + echo -n "Jobs" + fi +} + +# We expect job_output to exist prior to this being run and contain the +# output from jenkins-jobs test + +echo "> Generating list of previous JJB jobs..." +git checkout -q -b previous-commit HEAD^ +jenkins-jobs -l ERROR test -r jjb -o job_output_prev +git checkout -q - && git branch -q -d previous-commit + +echo "> Finding job changes ..." +diff -r -q job_output job_output_prev &> job_diff.txt || true + +# Only in (job_output) = NEW +# Only in (job_output_prev) = DELETED +# Files ... differ = MODIFIED + +declare -a JOBS_ADDED=($(grep 'job_output:' job_diff.txt | cut -d':' -f2- | sed 's/^[ \t]*//;s/[ \t]*$//')) +declare -a JOBS_MODIFIED=($(grep 'differ$' job_diff.txt | sed "s/Files job_output\/\(.*\) and.*/\1/g")) +declare -a JOBS_REMOVED=($(grep 'job_output_prev:' job_diff.txt | cut -d ':' -f2- | sed 's/^[ \t]*//;s/[ \t]*$//')) + +NUM_JOBS_ADDED=${#JOBS_ADDED[@]} +NUM_JOBS_MODIFIED=${#JOBS_MODIFIED[@]} +NUM_JOBS_REMOVED=${#JOBS_REMOVED[@]} + +echo "> Writing gerrit comment ..." +if [ $NUM_JOBS_ADDED -gt 0 ]; then + JOB_STRING="$(JOBS $NUM_JOBS_ADDED)" + { printf "Added %s %s:\n\n" "${NUM_JOBS_ADDED}" "$JOB_STRING"; + printf '* %s\n' "${JOBS_ADDED[@]}"; + printf "\n"; } >> gerrit_comment.txt +fi + +if [ $NUM_JOBS_MODIFIED -gt 0 ]; then + JOB_STRING="$(JOBS $NUM_JOBS_MODIFIED)" + { printf "Modified %s %s:\n\n" "${NUM_JOBS_MODIFIED}" "$JOB_STRING"; + printf '* %s\n' "${JOBS_MODIFIED[@]}"; + printf "\n"; } >> gerrit_comment.txt +fi + +if [ $NUM_JOBS_REMOVED -gt 0 ]; then + JOB_STRING="$(JOBS $NUM_JOBS_REMOVED)" + { printf "Removed %s %s:\n\n" "${NUM_JOBS_REMOVED}" "$JOB_STRING"; + printf '* %s\n' "${JOBS_REMOVED[@]}"; + printf "\n"; } >> gerrit_comment.txt +fi diff --git a/jjb/releng/releng-ci-jobs.yml b/jjb/releng/releng-ci-jobs.yml index dc9bfd5dc..42d88fb7a 100644 --- a/jjb/releng/releng-ci-jobs.yml +++ b/jjb/releng/releng-ci-jobs.yml @@ -3,6 +3,7 @@ jobs: - 'releng-verify-jjb' - 'releng-merge-jjb' + - 'releng-comment-jjb' - 'releng-generate-artifacts-api' project: 'releng' @@ -55,6 +56,35 @@ - email-jenkins-admins-on-failure - job-template: + name: releng-comment-jjb + + parameters: + - project-parameter: + project: '{project}' + branch: 'master' + scm: + - git-scm-gerrit + + triggers: + - experimental: + project: '{project}' + branch: 'master' + files: 'jjb/**' + + builders: + - copyartifact: + project: releng-merge-jjb + filter: "job_output/*" + which-build: last-successful + stable: true + optional: false + flatten: false + do-not-fingerprint: true + - shell: + !include-raw-escape: generate-job-list.sh + - report-build-result-to-gerrit + +- job-template: name: 'releng-merge-jjb' # builder-merge job to run JJB update |