X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=jjb%2Fgenesis%2Fgenesis-foreman.yml;h=9c212ace1396fdac82c8ad21ecb6fac4ed4d99a4;hb=873d222ce9eb486b178d29c12ccbc7a856ac2233;hp=8da32797db6b30ee484dff8353f90d5d437c5954;hpb=f6c70027ebec861ade8ee006f077a5da88ee45f7;p=releng.git diff --git a/jjb/genesis/genesis-foreman.yml b/jjb/genesis/genesis-foreman.yml index 8da32797d..9c212ace1 100644 --- a/jjb/genesis/genesis-foreman.yml +++ b/jjb/genesis/genesis-foreman.yml @@ -1,73 +1,67 @@ -# this is the job configuration for bgs +######################## +# Job configuration for genesis/foreman +######################## - project: name: genesis-foreman project: 'genesis' - installer: - - foreman + installer: 'foreman' jobs: - - 'genesis-{installer}-verify' - - 'genesis-{installer}-merge' - - 'genesis-{installer}-daily-{stream}' - - 'genesis-{installer}-build' - - 'genesis-{installer}-deploy' - - # stream: branch with - in place of / (eg. stable-helium) - # branch: branch (eg. stable/helium) + - 'genesis-foreman-verify-build-{stream}' + - 'genesis-foreman-merge-{stream}' + - 'genesis-foreman-daily-{stream}' + - 'genesis-foreman-build-{stream}' + - 'genesis-foreman-deploy-{stream}' + - 'genesis-foreman-lab-reconfig-{stream}' + - 'genesis-foreman-deploy-runner-{stream}' + - 'genesis-foreman-verify-deploy-virtual-{stream}' + + # stream: branch with - in place of / (eg. stable-arno) + # branch: branch (eg. stable/arno) stream: - master: branch: 'master' - - + gs-pathname: '' + disabled: true + - stable-arno: + branch: 'stable/arno' + gs-pathname: '/arno' + disabled: true ######################## # job templates ######################## - job-template: - name: 'genesis-{installer}-verify' + name: 'genesis-foreman-verify-build-{stream}' - project-type: freestyle + disabled: true node: ericsson-build - logrotate: - daysToKeep: 30 - numToKeep: 10 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 + concurrent: true + + properties: + - throttle: + enabled: true + max-total: 1 parameters: - - string: - name: INSTALLER - default: '{installer}' - description: "Installer to use." - - string: - name: BUILD_DIRECTORY - default: $WORKSPACE/build_output - - string: - name: CACHE_DIRECTORY - default: '$HOME/opnfv/cache/genesis-{installer}' - - string: - name: GIT_BASE - default: https://gerrit.opnfv.org/gerrit/genesis - project-parameter: project: '{project}' - gerrit-parameter: - branch: 'master' - + branch: '{branch}' + - foreman-parameter: + installer: '{installer}' + gs-pathname: '{gs-pathname}' scm: - gerrit-trigger-scm: credentials-id: '{ssh-credentials}' refspec: '$GERRIT_REFSPEC' choosing-strategy: 'gerrit' - wrappers: - - ssh-agent-credentials: - user: '{ssh-credentials}' - triggers: - gerrit: trigger-on: @@ -85,63 +79,60 @@ project-pattern: 'genesis' branches: - branch-compare-type: 'ANT' - branch-pattern: '**/master' + branch-pattern: '**/{branch}' file-paths: - compare-type: ANT - pattern: 'common/**' + pattern: 'common/ci/**' - compare-type: ANT - pattern: '{installer}/**' - + pattern: 'common/manifests/**' + - compare-type: ANT + pattern: 'common/puppet-opnfv/**' + - compare-type: ANT + pattern: 'common/tools/**' + - compare-type: ANT + pattern: '{installer}/build/**' + - compare-type: ANT + pattern: '{installer}/ci/**' + - compare-type: ANT + pattern: '{installer}/include/**' + forbidden-file-paths: + - compare-type: ANT + pattern: 'common/docs/**' + - compare-type: ANT + pattern: '{installer}/docs/**' builders: - - 'verify' + - 'foreman-build' + - 'foreman-workspace-cleanup' - job-template: - name: 'genesis-{installer}-merge' + name: 'genesis-foreman-merge-{stream}' - # builder-merge job to run JJB update - # - # This job's purpose is to update all the JJB + node: ericsson-build - project-type: freestyle + disabled: true - node: ericsson-build + concurrent: true - logrotate: - daysToKeep: 30 - numToKeep: 40 - artifactDaysToKeep: -1 - artifactNumToKeep: 5 + properties: + - throttle: + enabled: true + max-total: 2 parameters: - - string: - name: INSTALLER - default: '{installer}' - description: "Installer to use." - - string: - name: BUILD_DIRECTORY - default: $WORKSPACE/build_output - - string: - name: CACHE_DIRECTORY - default: '$HOME/opnfv/cache/genesis-{installer}' - - string: - name: GIT_BASE - default: https://gerrit.opnfv.org/gerrit/genesis - project-parameter: project: '{project}' - gerrit-parameter: - branch: 'master' - + branch: '{branch}' + - foreman-parameter: + installer: '{installer}' + gs-pathname: '' scm: - gerrit-trigger-scm: credentials-id: '{ssh-credentials}' refspec: '' choosing-strategy: 'default' - wrappers: - - ssh-agent-credentials: - user: '{ssh-credentials}' - triggers: - gerrit: trigger-on: @@ -152,124 +143,281 @@ - project-compare-type: 'ANT' project-pattern: 'genesis' branches: - - branch-compare-type: 'ANT' - branch-pattern: '**/master' + - branch-compare-type: 'ANT' + branch-pattern: '**/{branch}' file-paths: - compare-type: ANT - pattern: 'common/**' + pattern: 'common/ci/**' + - compare-type: ANT + pattern: 'common/manifests/**' + - compare-type: ANT + pattern: 'common/puppet-opnfv/**' - compare-type: ANT - pattern: '{installer}/**' + pattern: 'common/tools/**' + - compare-type: ANT + pattern: '{installer}/build/**' + - compare-type: ANT + pattern: '{installer}/ci/**' + - compare-type: ANT + pattern: '{installer}/include/**' + forbidden-file-paths: + - compare-type: ANT + pattern: 'common/docs/**' + - compare-type: ANT + pattern: '{installer}/docs/**' builders: - - 'merge' + - 'foreman-build' + - 'foreman-workspace-cleanup' - job-template: - name: 'genesis-{installer}-daily-{stream}' - - project-type: freestyle + name: 'genesis-foreman-daily-{stream}' node: ericsson-build disabled: true + triggers: + - 'foreman-{stream}' + parameters: - - genesis-parameters: + - project-parameter: + project: '{project}' + - foreman-parameter: installer: '{installer}' + gs-pathname: '{gs-pathname}' scm: - - git: - skip-tag: true - url: $GIT_BASE - branches: - - $GERRIT_BRANCH - refspec: $GERRIT_REFSPEC - - triggers: - - pollscm: '@midnight' - - logrotate: - daysToKeep: 30 - numToKeep: 10 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 + - git-scm: + credentials-id: '{ssh-credentials}' + refspec: '' + branch: '{branch}' builders: - trigger-builds: - - project: 'genesis-{installer}-build' + - project: 'genesis-foreman-build-{stream}' + git-revision: true + block: true + - trigger-builds: + - project: 'genesis-foreman-lab-reconfig-{stream}' git-revision: true block: true - trigger-builds: - - project: 'genesis-{installer}-deploy' + - project: 'genesis-foreman-deploy-{stream}' git-revision: true block: true - trigger-builds: - - project: 'functest-opnfv-jump-2' + - project: 'functest-foreman-{stream}' block: true + block-thresholds: + build-step-failure-threshold: 'never' + failure-threshold: 'never' + unstable-threshold: 'FAILURE' + # - trigger-builds: + # - project: 'yardstick-foreman-{stream}' + # block: true + # block-thresholds: + # build-step-failure-threshold: 'never' + # failure-threshold: 'never' + # unstable-threshold: 'FAILURE' + + publishers: + - trigger-parameterized-builds: + - project: 'genesis-fuel-daily-{stream}' + trigger-with-no-params: true - job-template: - name: 'genesis-{installer}-build' + name: 'genesis-foreman-deploy-runner-{stream}' + + disabled: true + + parameters: + - project-parameter: + project: '{project}' + - foreman-parameter: + installer: '{installer}' + gs-pathname: '{gs-pathname}' + - string: + name: GIT_BASE + default: ssh://gerrit.opnfv.org:29418/$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: + - "genesis-fuel-daily.*" + - "genesis-fuel-deploy-runner-{stream}" + - "genesis-foreman-daily.*" + + builders: + - 'foreman-lab-reconfig' + - trigger-builds: + - project: 'genesis-foreman-deploy-{stream}' + git-revision: true + block: true - project-type: freestyle +- job-template: + name: 'genesis-foreman-build-{stream}' node: ericsson-build - logrotate: - daysToKeep: 30 - numToKeep: 10 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 + disabled: true parameters: - - genesis-parameters: + - project-parameter: + project: '{project}' + - foreman-parameter: installer: '{installer}' - + gs-pathname: '{gs-pathname}' scm: - - git: - skip-tag: true - url: $GIT_BASE - branches: - - $GERRIT_BRANCH - refspec: $GERRIT_REFSPEC + - git-scm: + credentials-id: '{ssh-credentials}' + refspec: '' + branch: '{branch}' builders: - - 'build' - - 'upload-artifact' + - 'foreman-build' + - 'foreman-upload-artifact' + - 'foreman-workspace-cleanup' - job-template: - name: 'genesis-{installer}-deploy' - - project-type: freestyle + name: 'genesis-foreman-deploy-{stream}' disabled: true node: opnfv-jump-2 - logrotate: - daysToKeep: 30 - numToKeep: 10 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 + parameters: + - project-parameter: + project: '{project}' + - foreman-parameter: + installer: '{installer}' + gs-pathname: '{gs-pathname}' + - string: + name: GIT_BASE + default: ssh://gerrit.opnfv.org:29418/$PROJECT + description: "Used for overriding the GIT URL coming from parameters macro." + + scm: + - git-scm: + credentials-id: '{ssh-credentials}' + refspec: '' + branch: '{branch}' + + builders: + - 'foreman-deploy' + +- job-template: + name: 'genesis-foreman-lab-reconfig-{stream}' + + disabled: true parameters: - - genesis-parameters: + - project-parameter: + project: '{project}' + - foreman-parameter: installer: '{installer}' + gs-pathname: '{gs-pathname}' + - string: + name: GIT_BASE + default: ssh://gerrit.opnfv.org:29418/$PROJECT + description: "Used for overriding the GIT URL coming from parameters macro." scm: - - git: - skip-tag: true - url: $GIT_BASE - branches: - - $GERRIT_BRANCH - refspec: $GERRIT_REFSPEC + - git-scm: + credentials-id: '{ssh-credentials}' + refspec: '' + branch: '{branch}' + + properties: + - build-blocker: + use-build-blocker: true + blocking-jobs: + - "genesis-fuel-daily.*" builders: - - 'deploy' + - 'foreman-lab-reconfig' + +- job-template: + name: 'genesis-foreman-verify-deploy-virtual-{stream}' + + node: opnfv-jump-1 + + disabled: true + + parameters: + - project-parameter: + project: '{project}' + - gerrit-parameter: + branch: '{branch}' + - foreman-parameter: + installer: '{installer}' + gs-pathname: '{gs-pathname}' + - string: + name: GIT_BASE + default: ssh://gerrit.opnfv.org:29418/$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: '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: 'genesis' + branches: + - branch-compare-type: 'ANT' + branch-pattern: '**/{branch}' + file-paths: + - compare-type: ANT + pattern: 'common/ci/**' + - compare-type: ANT + pattern: 'common/manifests/**' + - compare-type: ANT + pattern: 'common/puppet-opnfv/**' + - compare-type: ANT + pattern: 'common/tools/**' + - compare-type: ANT + pattern: '{installer}/build/**' + - compare-type: ANT + pattern: '{installer}/ci/**' + - compare-type: ANT + pattern: '{installer}/include/**' + forbidden-file-paths: + - compare-type: ANT + pattern: 'common/docs/**' + - compare-type: ANT + pattern: '{installer}/docs/**' + dependency-jobs: 'genesis-foreman-verify-build-{stream}' + + builders: + - 'foreman-deploy-virtual' ######################## # parameter macros ######################## - parameter: - name: genesis-parameters + name: foreman-parameter parameters: - string: name: INSTALLER @@ -281,90 +429,99 @@ description: "Directory where the build artifact will be located upon the completion of the build." - string: name: CACHE_DIRECTORY - default: '$HOME/opnfv/cache/genesis-{installer}' + default: $HOME/opnfv/cache/genesis-$INSTALLER{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/genesis + 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: GERRIT_BRANCH - default: origin/master - description: "Branch to build, deploy and test." - - string: - name: GERRIT_REFSPEC - default: refs/heads/master - description: "Refspec to retrieve." - string: name: GS_URL - default: 'artifacts.opnfv.org/genesis/{installer}' + default: artifacts.opnfv.org/$PROJECT/$INSTALLER{gs-pathname} description: "URL to Google Storage." ######################## # builder macros ######################## - builder: - name: 'verify' + name: 'foreman-lab-reconfig' builders: - shell: | #!/bin/bash set -o errexit set -o nounset set -o pipefail - set -x - - # get the dependencies - temporary fix for RC0 - [[ -d $WORKSPACE/$INSTALLER/build ]] || mkdir -p $WORKSPACE/$INSTALLER/build - cp /home/jenkins/Downloads/opnfv_iso/* $WORKSPACE/$INSTALLER/build/ - # below lines perhaps need to be enabled in order to fetch images from internet - # as we are having disk space issues on ericsson-build slave - #wget http://ftp.riken.jp/Linux/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-Minimal.iso - #wget http://download.virtualbox.org/virtualbox/rpm/fedora/20/x86_64/VirtualBox-4.3-4.3.26_98988_fedora18-1.x86_64.rpm - #wget http://repos.duss-janser.ch/vagrant/vagrant_1.7.2_x86_64.rpm + # check to see if ucs login info file exists + if [ -e ~/.ssh/ucs_creds ];then + source ~/.ssh/ucs_creds + else + echo "Unable to find UCS credentials for LF lab reconfiguration...Exiting" + exit 1 + fi + + # clone releng + echo "Cloning releng repo..." + if ! GIT_SSL_NO_VERIFY=true git clone https://gerrit.opnfv.org/gerrit/releng; then + echo "Unable to clone releng repo...Exiting" + exit 1 + fi - # do the build - cd $WORKSPACE/$INSTALLER/ci - ./build.sh $BUILD_DIRECTORY - - # list the build artifacts - ls -al $BUILD_DIRECTORY + # log info to console + echo "Starting the lab reconfiguration for $INSTALLER..." + echo "--------------------------------------------------------" + echo - # remove the BUILD_DIRECTORY to reclaim some space - /bin/rm -rf $BUILD_DIRECTORY + # create venv + $WORKSPACE/releng/utils/lab-reconfiguration/create_venv.sh -- builder: - name: 'merge' - builders: - - shell: | - #!/bin/bash - set -o errexit + # disable nounset because 'activate' script contains unbound variable(s) + set +o nounset + # enter venv + source $WORKSPACE/releng/utils/lab-reconfiguration/venv/bin/activate + # set nounset back again set -o nounset - set -o pipefail - set -x - - # get the dependencies - temporary fix for RC0 - [[ -d $WORKSPACE/$INSTALLER/build ]] || mkdir -p $WORKSPACE/$INSTALLER/build - cp /home/jenkins/Downloads/opnfv_iso/* $WORKSPACE/$INSTALLER/build/ - - # below lines perhaps need to be enabled in order to fetch images from internet - # as we are having disk space issues on ericsson-build slave - #wget http://ftp.riken.jp/Linux/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-Minimal.iso - #wget http://download.virtualbox.org/virtualbox/rpm/fedora/20/x86_64/VirtualBox-4.3-4.3.26_98988_fedora18-1.x86_64.rpm - #wget http://repos.duss-janser.ch/vagrant/vagrant_1.7.2_x86_64.rpm - - # do the build - cd $WORKSPACE/$INSTALLER/ci - ./build.sh $BUILD_DIRECTORY - # list the build artifacts - ls -al $BUILD_DIRECTORY + # verify we are in venv + if [[ ! $(which python | grep venv) ]]; then + echo "Unable to activate venv...Exiting" + exit 1 + fi + + python $WORKSPACE/releng/utils/lab-reconfiguration/reconfigUcsNet.py -i $ucs_host -u $ucs_user -p $ucs_password -f $WORKSPACE/releng/utils/lab-reconfiguration/foreman.yaml + + # while undergoing reboot + sleep 30 + + # check to see if slave is back up + ping_counter=0 + ping_flag=0 + while [ "$ping_counter" -lt 20 ]; do + if [[ $(ping -c 5 172.30.10.72) ]]; then + ping_flag=1 + break + fi + ((ping_counter++)) + sleep 10 + done + + if [ "$ping_flag" -eq 1 ]; then + echo "Slave is pingable, now wait 180 seconds for services to start" + sleep 180 + else + echo "Slave did not come back up after reboot: please check opnfv-jump-2" + exit 1 + fi + + set +o nounset + deactivate - # remove the BUILD_DIRECTORY to reclaim some space - /bin/rm -rf $BUILD_DIRECTORY + echo + echo "--------------------------------------------------------" + echo "Done!" - builder: - name: 'build' + name: 'foreman-build' builders: - shell: | #!/bin/bash @@ -373,7 +530,7 @@ set -o pipefail # log info to console - echo "Starting build of $INSTALLER. This could take some time..." + echo "Starting the build of $INSTALLER. This could take some time..." echo "--------------------------------------------------------" echo @@ -387,6 +544,9 @@ cd $WORKSPACE/$INSTALLER/ci ./build.sh -v $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY + # list the contents of BUILD_OUTPUT directory + ls -al $BUILD_DIRECTORY + # save information regarding artifact into file ( echo "OPNFV_ARTIFACT_VERSION=$OPNFV_ARTIFACT_VERSION" @@ -395,7 +555,6 @@ 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_BUILD_URL=$BUILD_URL" - echo "OPNFV_BUILD=OK" ) > $WORKSPACE/opnfv.properties echo @@ -403,7 +562,7 @@ echo "Done!" - builder: - name: 'deploy' + name: 'foreman-deploy' builders: - shell: | #!/bin/bash @@ -412,12 +571,15 @@ set -o pipefail # log info to console - echo "Startint the deployment. This could take some time..." + echo "Starting the deployment using $INSTALLER. This could take some time..." echo "--------------------------------------------------------" echo # cleanup first - sudo $WORKSPACE/$INSTALLER/ci/clean.sh -base_config $WORKSPACE/$INSTALLER/ci/inventory/lf_pod2_ksgen_settings.yml + sudo $WORKSPACE/common/ci/clean.sh -base_config $WORKSPACE/$INSTALLER/ci/inventory/lf_pod2_ksgen_settings.yml + + echo "Sleeping for 60 seconds between clean and deploy to allow nodes to power off" + sleep 60 # and then initiate deployment sudo $WORKSPACE/$INSTALLER/ci/deploy.sh -base_config $WORKSPACE/$INSTALLER/ci/inventory/lf_pod2_ksgen_settings.yml @@ -427,7 +589,7 @@ echo "Done!" - builder: - name: 'upload-artifact' + name: 'foreman-deploy-virtual' builders: - shell: | #!/bin/bash @@ -436,25 +598,68 @@ set -o pipefail # log info to console - echo "Uploading artifact. This could take some time..." + echo "Starting the virtual deployment using $INSTALLER. This could take some time..." echo "--------------------------------------------------------" echo - # list the build output - ls -al $BUILD_DIRECTORY + # cleanup baremetal first (in case baremetal was being used on pod2, remove when moved to isolated Virtual pod) + sudo $WORKSPACE/common/ci/clean.sh + + # initiate virtual deployment + sudo $WORKSPACE/$INSTALLER/ci/deploy.sh -virtual + + echo + echo "--------------------------------------------------------" + echo "Done!" + +- builder: + name: 'foreman-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 $WORKSPACE/opnfv.properties - # copy artifact property file as latest.properties - # so we can directly get info regarding latest artifact - /bin/cp -f $WORKSPACE/opnfv.properties $WORKSPACE/latest.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 gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.properties > gsutil.properties.log 2>&1 - gsutil cp $WORKSPACE/latest.properties gs://$GS_URL/latest.properties > gsutil.latest.log 2>&1 + gsutil cp $WORKSPACE/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: 'foreman-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 + +######################## +# trigger macros +######################## +- trigger: + name: 'foreman-master' + triggers: + - timed: '0 11 * * *' + +- trigger: + name: 'foreman-stable-arno' + triggers: + - timed: '0 12 * * *'