# this is the job configuration for bgs - project: name: compass installer: 'compass' jobs: - 'compass-verify' - 'compass-verify-on-ericsson-node' - '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: 'virtual_five' node: 'huawei-build' - cluster: conf: 'virtual_cluster' node: 'huawei-build' 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-from-upstream-build' - 'compass-upload-artifact' - job-template: name: 'compass-verify-on-ericsson-node' project-type: freestyle disabled: true node: ericsson-build 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' - job-template: name: 'compass-verify' project-type: freestyle disabled: false node: huawei-build logrotate: daysToKeep: 30 numToKeep: 10 artifactDaysToKeep: -1 artifactNumToKeep: -1 parameters: - project-parameter: project: '{project}' - gerrit-parameter: branch: 'master' - compass-parameter: installer: '{installer}' - string: name: FLAVOR_CONF default: 'virtual_cluster' description: "" 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-deploy-virtual-flavor' - 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: huawei-build 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: huawei-build 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-build' threshold: SUCCESS - trigger: project: 'compass-deploy-virtual-cluster' threshold: SUCCESS - job-template: name: 'compass-build' project-type: freestyle node: huawei-build 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-download-artifact-from-internal-repo' - '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/ 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_XA default: "root@192.168.127.11:~/xh/work/build/work" description: "Artifact Repository" - string: name: ISO_DIRECTORY default: "http://192.168.127.11:9999/" ######################## # builder macros ######################## - builder: name: compass-copy-artifact-from-upstream-build 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/ mkdir $WORKSPACE/$BUILD_DIRECTORY ./build.sh --iso-dir $WORKSPACE/$BUILD_DIRECTORY/ --iso-name compass.iso -c $CACHE_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!" sudo rm -rf $WORKSPACE/work/ - 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 export ISO_URL=$WORKSPACE/$BUILD_DIRECTORY/compass.iso cd $WORKSPACE ./deploy.sh $FLAVOR_CONF echo echo "--------------------------------------------------------" echo "Done!" - builder: name: 'compass-download-artifact-from-internal-repo' builders: - shell: | #!/bin/bash echo "download iso from internal repo" curl -s -o $WORKSPACE/$BUILD_DIRECTORY/compass.iso $ISO_DIRECTORY/compass.iso > download.iso.log 2>&1 - 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/$BUILD_DIRECTORY/opnfv.properties scp $WORKSPACE/$BUILD_DIRECTORY/compass.iso $INTERNAL_REPO_XA/ scp $WORKSPACE/$BUILD_DIRECTORY/opnfv.properties $INTERNAL_REPO_XA/ scp $WORKSPACE/$BUILD_DIRECTORY/compass.iso $INTERNAL_REPO_XA/opnfv-$OPNFV_ARTIFACT_VERSION.iso # upload artifact and additional files to google storage gsutil cp $WORKSPACE/$BUILD_DIRECTORY/compass.iso gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso > gsutil.iso.log 2>&1 gsutil cp $WORKSPACE/$BUILD_DIRECTORY/opnfv.properties gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.properties > gsutil.properties.log 2>&1 gsutil cp $WORKSPACE/$BUILD_DIRECTORY/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-from-opnfv-repo' 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 sudo /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