X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=jjb%2Fgenesis%2Fgenesis-foreman.yml;h=fc10b41ebb26142bc4f3a91868fe79bfec142bf9;hb=c99d7859e948673fcbfd6e32b36ae2b6272bc3cd;hp=c63b42396a5f7e2c97a1beb2535e85a111afcb46;hpb=151cfc32953ec4106f2ee5811d9f989302069b50;p=releng.git diff --git a/jjb/genesis/genesis-foreman.yml b/jjb/genesis/genesis-foreman.yml index c63b42396..fc10b41eb 100644 --- a/jjb/genesis/genesis-foreman.yml +++ b/jjb/genesis/genesis-foreman.yml @@ -1,23 +1,25 @@ -# this is the job configuration for bgs +######################## +# Job configuration for genesis/foreman +######################## - project: name: genesis-foreman - installer: - - foreman + project: 'genesis' + + installer: 'foreman' + jobs: - 'genesis-foreman-verify' - 'genesis-foreman-merge' - 'genesis-foreman-daily-{stream}' + - 'genesis-foreman-build' + - 'genesis-foreman-deploy' - # stream: branch with - in place of / (eg. stable-helium) - # branch: branch (eg. stable/helium) stream: - master: branch: 'master' - project: 'genesis' - ######################## # job templates ######################## @@ -29,6 +31,13 @@ node: ericsson-build + concurrent: true + + properties: + - throttle: + enabled: true + max-total: 2 + logrotate: daysToKeep: 30 numToKeep: 10 @@ -36,16 +45,12 @@ artifactNumToKeep: -1 parameters: - - string: - name: BUILD_DIRECTORY - default: $WORKSPACE/build_output - - string: - name: GIT_BASE - default: https://gerrit.opnfv.org/gerrit/genesis - project-parameter: project: '{project}' - gerrit-parameter: branch: 'master' + - foreman-parameter: + installer: '{installer}' scm: - gerrit-trigger-scm: @@ -79,23 +84,26 @@ - compare-type: ANT pattern: 'common/**' - compare-type: ANT - pattern: 'foreman/**' - + pattern: '{installer}/**' builders: - - 'foreman-verify' + - 'foreman-build' + - 'foreman-workspace-cleanup' - job-template: name: 'genesis-foreman-merge' - # builder-merge job to run JJB update - # - # This job's purpose is to update all the JJB - project-type: freestyle node: ericsson-build + concurrent: true + + properties: + - throttle: + enabled: true + max-total: 2 + logrotate: daysToKeep: 30 numToKeep: 40 @@ -103,16 +111,12 @@ artifactNumToKeep: 5 parameters: - - string: - name: BUILD_DIRECTORY - default: $WORKSPACE/build_output - - string: - name: GIT_BASE - default: https://gerrit.opnfv.org/gerrit/genesis - project-parameter: project: '{project}' - gerrit-parameter: branch: 'master' + - foreman-parameter: + installer: '{installer}' scm: - gerrit-trigger-scm: @@ -140,10 +144,11 @@ - compare-type: ANT pattern: 'common/**' - compare-type: ANT - pattern: 'foreman/**' + pattern: '{installer}/**' builders: - - 'foreman-merge' + - 'foreman-build' + - 'foreman-workspace-cleanup' - job-template: name: 'genesis-foreman-daily-{stream}' @@ -152,41 +157,19 @@ node: ericsson-build + disabled: false + parameters: - - 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: GS_URL - default: 'artifacts.opnfv.org/genesis/foreman' - description: "URL to Google Storage." - - string: - name: INSTALLER - default: 'foreman' - description: "Installer to use." - - string: - name: GIT_BASE - default: https://gerrit.opnfv.org/gerrit/genesis - - 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." + - project-parameter: + project: '{project}' + - foreman-parameter: + installer: '{installer}' scm: - - git: - skip-tag: true - url: $GIT_BASE - branches: - - $GERRIT_BRANCH - refspec: $GERRIT_REFSPEC - - triggers: - - pollscm: '@midnight' + - git-scm: + credentials-id: '{ssh-credentials}' + refspec: '' + branch: master logrotate: daysToKeep: 30 @@ -195,148 +178,211 @@ artifactNumToKeep: -1 builders: - - 'foreman-daily-master' + - trigger-builds: + - project: 'genesis-foreman-build' + git-revision: true + block: true + - trigger-builds: + - project: 'genesis-foreman-deploy' + git-revision: true + block: true + - trigger-builds: + - project: 'functest-opnfv-jump-2' + block: true +- job-template: + name: 'genesis-foreman-build' + + project-type: freestyle + + node: ericsson-build + + logrotate: + daysToKeep: 30 + numToKeep: 10 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + parameters: + - project-parameter: + project: '{project}' + - foreman-parameter: + installer: '{installer}' + + scm: + - git-scm: + credentials-id: '{ssh-credentials}' + refspec: '' + branch: master -######################## -# builder macros -######################## -- builder: - name: foreman-verify builders: - - shell: | - #!/bin/bash - set -o errexit - set -o nounset - set -o pipefail - set -x + - 'foreman-build' + - 'foreman-upload-artifact' - # get the dependencies - temporary fix for RC0 - [[ -d $WORKSPACE/foreman/build ]] || mkdir -p $WORKSPACE/foreman/build - cp /home/jenkins/Downloads/opnfv_iso/* $WORKSPACE/foreman/build/ +- job-template: + name: 'genesis-foreman-deploy' - # 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 + project-type: freestyle - # do the build - cd $WORKSPACE/foreman/ci - ./build.sh $BUILD_DIRECTORY + disabled: false - # list the build artifacts - ls -al $BUILD_DIRECTORY + node: opnfv-jump-2 + + logrotate: + daysToKeep: 30 + numToKeep: 10 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + parameters: + - project-parameter: + project: '{project}' + - foreman-parameter: + installer: '{installer}' + - 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: master - # remove the BUILD_DIRECTORY to reclaim some space - /bin/rm -rf $BUILD_DIRECTORY + builders: + - 'foreman-deploy' + +######################## +# parameter macros +######################## +- parameter: + name: foreman-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/genesis-$INSTALLER + 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/$INSTALLER + description: "URL to Google Storage." +######################## +# builder macros +######################## - builder: - name: foreman-merge + name: 'foreman-build' builders: - shell: | #!/bin/bash set -o errexit set -o nounset set -o pipefail - set -x - # get the dependencies - temporary fix for RC0 - [[ -d $WORKSPACE/foreman/build ]] || mkdir -p $WORKSPACE/foreman/build - cp /home/jenkins/Downloads/opnfv_iso/* $WORKSPACE/foreman/build/ + # log info to console + echo "Starting the build of $INSTALLER. This could take some time..." + echo "--------------------------------------------------------" + echo - # 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 + # create the cache directory if it doesn't exist + [[ -d $CACHE_DIRECTORY ]] || mkdir -p $CACHE_DIRECTORY - # do the build - cd $WORKSPACE/foreman/ci - ./build.sh $BUILD_DIRECTORY + # set OPNFV_ARTIFACT_VERSION + export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d_%H-%M-%S") - # list the build artifacts + # start the build + 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 - # remove the BUILD_DIRECTORY to reclaim some space - /bin/rm -rf $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_BUILD_URL=$BUILD_URL" + ) > $WORKSPACE/opnfv.properties + + echo + echo "--------------------------------------------------------" + echo "Done!" - builder: - name: foreman-daily-master + name: 'foreman-deploy' builders: - shell: | #!/bin/bash set -o errexit set -o nounset set -o pipefail - set -x - # get the dependencies - temporary fix for RC0 - [[ -d $WORKSPACE/foreman/build ]] || mkdir -p $WORKSPACE/foreman/build - cp /home/jenkins/Downloads/opnfv_iso/* $WORKSPACE/foreman/build/ + # log info to console + 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 - # 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 + # and then initiate deployment + sudo $WORKSPACE/$INSTALLER/ci/deploy.sh -base_config $WORKSPACE/$INSTALLER/ci/inventory/lf_pod2_ksgen_settings.yml - # do the build - cd $WORKSPACE/foreman/ci - ./build.sh -v $BUILD_ID $BUILD_DIRECTORY + echo + echo "--------------------------------------------------------" + echo "Done!" +- builder: + name: 'foreman-upload-artifact' + builders: - shell: | #!/bin/bash set -o errexit set -o nounset set -o pipefail - set -x - # list the build artifacts - ls -al $BUILD_DIRECTORY + # log info to console + echo "Uploading the $INSTALLER artifact. This could take some time..." + echo "--------------------------------------------------------" + echo - cd $BUILD_DIRECTORY - - # save information regarding artifact into file - ( - 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-$BUILD_ID.iso" - echo "OPNFV_BUILD_URL=$BUILD_URL" - echo "OPNFV_BUILD=OK" - ) > opnfv-$BUILD_ID.properties - - # copy artifact property file as latest.properties - # so we can directly get info regarding latest artifact - /bin/cp -f opnfv-$BUILD_ID.properties latest.properties + # source the opnfv.properties to get ARTIFACT_VERSION + source $WORKSPACE/opnfv.properties # upload artifact and additional files to google storage - gsutil cp OPNFV-CentOS-7-x86_64-$BUILD_ID.iso gs://$GS_URL/opnfv-$BUILD_ID.iso - gsutil cp opnfv-$BUILD_ID.properties gs://$GS_URL/opnfv-$BUILD_ID.properties - gsutil cp latest.properties gs://$GS_URL/latest.properties + 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/opnfv.properties gs://$GS_URL/latest.properties > gsutil.latest.log 2>&1 + + echo + echo "--------------------------------------------------------" + echo "Done!" +- builder: + name: 'foreman-workspace-cleanup' + builders: - shell: | #!/bin/bash set -o errexit set -o nounset set -o pipefail - set -x - - # get the latest.properties file in order to get info regarding latest artifact - gsutil cp gs://$GS_URL/latest.properties latest.properties - - # check if we got the file - [[ -f latest.properties ]] || exit 1 - - # source the file so we get OPNFV vars - source latest.properties - - # download the file - gsutil cp gs://$OPNFV_ARTIFACT_URL $WORKSPACE/opnfv.iso - # list the file - ls -al $WORKSPACE/opnfv.iso + # delete everything that is in $WORKSPACE + /bin/rm -rf $WORKSPACE - # remove the BUILD_DIRECTORY and downlaoded artifact to reclaim some space - /bin/rm -rf $BUILD_DIRECTORY - /bin/rm -rf $WORKSPACE/opnfv.iso