diff options
author | Andrew Grimberg <agrimberg@linuxfoundation.org> | 2015-11-23 08:48:17 -0800 |
---|---|---|
committer | Andrew Grimberg <agrimberg@linuxfoundation.org> | 2015-11-23 08:48:17 -0800 |
commit | 21e6159d981bc45301b3727423336d08a49fe53f (patch) | |
tree | f3507a6d9a7aeaddad15d5baeb2d25c76f9a64d2 | |
parent | 883d77c5c804b0f1e9f1370c89f8fe38672188b5 (diff) |
Initial JJB self-hosting job definitions
These are the base definitions for having Jenkins validate and merge the
JJB jobs that manage the Jenkins instance.
Change-Id: Ic028248bc6cacb86d4db8c1e0f5f924640892c99
Signed-off-by: Andrew Grimberg <agrimberg@linuxfoundation.org>
-rw-r--r-- | jjb/ci-management-jobs.yaml | 154 | ||||
-rw-r--r-- | jjb/global-defaults.yaml | 11 | ||||
-rw-r--r-- | jjb/global-macros.yaml | 116 | ||||
-rw-r--r-- | jjb/include-raw-jjb-update.sh | 10 | ||||
-rwxr-xr-x | scripts/check-unicode.sh | 29 |
5 files changed, 320 insertions, 0 deletions
diff --git a/jjb/ci-management-jobs.yaml b/jjb/ci-management-jobs.yaml new file mode 100644 index 000000000..7b2540c6c --- /dev/null +++ b/jjb/ci-management-jobs.yaml @@ -0,0 +1,154 @@ +- project: + name: ci-management-jobs + jobs: + - 'ci-management-verify-jjb' + - 'ci-management-merge' + - 'ci-management-weekly' + + project: 'ci-management' + +- job-template: + name: ci-management-verify-jjb + + project-type: freestyle + + logrotate: + daysToKeep: 30 + numToKeep: 10 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + parameters: + - project-parameter: + project: '{project}' + - gerrit-parameter: + branch: 'master' + + scm: + - gerrit-trigger-scm: + credentials-id: '{ssh-credentials}' + refspec: '$GERRIT_REFSPEC' + choosing-strategy: 'gerrit' + + wrappers: + - ssh-agent-credentials: + users: + - '{ssh-credentials}' + + triggers: + - gerrit: + trigger-on: + - patchset-created-event: + exclude-drafts: 'false' + exclude-trivial-rebase: 'false' + exclude-no-code-change: 'false' + - draft-published-event + - comment-added-contains-event: + comment-contains-value: 'recheck' + - comment-added-contains-event: + comment-contains-value: 'reverify' + projects: + - project-compare-type: 'ANT' + project-pattern: 'ci-management' + branches: + - branch-compare-type: 'ANT' + branch-pattern: '**/master' + file-paths: + - compare-type: ANT + pattern: jjb/* + - compare-type: ANT + pattern: jjb-templates/** + + builders: + - shell: | + jenkins-jobs test jjb/ + - ci-management-check-unicode + +- job-template: + name: 'ci-management-merge' + + project-type: freestyle + + logrotate: + daysToKeep: 30 + numToKeep: 40 + artifactDaysToKeep: -1 + artifactNumToKeep: 5 + + parameters: + - project-parameter: + project: '{project}' + - gerrit-parameter: + branch: 'master' + + scm: + - gerrit-trigger-scm: + credentials-id: '{ssh-credentials}' + refspec: '' + choosing-strategy: 'default' + + wrappers: + - ssh-agent-credentials: + users: + - '{ssh-credentials}' + + triggers: + - gerrit: + trigger-on: + - change-merged-event + - comment-added-contains-event: + comment-contains-value: 'remerge' + projects: + - project-compare-type: 'ANT' + project-pattern: 'ci-management' + branches: + - branch-compare-type: 'ANT' + branch-pattern: '**/master' + file-paths: + - compare-type: ANT + pattern: jjb/** + - compare-type: ANT + pattern: jjb-templates/** + + builders: + - shell: + !include-raw-escape include-raw-jjb-update.sh + +- job-template: + name: 'ci-management-weekly' + + # ci-management-weekly job to run JJB update weekly + # + # This job's purpose is to update all the JJB on a weekly (Sunday) + # basis with --flush-cache enabled to ensure jobs are properly configured in Jenkins + + project-type: freestyle + + logrotate: + daysToKeep: 30 + numToKeep: 40 + artifactDaysToKeep: -1 + artifactNumToKeep: 5 + + parameters: + - project-parameter: + project: '{project}' + + scm: + - git-scm: + credentials-id: '{ssh-credentials}' + branch: 'master' + + wrappers: + - ssh-agent-credentials: + users: + - '{ssh-credentials}' + + triggers: + - timed: 'H H * * 0' + + builders: + - shell: | + jenkins-jobs --flush-cache update jjb/ + + diff --git a/jjb/global-defaults.yaml b/jjb/global-defaults.yaml new file mode 100644 index 000000000..87c10fe1e --- /dev/null +++ b/jjb/global-defaults.yaml @@ -0,0 +1,11 @@ +# GLOBAL jenkins defaults + +- defaults: + name: global + + build-days-to-keep: 30 + build-num-to-keep: 40 + build-artifact-days-to-keep: -1 + build-artifact-num-to-keep: 5 + + ssh-credentials: 'jenkins-gerrit-credentials' diff --git a/jjb/global-macros.yaml b/jjb/global-macros.yaml new file mode 100644 index 000000000..6abec5617 --- /dev/null +++ b/jjb/global-macros.yaml @@ -0,0 +1,116 @@ +# Global macros + +#### PARAMETERS +- parameter: + name: project-parameter + parameters: + - string: + name: PROJECT + default: '{project}' + description: "JJB configured PROJECT parameter to identify a Gerrit project" + +- parameter: + name: gerrit-parameter + parameters: + - string: + name: GERRIT_BRANCH + default: '{branch}' + description: "JJB configured GERRIT_BRANCH parameter" + +- parameter: + name: gerrit-project-parameter + parameters: + - string: + name: GERRIT_PROJECT + default: '{project}' + description: "GERRIT_PROJECT parameter if not given by trigger" + +- parameter: + name: gerrit-refspec-parameter + parameters: + - string: + name: GERRIT_REFSPEC + default: '{refspec}' + description: "GERRIT_REFSPEC parameter not given by trigger" + +##### SCMS +- scm: + name: git-scm + scm: + - git: + credentials-id: '{credentials-id}' + url: '$GIT_BASE' + refspec: '' + branches: + - 'origin/${branch}' + skip-tag: true + wipe-workspace: true + +- scm: + name: gerrit-trigger-scm + scm: + - git: + credentials-id: '{credentials-id}' + url: '$GIT_BASE' + refspec: '{refspec}' + branches: + - 'origin/$GERRIT_BRANCH' + skip-tag: true + choosing-strategy: '{choosing-strategy}' + +###### WRAPPERS +- wrapper: + name: build-timeout + wrappers: + - timeout: + type: absolute + timeout: 360 + fail: true + +###### TRIGGERS +- trigger: + name: gerrit-trigger-patch-submitted + triggers: + - gerrit: + server-name: 'Default' + trigger-on: + - patchset-created-event: + exclude-drafts: 'false' + exclude-trivial-rebase: 'false' + exclude-no-code-change: 'false' + - draft-published-event + - comment-added-contains-event: + comment-contains-value: 'recheck' + - comment-added-contains-event: + comment-contains-value: 'reverify' + projects: + - project-compare-type: 'ANT' + project-pattern: '{name}' + branches: + - branch-compare-type: 'ANT' + branch-pattern: '**/{branch}' + +- trigger: + name: gerrit-trigger-patch-merged + triggers: + - gerrit: + server-name: 'Default' + trigger-on: + - change-merged-event + - comment-added-contains-event: + comment-contains-value: 'remerge' + projects: + - project-compare-type: 'ANT' + project-pattern: '{name}' + branches: + - branch-compare-type: 'ANT' + branch-pattern: '**/{branch}' + +###### BUILDERS +- builder: + name: ci-management-check-unicode + builders: + - shell: | + $WORKSPACE/scripts/check-unicode.sh jjb/ + + diff --git a/jjb/include-raw-jjb-update.sh b/jjb/include-raw-jjb-update.sh new file mode 100644 index 000000000..f1aaaa8ae --- /dev/null +++ b/jjb/include-raw-jjb-update.sh @@ -0,0 +1,10 @@ +jenkins-jobs update --delete-old jjb/ + +# Submit patches for any jobs that can be auto updated +function submitJJB { + git commit -asm "Update automated project templates" + git push origin HEAD:refs/for/master +} + +gitdir=$(git rev-parse --git-dir); scp -p -P 29418 rotterdam-jobbuilder@git.opendaylight.org:hooks/commit-msg ${gitdir}/hooks/ +git diff --exit-code || submitJJB diff --git a/scripts/check-unicode.sh b/scripts/check-unicode.sh new file mode 100755 index 000000000..db45f6ac6 --- /dev/null +++ b/scripts/check-unicode.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +# @License EPL-1.0 <http://spdx.org/licenses/EPL-1.0> +############################################################################## +# Copyright (c) 2015 The Linux Foundation and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Thanh Ha (The Linux Foundation) - Initial implementation +############################################################################## + +directory="." +if [ ! -z "$1" ]; then + directory="$1" +fi + +echo "Scanning $directory" +for x in $(find $directory -type f); do + if LC_ALL=C grep -q '[^[:print:][:space:]]' "$x"; then + echo "file "$x" contains non-ascii characters" + exit 1 + fi +done + +echo "All files are ASCII only" |