- 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