diff options
Diffstat (limited to 'jjb/compass4nfv/compass4nfv.yml')
-rwxr-xr-x | jjb/compass4nfv/compass4nfv.yml | 502 |
1 files changed, 502 insertions, 0 deletions
diff --git a/jjb/compass4nfv/compass4nfv.yml b/jjb/compass4nfv/compass4nfv.yml new file mode 100755 index 000000000..9c9487169 --- /dev/null +++ b/jjb/compass4nfv/compass4nfv.yml @@ -0,0 +1,502 @@ +# this is the job configuration for bgs +- project: + + name: compass + + installer: 'compass' + + jobs: + - 'compass-verify' + - 'compass-upload-iso' + - 'compass-merge' + - 'compass-daily-{stream}' + - 'compass-build' + - 'compass-deploy-virtual-{flavor}' + + # stream: branch with - in place of / (eg. stable-helium) + # branch: branch (eg. stable/helium) + stream: + - master: + branch: 'master' + + flavor: + - five: + conf: 'five' + node: 'compass-build-deploy-02' + - cluster: + conf: 'cluster' + node: 'compass-build-deploy-03' + + + + project: 'compass4nfv' + +######################## +# job templates +######################## +- job-template: + name: 'compass-upload-iso' + project-type: freestyle + disabled: false + + node: master + + logrotate: + daysToKeep: 30 + numToKeep: 10 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + parameters: + - project-parameter: + project: '{project}' + - compass-parameter: + installer: '{installer}' + + wrappers: + - ssh-agent-credentials: + user: '{ssh-credentials}' + + builders: + - 'compass-copy-artifact' + - 'compass-upload-artifact' + +- job-template: + name: 'compass-verify' + + project-type: freestyle + + disabled: false + + node: compass-build-deploy-03 + + logrotate: + daysToKeep: 30 + numToKeep: 10 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + parameters: + - project-parameter: + project: '{project}' + - gerrit-parameter: + branch: 'master' + - compass-parameter: + installer: '{installer}' + + 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: '{project}' + branches: + - branch-compare-type: 'ANT' + branch-pattern: '**/master' + + builders: + - 'compass-build' + #- 'compass-workspace-cleanup' + +- job-template: + name: 'compass-merge' + + # builder-merge job to run JJB update + # + # This job's purpose is to update all the JJB + + project-type: freestyle + + node: compass-build-deploy-03 + + logrotate: + daysToKeep: 30 + numToKeep: 40 + artifactDaysToKeep: -1 + artifactNumToKeep: 5 + + parameters: + - project-parameter: + project: '{project}' + - gerrit-parameter: + branch: 'master' + - compass-parameter: + installer: '{installer}' + 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: '{project}' + branches: + - branch-compare-type: 'ANT' + branch-pattern: '**/master' + builders: + - 'compass-merge' + +- job-template: + name: 'compass-daily-{stream}' + + project-type: freestyle + + node: compass-build-deploy-03 + + parameters: + - project-parameter: + project: '{project}' + - compass-parameter: + installer: '{installer}' + + scm: + - git-scm: + credentials-id: '{ssh-credentials}' + refspec: '' + branch: '{branch}' + + triggers: + - pollscm: '@midnight' + + logrotate: + daysToKeep: 30 + numToKeep: 10 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + builders: + #- 'compass-build' + #- 'compass-upload-artifact' + #- 'compass-workspace-cleanup' + - shell: | + echo "Hello world!" + echo "compass-deploy-virtual job will be triggered!" + + publishers: + - trigger: + project: 'compass-deploy-virtual-five' + threshold: SUCCESS + - trigger: + project: 'compass-deploy-virtual-cluster' + threshold: SUCCESS + +- job-template: + name: 'compass-build' + + project-type: freestyle + + node: compass-build-deploy-03 + + logrotate: + daysToKeep: 30 + numToKeep: 10 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + parameters: + - project-parameter: + project: '{project}' + - compass-parameter: + installer: '{installer}' + + scm: + - git-scm: + credentials-id: '{ssh-credentials}' + refspec: '' + branch: 'master' + + builders: + - 'compass-build' + - 'compass-workspace-cleanup' + + publishers: + - archive: + artifacts: '$BUILD_DIRECTORY/*.*' + allow-empty: 'true' + fingerprint: true + - trigger: + project: 'compass-upload-iso' + threshold: SUCCESS + +- job-template: + name: 'compass-deploy-virtual-{flavor}' + + project-type: freestyle + + disabled: false + + node: '{node}' + + parameters: + - project-parameter: + project: '{project}' + - compass-parameter: + installer: '{installer}' + - string: + name: FLAVOR_CONF + default: '{conf}' + description: "" + + triggers: + - pollscm: "H/2 * * * *" + + logrotate: + daysToKeep: 30 + numToKeep: 10 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + builders: + - 'compass-ci-preclean-workspace' + - 'compass-deploy-virtual-flavor' + +######################## +# parameter macros +######################## +- parameter: + name: compass-parameter + parameters: + - string: + name: INSTALLER + default: '{installer}' + description: "Installer to use." + - string: + name: BUILD_DIRECTORY + default: 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/$INSTALLER + 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/$INSTALLER + description: "URL to Google Storage." + - string: + name: INTERNAL_REPO + default: "root@192.168.127.11:~/xh/work/build/work" + description: "Artifact Repository" +######################## +# builder macros +######################## +- builder: + name: compass-copy-artifact + builders: + - copyartifact: + project: "compass-build" + filter: "$BUILD_DIRECTORY/compass.iso, $BUILD_DIRECTORY/opnfv.properties" + target: ./ + which-build: upstream-build + optional: true + flatten: true + parameter-filters: PUBLISH=true + + +- builder: + name: compass-merge + builders: + - shell: | + #!/bin/bash + echo "Hello World!" + + +- builder: + name: 'compass-build' + builders: + - shell: | + #!/bin/bash + set -o errexit + set -o nounset + set -o pipefail + + # 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 + + # set OPNFV_ARTIFACT_VERSION + export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d_%H-%M-%S") + + # start the build + cd $WORKSPACE/ci + ./build.sh + mkdir $WORKSPACE/$BUILD_DIRECTORY + mv $WORKSPACE/ci/work/compass.iso $WORKSPACE/$BUILD_DIRECTORY/ + + # list the build artifacts + ls -al $WORKSPACE/$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 $WORKSPACE/$BUILD_DIRECTORY/compass.iso | cut -d' ' -f1)" + echo "OPNFV_BUILD_URL=$BUILD_URL" + ) > $WORKSPACE/$BUILD_DIRECTORY/opnfv.properties + + echo + echo "--------------------------------------------------------" + echo "Done!" + +- builder: + name: 'compass-deploy' + builders: + - shell: | + #!/bin/bash + set -o errexit + set -o nounset + set -o pipefail + + # log info to console + echo "Hello world!" + +- builder: + name: 'compass-deploy-virtual-flavor' + builders: + - shell: | + #!/bin/bash + set -o errexit + set -o nounset + set -o pipefail + + # log info to console + echo "Starting the deployment on virtual environment using $INSTALLER. This could take some time..." + echo "--------------------------------------------------------" + echo + + cd $WORKSPACE + ./ci/deploy.sh $FLAVOR_CONF + # ssh -o BatchMode=yes -o TCPKeepAlive=yes cideploy@10.118.34.205 ./cideploy.sh + + echo + echo "--------------------------------------------------------" + echo "Done!" + +- builder: + name: 'compass-upload-artifact' + builders: + - shell: | + #!/bin/bash + set -o errexit + set -o nounset + set -o pipefail + + # log info to console + echo "Uploading the $INSTALLER artifact. This could take some time..." + echo "--------------------------------------------------------" + echo + + # source the opnfv.properties to get ARTIFACT_VERSION + source $WORKSPACE/opnfv.properties + + scp $WORKSPACE/compass.iso $INTERNAL_REPO/ + scp $WORKSPACE/opnfv.properties $INTERNAL_REPO/ + scp $WORKSPACE/compass.iso $INTERNAL_REPO/opnfv-$OPNFV_ARTIFACT_VERSION.iso + + # upload artifact and additional files to google storage + gsutil cp $WORKSPACE/compass.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 + + echo + echo "--------------------------------------------------------" + echo "Done!" + echo "Artifact is available as http://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso" + +- builder: + name: 'compass-download-artifact' + builders: + - shell: | + #!/bin/bash + set -o errexit + set -o nounset + set -o pipefail + + # log info to console + echo "Downloading the $INSTALLER artifact. This could take some time..." + echo "--------------------------------------------------------" + echo + + # get the latest.properties file in order to get info regarding latest artifact + curl -s -o $WORKSPACE/latest.properties http://$GS_URL/latest.properties + + # 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 + curl -s -o $WORKSPACE/opnfv.iso http://$OPNFV_ARTIFACT_URL > gsutil.iso.log 2>&1 + + # list the file + ls -al $WORKSPACE/opnfv.iso + + echo + echo "--------------------------------------------------------" + echo "Done!" + +- builder: + name: 'compass-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: 'compass-ci-preclean-workspace' + builders: + - shell: | + #!/bin/bash + set -o errexit + set -o nounset + set -o pipefail + + cd $WORKSPACE/.. + sudo rm $WORKSPACE -rf + git clone $GIT_BASE $WORKSPACE + |