- project: name: apex jobs: - '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) # branch: branch (eg. stable/arno) stream: - master: branch: 'master' gs-pathname: '' flags: '-fM' disabled: false project: 'apex' - job-template: name: 'apex-verify-{stream}' node: opnfv-jump-1 logrotate: daysToKeep: 30 numToKeep: 10 artifactDaysToKeep: -1 artifactNumToKeep: -1 parameters: - apex-parameter: gs-pathname: '{gs-pathname}' flags: '{flags}' - project-parameter: project: '{project}' - 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: - 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: 'apex' 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: - 'apex-build' - 'apex-deploy-virtual' - 'apex-workspace-cleanup' - job-template: name: 'apex-merge-{stream}' # builder-merge job to run JJB update # # This job's purpose is to update all the JJB node: opnfv-jump-1 disabled: true parameters: - apex-parameter: gs-pathname: '{gs-pathname}' flags: '{flags}' - project-parameter: project: '{project}' - 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: - gerrit-trigger-scm: credentials-id: '{ssh-credentials}' refspec: '' choosing-strategy: 'default' triggers: - gerrit: trigger-on: - change-merged-event - comment-added-contains-event: comment-contains-value: 'remerge' projects: - project-compare-type: 'ANT' project-pattern: 'apex' branches: - branch-compare-type: 'ANT' branch-pattern: '**/master' forbidden-file-paths: - compare-type: ANT pattern: 'docs/**' builders: - '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-deploy-virtual-{stream}' # Job template for virtual deployment # # Required Variables: # stream: branch with - in place of / (eg. stable) # branch: branch (eg. stable) node: opnfv-jump-1 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}' # Job template for baremetal deployment # # Required Variables: # stream: branch with - in place of / (eg. stable) # branch: branch (eg. stable) node: opnfv-jump-1 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: credentials-id: '{ssh-credentials}' refspec: '' branch: '{branch}' 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: - '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-{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: | #!/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 * * *'