summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Grimberg <agrimberg@linuxfoundation.org>2015-11-23 08:48:17 -0800
committerAndrew Grimberg <agrimberg@linuxfoundation.org>2015-11-23 08:48:17 -0800
commit21e6159d981bc45301b3727423336d08a49fe53f (patch)
treef3507a6d9a7aeaddad15d5baeb2d25c76f9a64d2
parent883d77c5c804b0f1e9f1370c89f8fe38672188b5 (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.yaml154
-rw-r--r--jjb/global-defaults.yaml11
-rw-r--r--jjb/global-macros.yaml116
-rw-r--r--jjb/include-raw-jjb-update.sh10
-rwxr-xr-xscripts/check-unicode.sh29
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"