- project: name: apex jobs: - 'apex-verify-{stream}' - 'apex-runner-{platform}-{scenario}-{stream}' - 'apex-build-{stream}' - 'apex-deploy-virtual-{scenario}-{stream}' - 'apex-deploy-baremetal-{scenario}-{stream}' - 'apex-daily-{stream}' # stream: branch with - in place of / (eg. stable-arno) # branch: branch (eg. stable/arno) stream: - master: branch: 'master' gs-pathname: '' block-stream: 'brahmaputra' slave: 'intel-pod7' - brahmaputra: branch: 'stable/brahmaputra' gs-pathname: '/brahmaputra' block-stream: 'master' slave: 'opnfv-jump-1' disabled: false project: 'apex' scenario: - 'os-odl_l2-nofeature-ha' - 'os-odl_l2-sfc-noha' - 'os-odl_l3-nofeature-ha' - 'os-onos-nofeature-ha' - 'os-opencontrail-nofeature-ha' platform: - 'baremetal' - 'virtual' - job-template: name: 'apex-verify-{stream}' node: '{slave}' parameters: - apex-parameter: gs-pathname: '{gs-pathname}' - project-parameter: project: '{project}' - gerrit-parameter: branch: '{branch}' - string: name: GIT_BASE default: https://gerrit.opnfv.org/gerrit/$PROJECT description: "Used for overriding the GIT URL coming from parameters macro." 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: 'true' - 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: 'apex' branches: - branch-compare-type: 'ANT' branch-pattern: '**/{branch}' file-paths: - compare-type: ANT pattern: 'ci/**' - compare-type: ANT pattern: 'build/**' - compare-type: ANT pattern: 'lib/**' - compare-type: ANT pattern: 'config/**' properties: - build-blocker: use-build-blocker: true blocking-jobs: - "apex-daily.*" - "apex-deploy.*" - "apex-build.*" - "apex-runner.*" - 'apex-verify-{block-stream}' builders: - 'apex-build' - trigger-builds: - project: 'apex-deploy-virtual-os-odl_l2-nofeature-ha-{stream}' predefined-parameters: | BUILD_DIRECTORY=apex-verify-{stream}/build_output OPNFV_CLEAN='yes' git-revision: false block: true - trigger-builds: - project: 'apex-deploy-virtual-os-onos-nofeature-ha-{stream}' predefined-parameters: | BUILD_DIRECTORY=apex-verify-{stream}/build_output OPNFV_CLEAN='yes' git-revision: false block: true - trigger-builds: - project: 'apex-deploy-virtual-os-odl_l3-nofeature-ha-{stream}' predefined-parameters: | BUILD_DIRECTORY=apex-verify-{stream}/build_output OPNFV_CLEAN='yes' git-revision: false block: true - trigger-builds: - project: 'apex-deploy-virtual-os-odl_l2-sfc-noha-{stream}' predefined-parameters: | BUILD_DIRECTORY=apex-verify-{stream}/build_output OPNFV_CLEAN='yes' git-revision: false block: true - 'apex-workspace-cleanup' - job-template: name: 'apex-runner-{platform}-{scenario}-{stream}' # runner jobs for deploying manually node: opnfv-jump-1 disabled: false parameters: - apex-parameter: gs-pathname: '{gs-pathname}' - project-parameter: project: '{project}' - gerrit-parameter: branch: '{branch}' - string: name: GIT_BASE default: https://gerrit.opnfv.org/gerrit/$PROJECT description: "Used for overriding the GIT URL coming from parameters macro." scm: - gerrit-trigger-scm: credentials-id: '{ssh-credentials}' refspec: '' choosing-strategy: 'default' properties: - build-blocker: use-build-blocker: true blocking-jobs: - "apex-daily.*" - "apex-verify.*" builders: - trigger-builds: - project: 'apex-deploy-{platform}-{scenario}-{stream}' predefined-parameters: OPNFV_CLEAN='yes' git-revision: false block: true - trigger-builds: - project: 'yardstick-apex-opnfv-jump-1-daily-{stream}' predefined-parameters: DEPLOY_SCENARIO={scenario} block: true block-thresholds: build-step-failure-threshold: 'never' failure-threshold: 'never' unstable-threshold: 'FAILURE' - trigger-builds: - project: 'functest-apex-opnfv-jump-1-daily-{stream}' predefined-parameters: DEPLOY_SCENARIO={scenario} block: true block-thresholds: build-step-failure-threshold: 'never' failure-threshold: 'never' unstable-threshold: 'FAILURE' - job-template: name: 'apex-build-{stream}' # Job template for builds # # Required Variables: # stream: branch with - in place of / (eg. stable) # branch: branch (eg. stable) node: opnfv-jump-1 disabled: false parameters: - project-parameter: project: '{project}' - apex-parameter: gs-pathname: '{gs-pathname}' - gerrit-parameter: branch: '{branch}' - string: name: GIT_BASE default: https://gerrit.opnfv.org/gerrit/$PROJECT description: "Used for overriding the GIT URL coming from parameters macro." scm: - git-scm: credentials-id: '{ssh-credentials}' refspec: '' branch: '{branch}' properties: - build-blocker: use-build-blocker: true blocking-jobs: - "apex-deploy.*" builders: - 'apex-build' - trigger-builds: - project: 'apex-deploy-virtual-os-odl_l2-nofeature-ha-{stream}' predefined-parameters: BUILD_DIRECTORY=apex-build-{stream}/build_output git-revision: false block: true - 'apex-upload-artifact' - job-template: name: 'apex-deploy-virtual-{scenario}-{stream}' # Job template for virtual deployment # # Required Variables: # stream: branch with - in place of / (eg. stable) # branch: branch (eg. stable) node: '{slave}' disabled: false scm: - git-scm: credentials-id: '{ssh-credentials}' refspec: '' branch: '{branch}' parameters: - project-parameter: project: '{project}' - apex-parameter: gs-pathname: '{gs-pathname}' - string: name: DEPLOY_SCENARIO default: '{scenario}' description: "Scenario to deploy with." properties: - build-blocker: use-build-blocker: true blocking-jobs: - "apex-deploy.*" builders: - 'apex-deploy-virtual' - 'apex-workspace-cleanup' - job-template: name: 'apex-deploy-baremetal-{scenario}-{stream}' # Job template for baremetal deployment # # Required Variables: # stream: branch with - in place of / (eg. stable) # branch: branch (eg. stable) node: opnfv-jump-1 disabled: false scm: - git-scm: credentials-id: '{ssh-credentials}' refspec: '' branch: '{branch}' parameters: - project-parameter: project: '{project}' - apex-parameter: gs-pathname: '{gs-pathname}' - string: name: DEPLOY_SCENARIO default: '{scenario}' description: "Scenario to deploy with." properties: - build-blocker: use-build-blocker: true blocking-jobs: - "apex-verify.*" - "apex-deploy.*" - "apex-build.*" builders: - 'apex-deploy-baremetal' - 'apex-workspace-cleanup' - job-template: name: 'apex-daily-{stream}' # Job template for daily build # # Required Variables: # stream: branch with - in place of / (eg. stable) # branch: branch (eg. stable) node: opnfv-jump-1 disabled: false scm: - git-scm: credentials-id: '{ssh-credentials}' refspec: '' branch: '{branch}' parameters: - project-parameter: project: '{project}' - apex-parameter: gs-pathname: '{gs-pathname}' properties: - build-blocker: use-build-blocker: true blocking-jobs: - "apex-verify.*" - "apex-deploy.*" - "apex-build.*" - "apex-runner.*" triggers: - 'apex-{stream}' builders: - trigger-builds: - project: 'apex-build-{stream}' git-revision: true current-parameters: true block: true - trigger-builds: - project: 'apex-deploy-baremetal-os-odl_l2-nofeature-ha-{stream}' predefined-parameters: | BUILD_DIRECTORY=apex-build-{stream}/build_output OPNFV_CLEAN='yes' git-revision: true block: true - trigger-builds: - project: 'functest-apex-opnfv-jump-1-daily-{stream}' predefined-parameters: DEPLOY_SCENARIO=os-odl_l2-nofeature-ha block: true block-thresholds: build-step-failure-threshold: 'never' failure-threshold: 'never' unstable-threshold: 'FAILURE' - trigger-builds: - project: 'yardstick-apex-opnfv-jump-1-daily-{stream}' predefined-parameters: DEPLOY_SCENARIO=os-odl_l2-nofeature-ha block: true block-thresholds: build-step-failure-threshold: 'never' failure-threshold: 'never' unstable-threshold: 'FAILURE' - trigger-builds: - project: 'apex-deploy-baremetal-os-onos-nofeature-ha-{stream}' predefined-parameters: BUILD_DIRECTORY=apex-build-{stream}/build_output git-revision: true block: true - trigger-builds: - project: 'functest-apex-opnfv-jump-1-daily-{stream}' predefined-parameters: DEPLOY_SCENARIO=os-onos-nofeature-ha block: true block-thresholds: build-step-failure-threshold: 'never' failure-threshold: 'never' unstable-threshold: 'FAILURE' - trigger-builds: - project: 'yardstick-apex-opnfv-jump-1-daily-{stream}' predefined-parameters: DEPLOY_SCENARIO=os-onos-nofeature-ha block: true block-thresholds: build-step-failure-threshold: 'never' failure-threshold: 'never' unstable-threshold: 'FAILURE' - trigger-builds: - project: 'apex-deploy-baremetal-os-odl_l3-nofeature-ha-{stream}' predefined-parameters: BUILD_DIRECTORY=apex-build-{stream}/build_output git-revision: true block: true - trigger-builds: - project: 'functest-apex-opnfv-jump-1-daily-{stream}' predefined-parameters: DEPLOY_SCENARIO=os-odl_l3-nofeature-ha block: true block-thresholds: build-step-failure-threshold: 'never' failure-threshold: 'never' unstable-threshold: 'FAILURE' - trigger-builds: - project: 'yardstick-apex-opnfv-jump-1-daily-{stream}' predefined-parameters: DEPLOY_SCENARIO=os-odl_l3-nofeature-ha block: true block-thresholds: build-step-failure-threshold: 'never' failure-threshold: 'never' unstable-threshold: 'FAILURE' ######################## # parameter macros ######################## - parameter: name: apex-parameter parameters: - string: name: ARTIFACT_NAME default: 'latest' description: "RPM Artifact name that will be appended to GS_URL to deploy a specific artifact" - string: name: ARTIFACT_VERSION default: 'daily' description: "Artifact version type" - 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{gs-pathname} 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: OPNFV_CLEAN default: 'no' description: "Use yes in lower case to invoke clean. Indicates if the deploy environment should be cleaned before deployment" ######################## # builder macros ######################## - builder: name: 'apex-build' builders: - shell: | #!/bin/bash set -o errexit set -o nounset set -o pipefail # log info to console echo "Starting the build of Apex using OpenStack Master packages. This will take some time..." echo "---------------------------------------------------------------------------------------" echo # create the cache directory if it doesn't exist [[ -d $CACHE_DIRECTORY ]] || mkdir -p $CACHE_DIRECTORY # set OPNFV_ARTIFACT_VERSION if echo $BUILD_TAG | grep "apex-verify" 1> /dev/null; then if echo $GERRIT_BRANCH | grep "brahmaputra" 1> /dev/null; then export OPNFV_ARTIFACT_VERSION=brahmaputra-dev${BUILD_NUMBER} export BUILD_ARGS="-c file://$CACHE_DIRECTORY $BUILD_DIRECTORY" else export OPNFV_ARTIFACT_VERSION=dev${BUILD_NUMBER} export BUILD_ARGS="-c file://$CACHE_DIRECTORY" fi elif [ "$ARTIFACT_VERSION" == "daily" ]; then if echo $GERRIT_BRANCH | grep "brahmaputra" 1> /dev/null; then export OPNFV_ARTIFACT_VERSION=brahmaputra-$(date -u +"%Y-%m-%d") export BUILD_ARGS="-c file://$CACHE_DIRECTORY $BUILD_DIRECTORY" else export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d") export BUILD_ARGS="-c file://$CACHE_DIRECTORY --iso" fi else export OPNFV_ARTIFACT_VERSION=${ARTIFACT_VERSION} fi # start the build cd $WORKSPACE/ci ./build.sh -v $OPNFV_ARTIFACT_VERSION $BUILD_ARGS RPM_VERSION=$(grep Version $BUILD_DIRECTORY/../build/opnfv-apex.spec | awk '{ print $2 }')-$(echo $OPNFV_ARTIFACT_VERSION | tr -d '_-') # list the contents of BUILD_OUTPUT directory 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/OPNFV-CentOS-7-x86_64-$OPNFV_ARTIFACT_VERSION.iso | cut -d' ' -f1)" echo "OPNFV_SRPM_URL=$GS_URL/opnfv-apex-$RPM_VERSION.src.rpm" echo "OPNFV_RPM_URL=$GS_URL/opnfv-apex-$RPM_VERSION.noarch.rpm" echo "OPNFV_RPM_MD5SUM=$(md5sum $BUILD_DIRECTORY/opnfv-apex-$RPM_VERSION.noarch.rpm | cut -d' ' -f1)" echo "OPNFV_BUILD_URL=$BUILD_URL" ) > $WORKSPACE/opnfv.properties echo "--------------------------------------------------------" echo "Done!" - builder: name: 'apex-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: 'apex-upload-artifact' builders: - shell: | #!/bin/bash set -o errexit set -o nounset set -o pipefail # log info to console echo "Uploading the Apex artifact. This could take some time..." echo "--------------------------------------------------------" echo # source the opnfv.properties to get ARTIFACT_VERSION source $WORKSPACE/opnfv.properties # upload artifact and additional files to google storage gsutil cp $BUILD_DIRECTORY/OPNFV-CentOS-7-x86_64-$OPNFV_ARTIFACT_VERSION.iso gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso > gsutil.iso.log 2>&1 RPM_INSTALL_PATH=$BUILD_DIRECTORY/$(basename $OPNFV_RPM_URL) RPM_LIST=$RPM_INSTALL_PATH for pkg in common undercloud opendaylight-sfc; do RPM_LIST+=" ${RPM_INSTALL_PATH/opnfv-apex/opnfv-apex-${pkg}}" done SRPM_INSTALL_PATH=$BUILD_DIRECTORY/$(basename $OPNFV_SRPM_URL) SRPM_LIST=$SRPM_INSTALL_PATH for pkg in common undercloud opendaylight-sfc; do SRPM_LIST+=" ${SRPM_INSTALL_PATH/opnfv-apex/opnfv-apex-${pkg}}" done for artifact in $RPM_LIST $SRPM_LIST; do gsutil cp $artifact gs://$GS_URL/$(basename $artifact) > gsutil.iso.log 2>&1 done gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.properties > gsutil.properties.log 2>&1 gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/latest.properties > gsutil.latest.log 2>&1 echo echo "--------------------------------------------------------" echo "Done!" echo "ISO Artifact is available as http://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso" echo "RPM Artifact is available as http://$GS_URL/$(basename $OPNFV_RPM_URL)" - builder: name: 'apex-deploy-virtual' builders: - shell: | #!/bin/bash set -o errexit set -o nounset set -o pipefail # log info to console echo "Starting the Apex virtual deployment." echo "--------------------------------------------------------" echo if [[ ! "$ARTIFACT_NAME" == "latest" ]]; then # if artifact name is passed the pull a # specific artifact from artifacts.opnfv.org RPM_INSTALL_PATH=$GS_URL/$ARTIFACT_NAME else if [[ $BUILD_DIRECTORY == *verify* ]]; then BUILD_DIRECTORY=$WORKSPACE/../$BUILD_DIRECTORY echo "BUILD DIRECTORY modified to $BUILD_DIRECTORY" elif [[ $BUILD_DIRECTORY == *apex-build* ]]; then BUILD_DIRECTORY=$WORKSPACE/../$BUILD_DIRECTORY echo "BUILD DIRECTORY modified to $BUILD_DIRECTORY" fi if [[ -f ${BUILD_DIRECTORY}/../opnfv.properties ]]; then # if opnfv.properties exists then use the # local build. Source the file so we get local OPNFV vars source ${BUILD_DIRECTORY}/../opnfv.properties RPM_INSTALL_PATH=${BUILD_DIRECTORY}/$(basename $OPNFV_RPM_URL) else if [[ $BUILD_DIRECTORY == *verify* ]]; then echo "BUILD_DIRECTORY is from a verify job, so will not use latest from URL" echo "Check that the slave has opnfv.properties in $BUILD_DIRECTORY" exit 1 elif [[ $BUILD_DIRECTORY == *apex-build* ]]; then echo "BUILD_DIRECTORY is from a daily job, so will not use latest from URL" echo "Check that the slave has opnfv.properties in $BUILD_DIRECTORY" exit 1 fi # no opnfv.properties means use the latest from artifacts.opnfv.org # get the latest.properties to get the link to the latest artifact curl -s -o $WORKSPACE/opnfv.properties http://$GS_URL/latest.properties [[ -f opnfv.properties ]] || exit 1 # source the file so we get OPNFV vars source opnfv.properties RPM_INSTALL_PATH=$OPNFV_RPM_URL fi fi if [ -z "$DEPLOY_SCENARIO" ]; then echo "Deploy scenario not set!" exit 1 fi # use local build for verify if [[ $BUILD_DIRECTORY == *verify* ]]; then if [ ! -e "${WORKSPACE}/build/lib" ]; then ln -s ${WORKSPACE}/lib ${WORKSPACE}/build/lib; fi DEPLOY_CMD="./deploy.sh -c ${WORKSPACE}/build -r ${WORKSPACE}/build/images/" DEPLOY_FILE="${WORKSPACE}/config/deploy/${DEPLOY_SCENARIO}.yaml" NETWORK_FILE="${WORKSPACE}/config/deploy/network/network_settings.yaml" else RPM_LIST=$RPM_INSTALL_PATH for pkg in common undercloud opendaylight-sfc; do RPM_LIST+=" ${RPM_INSTALL_PATH/opnfv-apex/opnfv-apex-${pkg}}" done # update / install the new rpm if rpm -q opnfv-apex > /dev/null; then if [ $(basename $OPNFV_RPM_URL) == $(rpm -q opnfv-apex).rpm ]; then echo "RPM is already installed" elif sudo yum update -y $RPM_LIST | grep "does not update installed package"; then if ! sudo yum downgrade -y $RPM_LIST; then sudo yum remove -y opnfv-undercloud opnfv-common sudo yum downgrade -y $RPM_INSTALL_PATH fi fi else sudo yum install -y $RPM_LIST; fi DEPLOY_CMD=opnfv-deploy DEPLOY_FILE="/etc/opnfv-apex/${DEPLOY_SCENARIO}.yaml" NETWORK_FILE="/etc/opnfv-apex/network_settings.yaml" fi if [ "$OPNFV_CLEAN" == 'yes' ]; then sudo ./clean.sh fi # initiate virtual deployment echo "Deploy Scenario set to ${DEPLOY_SCENARIO}" if [ -e $DEPLOY_FILE ]; then sudo $DEPLOY_CMD -v -d ${DEPLOY_FILE} -n $NETWORK_FILE --debug else echo "File does not exist /etc/opnfv-apex/${DEPLOY_SCENARIO}.yaml" exit 1 fi echo echo "--------------------------------------------------------" echo "Done!" - builder: name: 'apex-deploy-baremetal' builders: - shell: | #!/bin/bash set -o errexit set -o nounset set -o pipefail # log info to console echo "Starting the Apex baremetal deployment." echo "--------------------------------------------------------" echo if [[ ! "$ARTIFACT_NAME" == "latest" ]]; then # if artifact name is passed the pull a # specific artifact from artifacts.opnfv.org RPM_INSTALL_PATH=$GS_URL/$ARTIFACT_NAME else if [[ $BUILD_DIRECTORY == *apex-build* ]]; then BUILD_DIRECTORY=$WORKSPACE/../$BUILD_DIRECTORY echo "BUILD DIRECTORY modified to $BUILD_DIRECTORY" fi if [[ -f ${BUILD_DIRECTORY}/../opnfv.properties ]]; then # if opnfv.properties exists then use the # local build. Source the file so we get local OPNFV vars source ${BUILD_DIRECTORY}/../opnfv.properties RPM_INSTALL_PATH=${BUILD_DIRECTORY}/$(basename $OPNFV_RPM_URL) else # no opnfv.properties means use the latest from artifacts.opnfv.org # get the latest.properties to get the link to the latest artifact curl -s -o $WORKSPACE/opnfv.properties http://$GS_URL/latest.properties [[ -f opnfv.properties ]] || exit 1 # source the file so we get OPNFV vars source opnfv.properties RPM_INSTALL_PATH=$OPNFV_RPM_URL fi fi if [ ! -e "$RPM_INSTALL_PATH" ]; then RPM_INSTALL_PATH=http://${OPNFV_RPM_URL} fi RPM_LIST=$RPM_INSTALL_PATH for pkg in common undercloud; do RPM_LIST+=" ${RPM_INSTALL_PATH/opnfv-apex/opnfv-apex-${pkg}}" done # update / install the new rpm if rpm -q opnfv-apex > /dev/null; then if [ $(basename $OPNFV_RPM_URL) == $(rpm -q opnfv-apex).rpm ]; then echo "RPM is already installed" elif sudo yum update -y $RPM_LIST | grep "does not update installed package"; then if ! sudo yum downgrade -y $RPM_LIST; then sudo yum remove -y opnfv-undercloud opnfv-common sudo yum downgrade -y $RPM_INSTALL_PATH fi fi else sudo yum install -y $RPM_LIST; fi # cleanup environment before we start sudo opnfv-clean # initiate baremetal deployment if [ -e /etc/opnfv-apex/network_settings.yaml ]; then if [ -n "$DEPLOY_SCENARIO" ]; then echo "Deploy Scenario set to ${DEPLOY_SCENARIO}" if [ -e /etc/opnfv-apex/${DEPLOY_SCENARIO}.yaml ]; then sudo opnfv-deploy -i /root/inventory/pod_settings.yaml \ -d /etc/opnfv-apex/${DEPLOY_SCENARIO}.yaml \ -n /root/network/network_settings.yaml --debug else echo "File does not exist /etc/opnfv-apex/${DEPLOY_SCENARIO}.yaml" exit 1 fi else echo "Deploy scenario not set!" exit 1 fi else echo "File /etc/opnfv-apex/network_settings.yaml does not exist!" exit 1 fi echo echo "--------------------------------------------------------" echo "Done!" ####################### # trigger macros ######################## - trigger: name: 'apex-master' triggers: - timed: '0 3 * 12 *' - trigger: name: 'apex-brahmaputra' triggers: - timed: '0 3 * * *'