summaryrefslogtreecommitdiffstats
path: root/jjb/armband
diff options
context:
space:
mode:
authorJosep Puigdemont <josep.puigdemont@enea.com>2016-05-06 06:22:06 +0200
committerJosep Puigdemont <josep.puigdemont@gmail.com>2016-05-10 08:22:56 +0000
commit7ef7632b7b38484f7dd17713760030e9d36bbcef (patch)
tree338aeceb8a0afb3da5ed3978249a4e6d69f77b18 /jjb/armband
parentf7a3a9092f25aa9a4f4168434aff3fee170f0c94 (diff)
armband: add ci jobs
Change-Id: I6918dc1189ab18fa79812ffa7c5e67867a945eba Signed-off-by: Josep Puigdemont <josep.puigdemont@enea.com>
Diffstat (limited to 'jjb/armband')
-rw-r--r--jjb/armband/armband-ci-jobs.yml193
-rwxr-xr-xjjb/armband/armband-deploy.sh79
-rwxr-xr-xjjb/armband/armband-download-artifact.sh66
3 files changed, 338 insertions, 0 deletions
diff --git a/jjb/armband/armband-ci-jobs.yml b/jjb/armband/armband-ci-jobs.yml
new file mode 100644
index 000000000..3877d4481
--- /dev/null
+++ b/jjb/armband/armband-ci-jobs.yml
@@ -0,0 +1,193 @@
+# jenkins job templates for Armband
+- project:
+ name: 'armband-ci'
+ project: '{name}'
+ installer: 'fuel'
+
+#--------------------------------
+# BRANCH ANCHORS
+#--------------------------------
+ master: &master
+ stream: master
+ branch: '{stream}'
+ gs-pathname: ''
+ brahmaputra: &brahmaputra
+ stream: brahmaputra
+ branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
+#--------------------------------
+# POD, INSTALLER, AND BRANCH MAPPING
+#--------------------------------
+# brahmaputra
+#--------------------------------
+ pod:
+ - arm-pod1:
+ <<: *brahmaputra
+#--------------------------------
+# master
+#--------------------------------
+# No master deploys for now
+# - arm-pod1:
+# <<: *master
+#--------------------------------
+# scenarios
+#--------------------------------
+ scenario:
+ # HA scenarios
+ - 'os-odl_l2-nofeature-ha':
+ auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+
+ # NOHA scenarios
+ - 'os-odl_l2-nofeature-noha':
+ auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
+
+ jobs:
+ - 'armband-{scenario}-{pod}-daily-{stream}'
+ - 'armband-deploy-{pod}-daily-{stream}'
+
+########################
+# job templates
+########################
+- job-template:
+ name: 'armband-{scenario}-{pod}-daily-{stream}'
+
+ concurrent: false
+
+ properties:
+ - throttle:
+ enabled: true
+ max-total: 1
+ max-per-node: 1
+ - build-blocker:
+ use-build-blocker: true
+ blocking-jobs:
+ - 'armband-os-.*?-{pod}-daily-{stream}'
+ block-level: 'NODE'
+
+ wrappers:
+ - build-name:
+ name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
+
+ triggers:
+ - '{auto-trigger-name}'
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ - '{installer}-defaults'
+ - '{pod}-defaults':
+ installer: '{installer}'
+ - string:
+ name: DEPLOY_SCENARIO
+ default: '{scenario}'
+ - armband-ci-parameter:
+ gs-pathname: '{gs-pathname}'
+
+ builders:
+ - trigger-builds:
+ - project: 'armband-deploy-{pod}-daily-{stream}'
+ current-parameters: false
+ predefined-parameters:
+ DEPLOY_SCENARIO={scenario}
+ same-node: true
+ block: true
+ - trigger-builds:
+ - project: 'functest-armband-{pod}-daily-{stream}'
+ current-parameters: false
+ predefined-parameters:
+ DEPLOY_SCENARIO={scenario}
+ block: true
+ same-node: true
+ block-thresholds:
+ build-step-failure-threshold: 'never'
+ failure-threshold: 'never'
+ unstable-threshold: 'FAILURE'
+
+- job-template:
+ name: 'armband-deploy-{pod}-daily-{stream}'
+
+ concurrent: false
+
+ properties:
+ - throttle:
+ enabled: true
+ max-total: 1
+ max-per-node: 1
+ - build-blocker:
+ use-build-blocker: true
+ blocking-jobs:
+ - 'armband-deploy-{pod}-daily-{stream}'
+ - 'armband-deploy-generic-daily-.*'
+ block-level: 'NODE'
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ - '{installer}-defaults'
+ - '{pod}-defaults':
+ installer: '{installer}'
+ - string:
+ name: DEPLOY_SCENARIO
+ default: 'os-odl_l2-nofeature-ha'
+ - armband-ci-parameter:
+ gs-pathname: '{gs-pathname}'
+
+ scm:
+ - git-scm:
+ credentials-id: '{ssh-credentials}'
+ refspec: ''
+ branch: '{branch}'
+
+ wrappers:
+ - build-name:
+ name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
+
+ builders:
+ - shell:
+ !include-raw-escape: ./armband-download-artifact.sh
+ - shell:
+ !include-raw-escape: ./armband-deploy.sh
+
+ publishers:
+ - email:
+ recipients: josep.puigdemont@enea.com armband@enea.com
+
+########################
+# parameter macros
+########################
+- parameter:
+ name: armband-ci-parameter
+ parameters:
+ - string:
+ name: BUILD_DIRECTORY
+ default: $WORKSPACE/build_output
+ description: "Directory where the build artifact will be located upon the completion of the build."
+ - string:
+ name: CACHE_DIRECTORY
+ default: $HOME/opnfv/cache/$INSTALLER_TYPE
+ description: "Directory where the cache to be used during the build is located."
+ - string:
+ name: GS_URL
+ default: artifacts.opnfv.org/$PROJECT{gs-pathname}
+ description: "URL to Google Storage."
+
+########################
+# trigger macros
+########################
+# CI PODs
+#----------------------------------------------------------
+# Enea Armband POD 1 Triggers running against master branch
+#----------------------------------------------------------
+# No triggers for master for now
+- trigger:
+ name: 'armband-os-odl_l2-nofeature-ha-arm-pod1-master-trigger'
+ triggers:
+ - timed: ''
+
+#---------------------------------------------------------------
+# Enea Armband POD 1 Triggers running against brahmaputra branch
+#---------------------------------------------------------------
+- trigger:
+ name: 'armband-os-odl_l2-nofeature-ha-arm-pod1-brahmaputra-trigger'
+ triggers:
+ - timed: '0 6 * * *'
diff --git a/jjb/armband/armband-deploy.sh b/jjb/armband/armband-deploy.sh
new file mode 100755
index 000000000..222a388e6
--- /dev/null
+++ b/jjb/armband/armband-deploy.sh
@@ -0,0 +1,79 @@
+#!/bin/bash
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2016 Ericsson AB and others.
+# (c) 2016 Enea Software AB
+# 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
+
+# source the file so we get OPNFV vars
+source latest.properties
+
+# echo the info about artifact that is used during the deployment
+echo "Using ${OPNFV_ARTIFACT_URL/*\/} for deployment"
+
+if [[ "$JOB_NAME" =~ "merge" ]]; then
+ # set simplest scenario for virtual deploys to run for merges
+ DEPLOY_SCENARIO="os-nosdn-nofeature-ha"
+else
+ # for none-merge deployments
+ # checkout the commit that was used for building the downloaded artifact
+ # to make sure the ISO and deployment mechanism uses same versions
+ echo "Checking out $OPNFV_GIT_SHA1"
+ git checkout $OPNFV_GIT_SHA1 --quiet
+fi
+
+# set deployment parameters
+export TMPDIR=$HOME/tmpdir
+BRIDGE=${DEFAULT_BRIDGE:-pxebr}
+LAB_NAME=${NODE_NAME/-*}
+POD_NAME=${NODE_NAME/*-}
+
+# we currently support enea
+if [[ ! "$LAB_NAME" =~ "enea" ]]; then
+ echo "Unsupported/unidentified lab $LAB_NAME. Cannot continue!"
+ exit 1
+else
+ echo "Using configuration for $LAB_NAME"
+fi
+
+# create TMPDIR if it doesn't exist
+mkdir -p $TMPDIR
+
+cd $WORKSPACE
+if [[ $LAB_CONFIG_URL =~ ^git:// ]]; then
+ git clone --quiet --branch ${GIT_BRANCH##origin/} $LAB_CONFIG_URL lab-config
+ LAB_CONFIG_URL=file://${WORKSPACE}/lab-config
+fi
+
+# construct the command
+DEPLOY_COMMAND="$WORKSPACE/ci/deploy.sh -b ${LAB_CONFIG_URL} -l $LAB_NAME -p $POD_NAME -s $DEPLOY_SCENARIO -i file://$WORKSPACE/opnfv.iso -H -B $BRIDGE -S $TMPDIR"
+
+# log info to console
+echo "Deployment parameters"
+echo "--------------------------------------------------------"
+echo "Scenario: $DEPLOY_SCENARIO"
+echo "Lab: $LAB_NAME"
+echo "POD: $POD_NAME"
+echo "ISO: ${OPNFV_ARTIFACT_URL/*\/}"
+echo
+echo "Starting the deployment using $INSTALLER_TYPE. This could take some time..."
+echo "--------------------------------------------------------"
+echo
+
+# start the deployment
+echo "Issuing command"
+echo "$DEPLOY_COMMAND"
+echo
+
+$DEPLOY_COMMAND
+
+echo
+echo "--------------------------------------------------------"
+echo "Deployment is done successfully!"
diff --git a/jjb/armband/armband-download-artifact.sh b/jjb/armband/armband-download-artifact.sh
new file mode 100755
index 000000000..15ad67d6e
--- /dev/null
+++ b/jjb/armband/armband-download-artifact.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2016 Ericsson AB 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 pipefail
+
+if [[ "$JOB_NAME" =~ "merge" ]]; then
+ echo "Downloading http://$GS_URL/opnfv-gerrit-$GERRIT_CHANGE_NUMBER.properties"
+ # get the properties file for the Armband Fuel ISO built for a merged change
+ curl -s -o $WORKSPACE/latest.properties http://$GS_URL/opnfv-gerrit-$GERRIT_CHANGE_NUMBER.properties
+else
+ # get the latest.properties file in order to get info regarding latest artifact
+ echo "Downloading http://$GS_URL/latest.properties"
+ curl -s -o $WORKSPACE/latest.properties http://$GS_URL/latest.properties
+fi
+
+# check if we got the file
+# FIXME: the file is created even if it didn't exist on the host
+# We should check that the contents are sane
+[[ -f latest.properties ]] || exit 1
+
+# source the file so we get artifact metadata
+source latest.properties
+
+# echo the info about artifact that is used during the deployment
+OPNFV_ARTIFACT=${OPNFV_ARTIFACT_URL/*\/}
+echo "Using $OPNFV_ARTIFACT for deployment"
+
+# using ISOs for verify & merge jobs from local storage will be enabled later
+if [[ ! "$JOB_NAME" =~ (verify|merge) ]]; then
+ # check if we already have the ISO to avoid redownload
+ ISOSTORE="/iso_mount/opnfv_ci/${GIT_BRANCH##*/}"
+ if [[ -f "$ISOSTORE/$OPNFV_ARTIFACT" ]]; then
+ echo "ISO exists locally. Skipping the download and using the file from ISO store"
+ ln -s $ISOSTORE/$OPNFV_ARTIFACT $WORKSPACE/opnfv.iso
+ echo "--------------------------------------------------------"
+ echo
+ ls -al $WORKSPACE/opnfv.iso
+ echo
+ echo "--------------------------------------------------------"
+ echo "Done!"
+ exit 0
+ fi
+fi
+
+# log info to console
+echo "Downloading the $INSTALLER_TYPE artifact using URL http://$OPNFV_ARTIFACT_URL"
+echo "This could take some time..."
+echo "--------------------------------------------------------"
+echo
+
+# download the file
+curl -s -o $WORKSPACE/opnfv.iso http://$OPNFV_ARTIFACT_URL
+
+# The file is always created, check that it is in fact an ISO image
+[[ $(file $WORKSPACE/opnfv.iso) =~ ISO ]]
+
+echo
+echo "--------------------------------------------------------"
+echo "Done!"