- project: name: apex jobs: - 'apex-verify-{stream1}' - 'apex-verify-{stream2}' - 'apex-runner-{platform}-{scenario}-{stream}' - 'apex-build-{stream}' - 'apex-deploy-virtual-{scenario}-{stream}' - 'apex-deploy-baremetal-{scenario}-{stream}' - 'apex-daily-{stream1}' - 'apex-daily-{stream2}' # 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' verify-slave: 'apex-verify-master' daily-slave: 'apex-daily-master' - brahmaputra: branch: 'stable/brahmaputra' gs-pathname: '/brahmaputra' block-stream: 'master' slave: 'opnfv-jump-1' verify-slave: 'apex-verify-brahmaputra' daily-slave: 'apex-daily-brahmaputra' disabled: true stream1: - master: branch: 'master' gs-pathname: '' block-stream: 'brahmaputra' slave: 'intel-pod7' verify-slave: 'apex-verify-master' daily-slave: 'apex-daily-master' stream2: - brahmaputra: branch: 'stable/brahmaputra' gs-pathname: '/brahmaputra' block-stream: 'master' slave: 'opnfv-jump-1' verify-slave: 'apex-verify-brahmaputra' daily-slave: 'apex-daily-brahmaputra' disabled: true project: 'apex' scenario: - 'os-nosdn-nofeature-ha' - 'os-odl_l2-nofeature-ha' - 'os-odl_l2-bgpvpn-ha' - 'os-odl_l2-sfc-noha' - 'os-odl_l3-nofeature-ha' - 'os-onos-nofeature-ha' - 'os-opencontrail-nofeature-ha' platform: - 'baremetal' - 'virtual' # Brahmaputra Verify - job-template: name: 'apex-verify-{stream2}' 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.*{stream2}' - 'apex-deploy.*{stream2}' - 'apex-build.*{stream2}' - 'apex-runner.*{stream2}' - 'apex-verify-{stream2}' builders: - 'apex-build' - trigger-builds: - project: 'apex-deploy-virtual-os-odl_l2-nofeature-ha-{stream2}' predefined-parameters: | BUILD_DIRECTORY=apex-verify-{stream2}/build_output OPNFV_CLEAN=yes git-revision: false block: true - trigger-builds: - project: 'apex-deploy-virtual-os-onos-nofeature-ha-{stream2}' predefined-parameters: | BUILD_DIRECTORY=apex-verify-{stream2}/build_output OPNFV_CLEAN=yes git-revision: false block: true - trigger-builds: - project: 'apex-deploy-virtual-os-odl_l3-nofeature-ha-{stream2}' predefined-parameters: | BUILD_DIRECTORY=apex-verify-{stream2}/build_output OPNFV_CLEAN=yes git-revision: false block: true - trigger-builds: - project: 'apex-deploy-virtual-os-odl_l2-sfc-noha-{stream2}' predefined-parameters: | BUILD_DIRECTORY=apex-verify-{stream2}/build_output OPNFV_CLEAN=yes git-revision: false block: true - 'apex-workspace-cleanup' # Master Verify - job-template: name: 'apex-verify-{stream1}' node: '{verify-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.*{stream1}' - 'apex-deploy.*{stream1}' - 'apex-build.*{stream1}' - 'apex-runner.*{stream1}' - 'apex-verify-{stream1}' builders: - 'apex-build' - trigger-builds: - project: 'apex-deploy-virtual-os-nosdn-nofeature-ha-{stream1}' predefined-parameters: | BUILD_DIRECTORY=apex-verify-{stream1} OPNFV_CLEAN=yes git-revision: false block: true same-node: true # - trigger-builds: # - project: 'functest-apex-{verify-slave}-suite-{stream1}' # predefined-parameters: | # DEPLOY_SCENARIO=os-nosdn-nofeature-ha # FUNCTEST_SUITE_NAME=vping_userdata # block: true # same-node: true - trigger-builds: - project: 'apex-deploy-virtual-os-odl_l2-nofeature-ha-{stream1}' predefined-parameters: | BUILD_DIRECTORY=apex-verify-{stream1} OPNFV_CLEAN=yes git-revision: false block: true same-node: true - 'apex-workspace-cleanup' - job-template: name: 'apex-runner-{platform}-{scenario}-{stream}' # runner jobs for deploying manually node: '{slave}' 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.*{stream}' - 'apex-verify.*{stream}' builders: - trigger-builds: - project: 'apex-deploy-{platform}-{scenario}-{stream}' predefined-parameters: OPNFV_CLEAN=yes git-revision: false block: true - trigger-builds: - project: 'yardstick-apex-{slave}-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-{slave}-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: '{daily-slave}' 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.*{stream}' builders: - 'apex-build' - trigger-builds: - project: 'apex-deploy-virtual-os-nosdn-nofeature-ha-{stream}' predefined-parameters: | BUILD_DIRECTORY=apex-build-{stream}/build OPNFV_CLEAN=yes git-revision: false same-node: true 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." - 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" properties: - build-blocker: use-build-blocker: true blocking-jobs: - 'apex-deploy.*{stream}' 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: '{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-verify.*{stream}' - 'apex-deploy.*{stream}' - 'apex-build.*{stream}' builders: - 'apex-deploy-baremetal' - 'apex-workspace-cleanup' # Brahmaputra Daily - job-template: name: 'apex-daily-{stream2}' # Job template for daily build # # Required Variables: # stream: branch with - in place of / (eg. stable) # branch: branch (eg. stable) node: '{slave}' disabled: true 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.*{stream2}' - 'apex-deploy.*{stream2}' - 'apex-build.*{stream2}' - 'apex-runner.*{stream2}' triggers: - 'apex-{stream2}' builders: - trigger-builds: - project: 'apex-build-{stream2}' git-revision: true current-parameters: true block: true - trigger-builds: - project: 'apex-deploy-baremetal-os-odl_l2-nofeature-ha-{stream2}' predefined-parameters: | BUILD_DIRECTORY=apex-build-{stream2}/build_output OPNFV_CLEAN=yes git-revision: true block: true - trigger-builds: - project: 'functest-apex-{slave}-daily-{stream2}' 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-{slave}-daily-{stream2}' 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-{stream2}' predefined-parameters: BUILD_DIRECTORY=apex-build-{stream2}/build_output git-revision: true block: true - trigger-builds: - project: 'functest-apex-{slave}-daily-{stream2}' 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-{slave}-daily-{stream2}' 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-{stream2}' predefined-parameters: BUILD_DIRECTORY=apex-build-{stream2}/build_output git-revision: true block: true - trigger-builds: - project: 'functest-apex-{slave}-daily-{stream2}' 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-{slave}-daily-{stream2}' 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: 'apex-deploy-baremetal-os-odl_l2-bgpvpn-ha-{stream2}' predefined-parameters: BUILD_DIRECTORY=apex-build-{stream2}/build_output git-revision: true block: true - trigger-builds: - project: 'functest-apex-{slave}-daily-{stream2}' predefined-parameters: DEPLOY_SCENARIO=os-odl_l2-bgpvpn-ha block: true block-thresholds: build-step-failure-threshold: 'never' failure-threshold: 'never' unstable-threshold: 'FAILURE' - trigger-builds: - project: 'yardstick-apex-{slave}-daily-{stream2}' predefined-parameters: DEPLOY_SCENARIO=os-odl_l2-bgpvpn-ha block: true block-thresholds: build-step-failure-threshold: 'never' failure-threshold: 'never' unstable-threshold: 'FAILURE' # Master Daily - job-template: name: 'apex-daily-{stream1}' # Job template for daily build # # Required Variables: # stream: branch with - in place of / (eg. stable) # branch: branch (eg. stable) node: '{daily-slave}' 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.*{stream1}' - 'apex-deploy.*{stream1}' - 'apex-build.*{stream1}' - 'apex-runner.*{stream1}' triggers: - 'apex-{stream1}' builders: - trigger-builds: - project: 'apex-build-{stream1}' git-revision: true current-parameters: true same-node: true block: true - trigger-builds: - project: 'apex-deploy-virtual-nosdn-nofeature-ha-{stream1}' predefined-parameters: | BUILD_DIRECTORY=apex-build-{stream1}/build OPNFV_CLEAN=yes git-revision: true same-node: true block: true - trigger-builds: - project: 'functest-apex-{slave}-daily-{stream1}' predefined-parameters: DEPLOY_SCENARIO=os-nosdn-nofeature-ha block: true same-node: true block-thresholds: build-step-failure-threshold: 'never' failure-threshold: 'never' unstable-threshold: 'FAILURE' - trigger-builds: - project: 'yardstick-apex-{slave}-daily-{stream1}' predefined-parameters: DEPLOY_SCENARIO=os-nosdn-nofeature-ha block: true same-node: true block-thresholds: build-step-failure-threshold: 'never' failure-threshold: 'never' unstable-threshold: 'FAILURE' - job-template: name: 'apex-gs-clean-{stream}' # Job template for clean # # Required Variables: # stream: branch with - in place of / (eg. stable) node: '{slave}' disabled: false parameters: - project-parameter: project: '{project}' - apex-parameter: gs-pathname: '{gs-pathname}' builders: - 'apex-gs-clean' triggers: - 'apex-gs-clean-{stream}' ######################## # 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 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." ######################## # 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="-v $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY" else export OPNFV_ARTIFACT_VERSION=dev${BUILD_NUMBER} export BUILD_ARGS="-r $OPNFV_ARTIFACT_VERSION -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="-v $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY" else export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d") export BUILD_ARGS="-r $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY --iso" fi else export OPNFV_ARTIFACT_VERSION=${ARTIFACT_VERSION} if echo $GERRIT_BRANCH | grep "brahmaputra" 1> /dev/null; then export BUILD_ARGS="-v $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY" else export BUILD_ARGS="-r $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY --iso" fi fi # clean for stable but doesn't matter for master if echo $GERRIT_BRANCH | grep "brahmaputra" 1> /dev/null; then sudo opnfv-clean fi # start the build cd $WORKSPACE/ci ./build.sh $BUILD_ARGS RPM_VERSION=$(grep Version: $BUILD_DIRECTORY/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/release/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/noarch/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 sudo /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/release/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/noarch RPM_LIST=$RPM_INSTALL_PATH/$(basename $OPNFV_RPM_URL) VERSION_EXTENSION=$(echo $(basename $OPNFV_RPM_URL) | sed 's/opnfv-apex-//') for pkg in common undercloud opendaylight-sfc onos; do RPM_LIST+=" ${RPM_INSTALL_PATH}/opnfv-apex-${pkg}-${VERSION_EXTENSION}" done SRPM_INSTALL_PATH=$BUILD_DIRECTORY SRPM_LIST=$SRPM_INSTALL_PATH/$(basename $OPNFV_SRPM_URL) for pkg in common undercloud opendaylight-sfc onos; do SRPM_LIST+=" ${SRPM_INSTALL_PATH}/opnfv-apex-${pkg}-${VERSION_EXTENSION}" 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-gs-cleanup' builders: - shell: | #!/bin/bash set -o errexit set -o nounset set -o pipefail # log info to console echo "Cleaning Google Storage" echo "-----------------------" echo thirty_days_ago=$(date -d "30 days ago" +"%Y%m%d") for i in $(gsutil ls gs://$GS_URL/*201?*); do filedate=$(date -d "$(echo $i | grep -Eo 201[0-9]-?[0-9][0-9]-?[0-9][0-9])" +"%Y%m%d") if [ $filedate -lt $thirty_days_ago ]; then # gsutil indicates what it is removing so no need for output here gsutil rm $i fi done - 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 [[ $BUILD_DIRECTORY == *verify-master* ]]; then cd $WORKSPACE/../${BUILD_DIRECTORY/build_output/} WORKSPACE=$(pwd) echo "WORKSPACE modified to $WORKSPACE" cd $WORKSPACE/ci elif [[ ! "$ARTIFACT_NAME" == "latest" ]]; then # if artifact name is passed the pull a # specific artifact from artifacts.opnfv.org RPM_INSTALL_PATH=$GS_URL RPM_LIST=$RPM_INSTALL_PATH/$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}/noarch RPM_LIST=$RPM_INSTALL_PATH/$(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=$(echo $OPNFV_RPM_URL | sed 's/'"$(basename $OPNFV_RPM_URL)"'//') RPM_LIST=$RPM_INSTALL_PATH/$(basename $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-master* ]]; then if [ ! -e "${WORKSPACE}/build/lib" ]; then ln -s ${WORKSPACE}/lib ${WORKSPACE}/build/lib; fi DEPLOY_CMD="CONFIG=${WORKSPACE}/build RESOURCES=${WORKSPACE}/build/images/ ./deploy.sh -c ${WORKSPACE}/build -r ${WORKSPACE}/build/images/" DEPLOY_FILE="${WORKSPACE}/config/deploy/${DEPLOY_SCENARIO}.yaml" NETWORK_FILE="${WORKSPACE}/config/network/network_settings.yaml" # Make sure python34 is installed if ! rpm -q python34 > /dev/null; then sudo yum install -y epel-release if ! sudo yum install -y python34; then echo "Failed to install python34" exit 1 fi fi if ! rpm -q python34-PyYAML > /dev/null; then sudo yum install -y epel-release if ! sudo yum install -y python34-PyYAML; then echo "Failed to install python34-PyYAML" exit 1 fi fi if ! rpm -q python34-setuptools > /dev/null; then if ! sudo yum install -y python34-setuptools; then echo "Failed to install python34-setuptools" exit 1 fi fi if [ -z ${PYTHONPATH:-} ]; then export PYTHONPATH=${WORKSPACE}/lib/python else export PYTHONPATH=$PYTHONPATH:${WORKSPACE}/lib/python fi else VERSION_EXTENSION=$(echo $(basename $RPM_LIST) | sed 's/opnfv-apex-//') for pkg in common undercloud opendaylight-sfc onos; do RPM_LIST+=" ${RPM_INSTALL_PATH}/opnfv-apex-${pkg}-${VERSION_EXTENSION}" done # update / install the new rpm if rpm -q opnfv-apex > /dev/null; then INSTALLED_RPMS=$(rpm -qa | grep apex) for x in $INSTALLED_RPMS; do INSTALLED_RPM_VER=$(echo $x | sed 's/opnfv-apex-//').rpm # Does each RPM's version match the version required for deployment if [ "$INSTALLED_RPM_VER" == "$VERSION_EXTENSION" ]; then echo "RPM $x is already installed" else echo "RPM $x does not match $VERSION_EXTENSION" echo "Will upgrade/downgrade RPMs..." # Try to upgrade/downgrade RPMS if 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-apex-undercloud opnfv-apex-common opnfv-apex-opendaylight-sfc opnfv-apex-onos sudo yum downgrade -y $RPM_INSTALL_PATH fi fi break fi done 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" export RESOURCES="/var/opt/opnfv/images" export CONFIG="/var/opt/opnfv" fi if [ "$OPNFV_CLEAN" == 'yes' ]; then if [[ $BUILD_DIRECTORY == *verify-master* ]]; then sudo CONFIG=../lib ./clean.sh else sudo opnfv-clean fi 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 * * *' - trigger: name: 'apex-brahmaputra' triggers: - timed: '0 3 * * *' - trigger: name: 'apex-gs-clean-{stream}' triggers: - timed: '0 2 * * *'