- project:
name: apex
jobs:
- - 'apex-verify'
- - 'apex-merge'
+ - 'apex-verify-{stream}'
+ - 'apex-merge-{stream}'
+ - 'apex-build-{stream}'
+ - 'apex-deploy-virtual-{stream}'
+ - 'apex-deploy-baremetal-{stream}'
- 'apex-daily-{stream}'
# stream: branch with - in place of / (eg. stable-arno)
stream:
- master:
branch: 'master'
+ gs-pathname: ''
+ flags: '-fM'
+ disabled: false
project: 'apex'
- job-template:
- name: 'apex-verify'
+ name: 'apex-verify-{stream}'
- node: ericsson-build
-
- project-type: freestyle
-
- logrotate:
- daysToKeep: 30
- numToKeep: 10
- artifactDaysToKeep: -1
- artifactNumToKeep: -1
+ node: opnfv-jump-1
parameters:
+ - apex-parameter:
+ gs-pathname: '{gs-pathname}'
+ flags: '{flags}'
- project-parameter:
project: '{project}'
- gerrit-parameter:
- branch: 'master'
+ branch: '{branch}'
+ - 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'
- wrappers:
- - ssh-agent-credentials:
- user: '{ssh-credentials}'
-
triggers:
- gerrit:
trigger-on:
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**/master'
+ forbidden-file-paths:
+ - compare-type: ANT
+ pattern: 'docs/**'
+
+ properties:
+ - build-blocker:
+ use-build-blocker: true
+ blocking-jobs:
+ - "apex-daily.*"
builders:
- - shell:
- echo "Hello World"
+ - 'apex-build'
+ - 'apex-deploy-virtual'
+ - 'apex-workspace-cleanup'
- job-template:
- name: 'apex-merge'
+ name: 'apex-merge-{stream}'
# builder-merge job to run JJB update
#
# This job's purpose is to update all the JJB
- node: master
+ node: opnfv-jump-1
- project-type: freestyle
-
- logrotate:
- daysToKeep: 30
- numToKeep: 40
- artifactDaysToKeep: -1
- artifactNumToKeep: 5
+ disabled: true
parameters:
+ - apex-parameter:
+ gs-pathname: '{gs-pathname}'
+ flags: '{flags}'
- project-parameter:
project: '{project}'
- gerrit-parameter:
- branch: 'master'
+ branch: '{branch}'
+ - 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:
refspec: ''
choosing-strategy: 'default'
- wrappers:
- - ssh-agent-credentials:
- user: '{ssh-credentials}'
-
triggers:
- gerrit:
trigger-on:
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**/master'
+ forbidden-file-paths:
+ - compare-type: ANT
+ pattern: 'docs/**'
builders:
- - shell:
- echo "Hello World"
+ - 'apex-build'
+ - 'apex-deploy-virtual'
+ - 'apex-workspace-cleanup'
+- 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: opnfv-jump-1
+
+ disabled: false
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ - apex-parameter:
+ gs-pathname: '{gs-pathname}'
+ flags: '{flags}'
+ - gerrit-parameter:
+ branch: '{branch}'
+ - 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:
+ - 'apex-build'
+ - 'apex-deploy-virtual'
+ - 'apex-upload-artifact'
+ - 'apex-workspace-cleanup'
- job-template:
- name: 'apex-daily-{stream}'
+ name: 'apex-deploy-virtual-{stream}'
- # Job template for daily builders
+ # Job template for virtual deployment
#
# Required Variables:
# stream: branch with - in place of / (eg. stable)
# branch: branch (eg. stable)
- node: master
+ node: opnfv-jump-1
- disabled: true
+ disabled: false
+
+ scm:
+ - git-scm:
+ credentials-id: '{ssh-credentials}'
+ refspec: ''
+ branch: '{branch}'
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ - apex-parameter:
+ gs-pathname: '{gs-pathname}'
+ flags: '{flags}'
+
+ builders:
+ - 'apex-deploy-virtual'
+ - 'apex-workspace-cleanup'
+
+- job-template:
+ name: 'apex-deploy-baremetal-{stream}'
- project-type: freestyle
- varsetabove: '{somevar}'
+ # Job template for baremetal deployment
+ #
+ # Required Variables:
+ # stream: branch with - in place of / (eg. stable)
+ # branch: branch (eg. stable)
+ node: opnfv-jump-1
- logrotate:
- daysToKeep: '{build-days-to-keep}'
- numToKeep: '{build-num-to-keep}'
- artifactDaysToKeep: '{build-artifact-days-to-keep}'
- artifactNumToKeep: '{build-artifact-num-to-keep}'
+ disabled: true
+
+ scm:
+ - git-scm:
+ credentials-id: '{ssh-credentials}'
+ refspec: ''
+ branch: '{branch}'
parameters:
- project-parameter:
project: '{project}'
+ - apex-parameter:
+ gs-pathname: '{gs-pathname}'
+ flags: '{flags}'
+
+ builders:
+ - 'apex-workspace-cleanup'
+
+- job-template:
+ name: 'apex-daily-{stream}'
+
+ # Job template for daily build
+ #
+ # Required Variables:
+ # stream: branch with - in place of / (eg. stable)
+ # branch: branch (eg. stable)
+ node: opnfv-jump-1
+
+ disabled: false
scm:
- git-scm:
refspec: ''
branch: '{branch}'
- wrappers:
- - ssh-agent-credentials:
- user: '{ssh-credentials}'
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ - apex-parameter:
+ gs-pathname: '{gs-pathname}'
+ flags: '{flags}'
+
+ properties:
+ - build-blocker:
+ use-build-blocker: true
+ blocking-jobs:
+ - "apex-daily.*"
triggers:
- - timed: 'H H * * *'
+ - 'apex-{stream}'
+
+ builders:
+ - trigger-builds:
+ - project: 'apex-build-{stream}'
+ git-revision: true
+ block: true
+ - trigger-builds:
+ - project: 'apex-deploy-virtual-{stream}'
+ git-revision: true
+ block: true
+ - trigger-builds:
+ - project: 'apex-deploy-baremetal-{stream}'
+ - trigger-builds:
+ - project: 'functest-apex-opnfv-jump-1-daily-{stream}'
+ block: true
+ block-thresholds:
+ build-step-failure-threshold: 'never'
+ failure-threshold: 'never'
+ unstable-threshold: 'FAILURE'
+
+########################
+# 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: 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/{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."
+ - string:
+ name: FLAGS
+ default: '{flags}'
+ description: "Build Flags"
+
+########################
+# 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 "Build flags for this build are ${FLAGS}"
+ 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/ci
+ ./build.sh $FLAGS -v $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY
+ RPM_VERSION=$(grep Version $BUILD_DIRECTORY/../build/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/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/opnfv-apex-$RPM_VERSION.noarch.rpm | cut -d' ' -f1)"
+ echo "OPNFV_BUILD_URL=$BUILD_URL"
+ ) > $WORKSPACE/opnfv.properties
+ echo
+ echo "--------------------------------------------------------"
+
+- builder:
+ name: 'apex-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
+
+- 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/OPNFV-CentOS-7-x86_64-$OPNFV_ARTIFACT_VERSION.iso gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso > gsutil.iso.log 2>&1
+ gsutil cp $BUILD_DIRECTORY/$(basename $OPNFV_RPM_URL) gs://$GS_URL/$(basename $OPNFV_RPM_URL) > gsutil.iso.log 2>&1
+ gsutil cp $BUILD_DIRECTORY/$(basename $OPNFV_SRPM_URL) gs://$GS_URL/$(basename $OPNFV_SRPM_URL) > 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!"
+ 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-deploy-virtual'
builders:
- - shell:
- echo "Hello World"
+ - 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 [[ ! "$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 [[ -f opnfv.properties ]]; then
+ # if opnfv.properties exists then use the
+ # local build. Source the file so we get local OPNFV vars
+ source opnfv.properties
+ RPM_INSTALL_PATH=build_output/$(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
+
+ source opnfv.properties
+ RPM_INSTALL_PATH=build_output/$(basename $OPNFV_RPM_URL)
+
+ # update / install the new rpm
+ if rpm -q opnfv-apex > /dev/null; then
+ if sudo yum update -y $RPM_INSTALL_PATH | grep "does not update installed package"; then
+ sudo yum downgrade -y $RPM_INSTALL_PATH;
+ fi
+ else
+ sudo yum install -y $RPM_INSTALL_PATH;
+ fi
+
+ # cleanup virtual machines before we start
+ sudo opnfv-clean
+ # initiate virtual deployment
+ sudo opnfv-deploy -v
+
+ echo
+ echo "--------------------------------------------------------"
+ echo "Done!"
+
+#######################
+# trigger macros
+########################
+- trigger:
+ name: 'apex-master'
+ triggers:
+ - timed: '0 3 * * *'