- project:
name: compass
installer: 'compass'
jobs:
- 'compass-verify-{stream}'
- 'compass-daily-{stream}'
- 'compass-build-iso-{stream}'
- 'compass-build-ppa-{stream}'
- 'compass-deploy-virtual-{flavor}-{stream}'
- 'compass-deploy-bare-huawei-us-{stream}'
# only master branch is enabled at the moment to keep no of jobs sane
stream:
- master:
branch: '{stream}'
gs-pathname: ''
# - brahmaputra:
# branch: 'stable/{stream}'
# gs-pathname: '/{stream}'
flavor:
- cluster-odl:
conf: 'virtual_cluster_odl'
node: 'huawei-deploy-vm'
- cluster-onos:
conf: 'virtual_cluster_onos'
node: 'huawei-deploy-vm'
- cluster:
conf: 'virtual_cluster'
node: 'huawei-deploy-vm'
project: 'compass4nfv'
########################
# job templates
########################
- job-template:
name: 'compass-verify-{stream}'
disabled: false
node: 'huawei-deploy-vm'
concurrent: true
properties:
- throttle:
enabled: true
max-total: 3
max-per-node: 1
parameters:
- project-parameter:
project: '{project}'
- gerrit-parameter:
branch: '{branch}'
- compass-parameter:
installer: '{installer}'
gs-pathname: '{gs-pathname}'
- string:
name: FLAVOR_CONF
default: 'virtual_cluster'
description: ""
scm:
- gerrit-trigger-scm:
credentials-id: '{ssh-credentials}'
refspec: '$GERRIT_REFSPEC'
choosing-strategy: 'gerrit'
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: '{project}'
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**/{branch}'
forbidden-file-paths:
- compare-type: ANT
pattern: 'docs/**|.gitignore'
builders:
- 'builder-compass-build-iso'
- 'builder-compass-deploy-virtual-flavor'
publishers:
- archive:
artifacts: 'ansible.log'
allow-empty: 'true'
fingerprint: true
- job-template:
name: 'compass-daily-{stream}'
node: huawei-build
concurrent: true
properties:
- throttle:
enabled: true
max-total: 1
max-per-node: 1
parameters:
- project-parameter:
project: '{project}'
- compass-parameter:
installer: '{installer}'
gs-pathname: '{gs-pathname}'
scm:
- git-scm:
credentials-id: '{ssh-credentials}'
refspec: ''
branch: '{branch}'
triggers:
- timed: 'H 16 * * *'
builders:
- trigger-builds:
- project: 'compass-build-iso-{stream}'
git-revision: true
block: true
- trigger-builds:
- project: 'compass-deploy-virtual-cluster-{stream}'
git-revision: true
block: false
- trigger-builds:
- project: 'compass-deploy-virtual-cluster-odl-{stream}'
git-revision: true
block: false
- trigger-builds:
- project: 'compass-deploy-virtual-cluster-onos-{stream}'
git-revision: true
block: false
- trigger-builds:
- project: 'compass-deploy-bare-huawei-us-{stream}'
git-revision: true
block: false
- job-template:
name: 'compass-build-iso-{stream}'
node: ericsson-build
concurrent: true
properties:
- throttle:
enabled: true
max-total: 1
max-per-node: 1
parameters:
- project-parameter:
project: '{project}'
- compass-parameter:
installer: '{installer}'
gs-pathname: '{gs-pathname}'
scm:
- git-scm:
credentials-id: '{ssh-credentials}'
refspec: ''
branch: '{branch}'
builders:
- 'builder-compass-build-iso'
- 'builder-compass-upload-artifact'
- 'builder-compass-workspace-cleanup'
- job-template:
name: 'compass-build-ppa-{stream}'
description: "build ppa(using docker) in huawei lab"
node: huawei-build
concurrent: true
properties:
- throttle:
enabled: true
max-total: 1
max-per-node: 1
parameters:
- project-parameter:
project: '{project}'
- compass-parameter:
installer: '{installer}'
gs-pathname: '{gs-pathname}'
scm:
- git-scm:
credentials-id: '{ssh-credentials}'
refspec: ''
branch: '{branch}'
triggers:
- timed: 'H 16 * * *'
builders:
- 'builder-compass-make-ppa'
- job-template:
name: 'compass-deploy-virtual-{flavor}-{stream}'
disabled: false
node: '{node}'
concurrent: true
properties:
- throttle:
enabled: true
max-total: 1
max-per-node: 1
parameters:
- project-parameter:
project: '{project}'
- compass-parameter:
installer: '{installer}'
gs-pathname: '{gs-pathname}'
- string:
name: FLAVOR_CONF
default: '{conf}'
description: ""
builders:
- 'builder-compass-ci-preclean-workspace'
- 'builder-compass-download-artifact'
- 'builder-compass-deploy-virtual-flavor'
publishers:
- archive:
artifacts: 'ansible.log'
allow-empty: 'true'
fingerprint: true
- job-template:
name: 'compass-deploy-bare-huawei-us-{stream}'
disabled: false
node: 'huawei-us-deploy-bare-1'
concurrent: true
properties:
- throttle:
enabled: true
max-total: 1
max-per-node: 1
parameters:
- project-parameter:
project: '{project}'
- compass-parameter:
installer: '{installer}'
gs-pathname: '{gs-pathname}'
builders:
- 'builder-compass-ci-preclean-workspace'
- 'builder-compass-download-artifact'
- 'builder-compass-deploy-bare'
publishers:
- archive:
artifacts: 'ansible.log'
allow-empty: 'true'
fingerprint: true
########################
# parameter macros
########################
- parameter:
name: compass-parameter
parameters:
- string:
name: INSTALLER
default: '{installer}'
description: "Installer to use."
- 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/$PROJECT
description: "Directory where the cache to be used during the build is located."
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
description: "Used for overriding the GIT URL coming from Global Jenkins configuration in case if the stuff is done on none-LF HW."
- string:
name: GS_URL
default: artifacts.opnfv.org/$PROJECT{gs-pathname}
description: "URL to Google Storage."
- string:
name: GS_URL_PROXY
default: build.opnfv.org/artifacts/$PROJECT/
description: "URL to Google Storage proxy"
- string:
name: installer_ip
default: "192.168.200.2"
- string:
name: PPA_REPO
default: "http://205.177.226.235:9999"
- string:
name: PPA_CACHE
default: "$WORKSPACE/work/repo/"
- choice:
name: COMPASS_OPENSTACK_VERSION
choices:
- 'liberty'
- 'juno'
- choice:
name: COMPASS_OS_VERSION
choices:
- 'trusty'
- 'centos7'
########################
# builder macros
########################
- builder:
name: 'builder-compass-make-ppa'
builders:
- shell: |
#!/bin/bash
set -x
set -o errexit
set -o nounset
set -o pipefail
# make ppa
cd $WORKSPACE/
./build/make_repo.sh
# calc MD5 of ppa
cd $PPA_CACHE
for i in $(find *.gz *.iso *.img -type f)
do
md5=$(md5sum $i | cut -d ' ' -f1)
echo $md5 > $i.md5
curl -T $i $PPA_REPO
curl -T $i.md5 $PPA_REPO
done
- builder:
name: 'builder-compass-build-iso'
builders:
- shell: |
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
# log info to console
echo "Starting the build of $INSTALLER. This could take some time..."
echo "--------------------------------------------------------"
echo
# create the cache directory if it doesn't exist
[[ -d $CACHE_DIRECTORY ]] || mkdir -p $CACHE_DIRECTORY
[[ -d $BUILD_DIRECTORY ]] || mkdir -p $BUILD_DIRECTORY
# set OPNFV_ARTIFACT_VERSION
export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d_%H-%M-%S")
# start the build
if [ -d $PPA_CACHE ]
then
cp $PPA_CACHE/*.tar.gz $PPA_CACHE/*.iso $PPA_CACHE/*.img $CACHE_DIRECTORY/ -f
fi
cd $WORKSPACE/
./build.sh --iso-dir $BUILD_DIRECTORY/ --iso-name compass.iso -c $CACHE_DIRECTORY
# list the build artifacts
ls -al $BUILD_DIRECTORY
# save information regarding artifact into file
(
echo "OPNFV_ARTIFACT_VERSION=$OPNFV_ARTIFACT_VERSION"
echo "OPNFV_GIT_URL=$(git config --get remote.origin.url)"
echo "OPNFV_GIT_SHA1=$(git rev-parse HEAD)"
echo "OPNFV_ARTIFACT_URL=$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso"
echo "OPNFV_ARTIFACT_MD5SUM=$(md5sum $BUILD_DIRECTORY/compass.iso | cut -d' ' -f1)"
echo "OPNFV_BUILD_URL=$BUILD_URL"
) > $BUILD_DIRECTORY/opnfv.properties
echo
echo "--------------------------------------------------------"
echo "Done!"
- builder:
name: 'builder-compass-deploy-virtual-flavor'
builders:
- shell: |
#!/bin/bash
set -x
# log info to console
echo "Starting the deployment on virtual environment using $INSTALLER. This could take some time..."
echo "--------------------------------------------------------"
echo
export ISO_URL=file://$BUILD_DIRECTORY/compass.iso
sudo brctl addbr vnic_ci
sudo ifconfig vnic_ci up
export EXTERNAL_NIC=vnic_ci
cd $WORKSPACE
export OS_VERSION=${COMPASS_OS_VERSION}
export OPENSTACK_VERSION=${COMPASS_OPENSTACK_VERSION}
./deploy.sh $FLAVOR_CONF
if [ $? -ne 0 ]; then
echo "depolyment failed!"
deploy_ret=1
fi
echo
echo "--------------------------------------------------------"
echo "Done!"
ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
sshpass -p root scp 2>/dev/null $ssh_options root@${installer_ip}:/var/ansible/run/openstack_${COMPASS_OPENSTACK_VERSION}-opnfv2/ansible.log ./ &> /dev/null
exit $deploy_ret
- builder:
name: 'builder-compass-deploy-bare'
builders:
- shell: |
#!/bin/bash
set -x
# log info to console
echo "Starting the deployment on baremetal environment using $INSTALLER. This could take some time..."
echo "--------------------------------------------------------"
echo
export CONFDIR=$WORKSPACE/deploy/conf/hardware_environment/huawei_us_lab/pod1
export ISO_URL=file://$BUILD_DIRECTORY/compass.iso
export EXTERNAL_NIC=eth0
export INSTALL_NIC=eth1
cd $WORKSPACE
export OS_VERSION=${COMPASS_OS_VERSION}
export OPENSTACK_VERSION=${COMPASS_OPENSTACK_VERSION}
./deploy.sh --dha $CONFDIR/dha.yml --network $CONFDIR/network.yml
if [ $? -ne 0 ]; then
echo "depolyment failed!"
deploy_ret=1
fi
echo
echo "--------------------------------------------------------"
echo "Done!"
ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
sshpass -p root scp 2>/dev/null $ssh_options root@${installer_ip}:/var/ansible/run/openstack_${COMPASS_OPENSTACK_VERSION}-opnfv2/ansible.log ./ &> /dev/null
exit $deploy_ret
- builder:
name: 'builder-compass-upload-artifact'
builders:
- shell: |
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
# log info to console
echo "Uploading the $INSTALLER artifact. This could take some time..."
echo "--------------------------------------------------------"
echo
# source the opnfv.properties to get ARTIFACT_VERSION
source $BUILD_DIRECTORY/opnfv.properties
# upload artifact and additional files to google storage
gsutil cp $BUILD_DIRECTORY/compass.iso gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso > gsutil.iso.log 2>&1
gsutil cp $BUILD_DIRECTORY/opnfv.properties gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.properties > gsutil.properties.log 2>&1
gsutil cp $BUILD_DIRECTORY/opnfv.properties gs://$GS_URL/latest.properties > gsutil.latest.log 2>&1
echo
echo "--------------------------------------------------------"
echo "Done!"
echo "Artifact is available as http://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso"
- builder:
name: 'builder-compass-download-artifact'
builders:
- shell: |
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
# log info to console
echo "Downloading the $INSTALLER artifact. This could take some time..."
echo "--------------------------------------------------------"
echo
# get the latest.properties file in order to get info regarding latest artifact
[[ -d $BUILD_DIRECTORY ]] || mkdir -p $BUILD_DIRECTORY
curl -s -o $BUILD_DIRECTORY/latest.properties http://$GS_URL/latest.properties
# check if we got the file
[[ -f $BUILD_DIRECTORY/latest.properties ]] || exit 1
# source the file so we get OPNFV vars
source $BUILD_DIRECTORY/latest.properties
# download the file
curl -s -o $BUILD_DIRECTORY/compass.iso http://$OPNFV_ARTIFACT_URL > gsutil.iso.log 2>&1
# list the file
ls -al $BUILD_DIRECTORY/compass.iso
echo
echo "--------------------------------------------------------"
echo "Done!"
- builder:
name: 'builder-compass-workspace-cleanup'
builders:
- shell: |
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
# delete everything that is in $WORKSPACE
/bin/rm -rf $WORKSPACE
- builder:
name: 'builder-compass-ci-preclean-workspace'
builders:
- shell: |
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
cd $WORKSPACE/..
sudo rm $WORKSPACE -rf
git clone $GIT_BASE $WORKSPACE