-# this is the job configuration for bgs
+########################
+# Job configuration for genesis/foreman
+########################
- project:
name: genesis-foreman
- installer:
- - foreman
+ project: 'genesis'
+
+ installer: 'foreman'
jobs:
- - 'genesis-{installer}-verify'
- - 'genesis-{installer}-merge'
- - 'genesis-{installer}-daily-{stream}'
- - 'genesis-{installer}-deploy'
+ - '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
########################
- job-template:
- name: 'genesis-{installer}-verify'
+ name: 'genesis-foreman-verify'
project-type: freestyle
node: ericsson-build
+ concurrent: true
+
+ properties:
+ - throttle:
+ enabled: true
+ max-total: 2
+
logrotate:
daysToKeep: 30
numToKeep: 10
artifactNumToKeep: -1
parameters:
- - string:
- name: INSTALLER
- default: '{installer}'
- description: "Installer to use."
- - 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:
- compare-type: ANT
pattern: '{installer}/**'
-
builders:
- - 'verify'
+ - 'foreman-build'
+ - 'foreman-workspace-cleanup'
- job-template:
- name: 'genesis-{installer}-merge'
-
- # builder-merge job to run JJB update
- #
- # This job's purpose is to update all the JJB
+ name: 'genesis-foreman-merge'
project-type: freestyle
node: ericsson-build
+ concurrent: true
+
+ properties:
+ - throttle:
+ enabled: true
+ max-total: 2
+
logrotate:
daysToKeep: 30
numToKeep: 40
artifactNumToKeep: 5
parameters:
- - string:
- name: INSTALLER
- default: '{installer}'
- description: "Installer to use."
- - 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:
pattern: '{installer}/**'
builders:
- - 'merge'
+ - 'foreman-build'
+ - 'foreman-workspace-cleanup'
- job-template:
- name: 'genesis-{installer}-daily-{stream}'
+ name: 'genesis-foreman-daily-{stream}'
project-type: freestyle
node: ericsson-build
+ disabled: false
+
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: GS_URL
- default: 'artifacts.opnfv.org/genesis/{installer}'
- description: "URL to Google Storage."
- - 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
+ - git-scm:
+ credentials-id: '{ssh-credentials}'
+ refspec: ''
+ branch: master
triggers:
- - pollscm: '@midnight'
+ - timed: '@midnight'
logrotate:
daysToKeep: 30
artifactNumToKeep: -1
builders:
- - '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
+
+ builders:
+ - 'foreman-build'
+ - 'foreman-upload-artifact'
- job-template:
- name: 'genesis-{installer}-deploy'
+ name: 'genesis-foreman-deploy'
project-type: freestyle
+ disabled: false
+
node: opnfv-jump-2
logrotate:
artifactDaysToKeep: -1
artifactNumToKeep: -1
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ - foreman-parameter:
+ installer: '{installer}'
+
+ scm:
+ - git-scm:
+ credentials-id: '{ssh-credentials}'
+ refspec: ''
+ branch: master
+
+ builders:
+ - 'foreman-deploy'
+
+########################
+# parameter macros
+########################
+- parameter:
+ name: foreman-parameter
parameters:
- string:
name: INSTALLER
default: '{installer}'
description: "Installer to use."
- 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."
+ name: BUILD_DIRECTORY
+ default: $WORKSPACE/build_output
+ description: "Directory where the build artifact will be located upon the completion of the build."
- string:
- name: GERRIT_BRANCH
- default: origin/master
- description: "Branch to build, deploy and test."
+ name: CACHE_DIRECTORY
+ default: $HOME/opnfv/cache/genesis-$INSTALLER
+ description: "Directory where the cache to be used during the build is located."
- string:
- name: GERRIT_REFSPEC
- default: refs/heads/master
- description: "Refspec to retrieve."
+ 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/genesis/fuel'
+ default: artifacts.opnfv.org/$PROJECT/$INSTALLER
description: "URL to Google Storage."
- - string:
- name: BUILD_DIRECTORY
- default: $WORKSPACE/build_output
- description: "Directory where the build artifact will be located upon the completion of the build."
-
- scm:
- - git:
- skip-tag: true
- url: $GIT_BASE
- branches:
- - $GERRIT_BRANCH
- refspec: $GERRIT_REFSPEC
-
- builders:
- - 'deploy'
########################
# builder macros
########################
- builder:
- name: 'verify'
+ 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/$INSTALLER/build ]] || mkdir -p $WORKSPACE/$INSTALLER/build
- cp /home/jenkins/Downloads/opnfv_iso/* $WORKSPACE/$INSTALLER/build/
+ # log info to console
+ echo "Starting the 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
- # 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
+ # set OPNFV_ARTIFACT_VERSION
+ export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d_%H-%M-%S")
- # do the build
+ # start the build
cd $WORKSPACE/$INSTALLER/ci
- ./build.sh $BUILD_DIRECTORY
+ ./build.sh -v $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY
- # list the build artifacts
+ # 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: 'merge'
+ 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/$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
+ # log info to console
+ echo "Starting the deployment using $INSTALLER. This could take some time..."
+ echo "--------------------------------------------------------"
+ echo
- # do the build
- cd $WORKSPACE/$INSTALLER/ci
- ./build.sh $BUILD_DIRECTORY
+ # cleanup first
+ sudo $WORKSPACE/$INSTALLER/ci/clean.sh -base_config $WORKSPACE/$INSTALLER/ci/inventory/lf_pod2_ksgen_settings.yml
- # list the build artifacts
- ls -al $BUILD_DIRECTORY
+ # and then initiate deployment
+ sudo $WORKSPACE/$INSTALLER/ci/deploy.sh -base_config $WORKSPACE/$INSTALLER/ci/inventory/lf_pod2_ksgen_settings.yml
- # remove the BUILD_DIRECTORY to reclaim some space
- /bin/rm -rf $BUILD_DIRECTORY
+ echo
+ echo "--------------------------------------------------------"
+ echo "Done!"
- builder:
- name: 'daily-master'
+ name: 'foreman-upload-artifact'
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 -v $BUILD_ID $BUILD_DIRECTORY
-
- - shell: |
- #!/bin/bash
- set -o errexit
- set -o nounset
- set -o pipefail
- set -x
-
- # list the build artifacts
- ls -al $BUILD_DIRECTORY
- 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_ARTIFACT_MD5SUM=$(md5sum opnfv-$ARTIFACT_VERSION.iso | cut -d' ' -f1)"
- echo "OPNFV_BUILD_URL=$BUILD_URL"
- echo "OPNFV_BUILD=OK"
- ) > opnfv-$BUILD_ID.properties
+ # log info to console
+ echo "Uploading the $INSTALLER artifact. This could take some time..."
+ echo "--------------------------------------------------------"
+ echo
- # 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
-
- - 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
+ 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
- # 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
-
- # remove the BUILD_DIRECTORY and downlaoded artifact to reclaim some space
- /bin/rm -rf $BUILD_DIRECTORY
- /bin/rm -rf $WORKSPACE/opnfv.iso
+ echo
+ echo "--------------------------------------------------------"
+ echo "Done!"
- builder:
- name: 'deploy'
+ name: 'foreman-workspace-cleanup'
builders:
- shell: |
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
- set -x
- cd $WORKSPACE
+ # delete everything that is in $WORKSPACE
+ /bin/rm -rf $WORKSPACE
- # 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