X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=jjb%2Fapex%2Fapex.yml;h=90418dbb32f12ce3b4fdf4491e9710b3f8a926e5;hb=d457354f2d6c3cd22c96fca58192488fa6dc9e3b;hp=d29fc35d9b44dbf60cdb37007cae4e38eebe69e7;hpb=574014bc87ea068100c20ea439e7bb46d019f68e;p=releng.git diff --git a/jjb/apex/apex.yml b/jjb/apex/apex.yml index d29fc35d9..90418dbb3 100644 --- a/jjb/apex/apex.yml +++ b/jjb/apex/apex.yml @@ -1,8 +1,11 @@ - 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) @@ -10,37 +13,36 @@ 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: @@ -59,33 +61,44 @@ 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: @@ -93,10 +106,6 @@ refspec: '' choosing-strategy: 'default' - wrappers: - - ssh-agent-credentials: - user: '{ssh-credentials}' - triggers: - gerrit: trigger-on: @@ -109,36 +118,120 @@ 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: @@ -146,13 +239,216 @@ 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 * * *'