# this is the job configuration for bgs - project: name: genesis-foreman project: 'genesis' 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) stream: - master: branch: 'master' ######################## # job templates ######################## - job-template: name: 'genesis-{installer}-verify' project-type: freestyle node: ericsson-build logrotate: daysToKeep: 30 numToKeep: 10 artifactDaysToKeep: -1 artifactNumToKeep: -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' 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: - 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: '**/master' file-paths: - compare-type: ANT pattern: 'common/**' - compare-type: ANT pattern: '{installer}/**' builders: - 'verify' - job-template: name: 'genesis-{installer}-merge' # builder-merge job to run JJB update # # This job's purpose is to update all the JJB project-type: freestyle node: ericsson-build logrotate: daysToKeep: 30 numToKeep: 40 artifactDaysToKeep: -1 artifactNumToKeep: 5 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' scm: - gerrit-trigger-scm: credentials-id: '{ssh-credentials}' refspec: '' choosing-strategy: 'default' wrappers: - ssh-agent-credentials: user: '{ssh-credentials}' triggers: - gerrit: trigger-on: - change-merged-event - comment-added-contains-event: comment-contains-value: 'remerge' projects: - project-compare-type: 'ANT' project-pattern: 'genesis' branches: - branch-compare-type: 'ANT' branch-pattern: '**/master' file-paths: - compare-type: ANT pattern: 'common/**' - compare-type: ANT pattern: '{installer}/**' builders: - 'merge' - job-template: name: 'genesis-{installer}-daily-{stream}' project-type: freestyle node: ericsson-build disabled: true parameters: - genesis-parameters: installer: '{installer}' 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 builders: - trigger-builds: - project: 'genesis-{installer}-build' git-revision: true block: true - trigger-builds: - project: 'genesis-{installer}-deploy' git-revision: true block: true - trigger-builds: - project: 'functest-opnfv-jump-2' block: true - job-template: name: 'genesis-{installer}-build' project-type: freestyle node: ericsson-build logrotate: daysToKeep: 30 numToKeep: 10 artifactDaysToKeep: -1 artifactNumToKeep: -1 parameters: - genesis-parameters: installer: '{installer}' scm: - git: skip-tag: true url: $GIT_BASE branches: - $GERRIT_BRANCH refspec: $GERRIT_REFSPEC builders: - 'build' - 'upload-artifact' - job-template: name: 'genesis-{installer}-deploy' project-type: freestyle disabled: true node: opnfv-jump-2 logrotate: daysToKeep: 30 numToKeep: 10 artifactDaysToKeep: -1 artifactNumToKeep: -1 parameters: - genesis-parameters: installer: '{installer}' scm: - git: skip-tag: true url: $GIT_BASE branches: - $GERRIT_BRANCH refspec: $GERRIT_REFSPEC builders: - 'deploy' ######################## # parameter macros ######################## - parameter: name: genesis-parameters 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/genesis 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}' description: "URL to Google Storage." ######################## # builder macros ######################## - builder: name: 'verify' 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 # do the build cd $WORKSPACE/$INSTALLER/ci ./build.sh $BUILD_DIRECTORY # list the build artifacts ls -al $BUILD_DIRECTORY # remove the BUILD_DIRECTORY to reclaim some space /bin/rm -rf $BUILD_DIRECTORY - builder: name: 'merge' 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 # do the build cd $WORKSPACE/$INSTALLER/ci ./build.sh $BUILD_DIRECTORY # list the build artifacts ls -al $BUILD_DIRECTORY # remove the BUILD_DIRECTORY to reclaim some space /bin/rm -rf $BUILD_DIRECTORY - builder: name: 'build' builders: - shell: | #!/bin/bash set -o errexit set -o nounset set -o pipefail # log info to console echo "Starting 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 # set OPNFV_ARTIFACT_VERSION export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d_%H-%M-%S") # start the build cd $WORKSPACE/$INSTALLER/ci ./build.sh -v $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY $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" echo "OPNFV_BUILD=OK" ) > $WORKSPACE/opnfv.properties echo echo "--------------------------------------------------------" echo "Done!" - builder: name: 'deploy' builders: - shell: | #!/bin/bash set -o errexit set -o nounset set -o pipefail # log info to console echo "Startint the deployment. 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 # and then initiate deployment sudo $WORKSPACE/$INSTALLER/ci/deploy.sh -base_config $WORKSPACE/$INSTALLER/ci/inventory/lf_pod2_ksgen_settings.yml echo echo "--------------------------------------------------------" echo "Done!" - builder: name: 'upload-artifact' builders: - shell: | #!/bin/bash set -o errexit set -o nounset set -o pipefail # log info to console echo "Uploading artifact. This could take some time..." echo "--------------------------------------------------------" echo # list the build output ls -al $BUILD_DIRECTORY # 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 echo echo "--------------------------------------------------------" echo "Done!"