diff options
Diffstat (limited to 'jjb/armband')
-rw-r--r-- | jjb/armband/armband-ci-jobs.yml | 12 | ||||
-rwxr-xr-x | jjb/armband/armband-deploy.sh | 127 | ||||
-rwxr-xr-x | jjb/armband/armband-download-artifact.sh | 77 | ||||
-rw-r--r-- | jjb/armband/armband-project-jobs.yml | 95 | ||||
-rw-r--r-- | jjb/armband/armband-verify-jobs.yml | 32 | ||||
-rwxr-xr-x | jjb/armband/armband-workspace-cleanup.sh | 15 | ||||
-rwxr-xr-x | jjb/armband/build.sh | 114 | ||||
-rwxr-xr-x | jjb/armband/upload-artifacts.sh | 93 |
8 files changed, 1 insertions, 564 deletions
diff --git a/jjb/armband/armband-ci-jobs.yml b/jjb/armband/armband-ci-jobs.yml index a6b781efc..b27b053a4 100644 --- a/jjb/armband/armband-ci-jobs.yml +++ b/jjb/armband/armband-ci-jobs.yml @@ -198,9 +198,7 @@ builders: - shell: - !include-raw-escape: ./armband-download-artifact.sh - - shell: - !include-raw-escape: ./armband-deploy.sh + !include-raw-escape: ../fuel/fuel-deploy.sh publishers: - email: @@ -214,14 +212,6 @@ name: armband-ci-parameter parameters: - 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/$INSTALLER_TYPE - description: "Directory where the cache to be used during the build is located." - - string: name: GS_URL default: artifacts.opnfv.org/$PROJECT{gs-pathname} description: "URL to Google Storage." diff --git a/jjb/armband/armband-deploy.sh b/jjb/armband/armband-deploy.sh deleted file mode 100755 index 05679aa27..000000000 --- a/jjb/armband/armband-deploy.sh +++ /dev/null @@ -1,127 +0,0 @@ -#!/bin/bash -# SPDX-license-identifier: Apache-2.0 -############################################################################## -# Copyright (c) 2016 Ericsson AB and others. -# (c) 2017 Enea Software AB -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## -set -o nounset -set -o pipefail - -export TERM="vt220" - -if [[ "$BRANCH" != 'master' ]]; then - # source the file so we get OPNFV vars - source latest.properties - - # echo the info about artifact that is used during the deployment - echo "Using ${OPNFV_ARTIFACT_URL/*\/} for deployment" -fi - -if [[ "$JOB_NAME" =~ "merge" ]]; then - # set simplest scenario for virtual deploys to run for merges - DEPLOY_SCENARIO="os-nosdn-nofeature-ha" -elif [[ "$BRANCH" != 'master' ]]; then - # for none-merge deployments - # checkout the commit that was used for building the downloaded artifact - # to make sure the ISO and deployment mechanism uses same versions - echo "Checking out $OPNFV_GIT_SHA1" - git checkout $OPNFV_GIT_SHA1 --quiet -fi - -# set deployment parameters -export TMPDIR=${WORKSPACE}/tmpdir - -LAB_NAME=${NODE_NAME/-*} -POD_NAME=${NODE_NAME/*-} - -# we currently support enea -if [[ ! $LAB_NAME =~ (arm|enea) ]]; then - echo "Unsupported/unidentified lab $LAB_NAME. Cannot continue!" - exit 1 -fi - -echo "Using configuration for $LAB_NAME" - -# create TMPDIR if it doesn't exist -mkdir -p $TMPDIR - -cd $WORKSPACE -if [[ $LAB_CONFIG_URL =~ ^(git|ssh):// ]]; then - echo "Cloning securedlab repo $BRANCH" - git clone --quiet --branch $BRANCH $LAB_CONFIG_URL lab-config - LAB_CONFIG_URL=file://${WORKSPACE}/lab-config - - # Source local_env if present, which contains POD-specific config - local_env="${WORKSPACE}/lab-config/labs/$LAB_NAME/$POD_NAME/fuel/config/local_env" - if [ -e $local_env ]; then - echo "-- Sourcing local environment file" - source $local_env - fi -fi - -# releng wants us to use nothing else but opnfv.iso for now. We comply. -ISO_FILE=$WORKSPACE/opnfv.iso - -# log file name -FUEL_LOG_FILENAME="${JOB_NAME}_${BUILD_NUMBER}.log.tar.gz" - -# Deploy Cache (to enable just create the deploy-cache subdir) -# NOTE: Only available when ISO files are cached using ISOSTORE mechanism -DEPLOY_CACHE=${ISOSTORE:-/iso_mount/opnfv_ci}/${BRANCH##*/}/deploy-cache -if [[ -d "${DEPLOY_CACHE}" ]]; then - echo "Deploy cache dir present." - echo "--------------------------------------------------------" - echo "Fuel@OPNFV deploy cache: ${DEPLOY_CACHE}" - DEPLOY_CACHE="-C ${DEPLOY_CACHE}" -else - DEPLOY_CACHE="" -fi - -# construct the command -DEPLOY_COMMAND="$WORKSPACE/ci/deploy.sh -b ${LAB_CONFIG_URL} \ - -l $LAB_NAME -p $POD_NAME -s $DEPLOY_SCENARIO -i file://${ISO_FILE} \ - -B ${DEFAULT_BRIDGE:-pxebr} -S $TMPDIR -L $WORKSPACE/$FUEL_LOG_FILENAME \ - ${DEPLOY_CACHE}" - -# log info to console -echo "Deployment parameters" -echo "--------------------------------------------------------" -echo "Scenario: $DEPLOY_SCENARIO" -echo "Lab: $LAB_NAME" -echo "POD: $POD_NAME" -[[ "$BRANCH" != 'master' ]] && echo "ISO: ${OPNFV_ARTIFACT_URL/*\/}" -echo -echo "Starting the deployment using $INSTALLER_TYPE. This could take some time..." -echo "--------------------------------------------------------" -echo - -# start the deployment -echo "Issuing command" -echo "$DEPLOY_COMMAND" -echo - -$DEPLOY_COMMAND -exit_code=$? - -echo -echo "--------------------------------------------------------" -echo "Deployment is done!" - -# upload logs for baremetal deployments -# work with virtual deployments is still going on so we skip that for the timebeing -if [[ "$JOB_NAME" =~ "baremetal-daily" ]]; then - echo "Uploading deployment logs" - gsutil cp $WORKSPACE/$FUEL_LOG_FILENAME gs://$GS_URL/logs/$FUEL_LOG_FILENAME > /dev/null 2>&1 - echo "Logs are available as http://$GS_URL/logs/$FUEL_LOG_FILENAME" -fi - -if [[ $exit_code -ne 0 ]]; then - echo "Deployment failed!" - exit $exit_code -else - echo "Deployment is successful!" -fi diff --git a/jjb/armband/armband-download-artifact.sh b/jjb/armband/armband-download-artifact.sh deleted file mode 100755 index 4f83305d4..000000000 --- a/jjb/armband/armband-download-artifact.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/bash -# SPDX-license-identifier: Apache-2.0 -############################################################################## -# Copyright (c) 2016 Ericsson AB and others. -# (c) 2017 Enea AB -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## -set -o errexit -set -o pipefail - -# disable Fuel ISO download for master branch -[[ "$BRANCH" == 'master' ]] && exit 0 - -echo "Host info: $(hostname) $(hostname -I)" - -# Configurable environment variables: -# ISOSTORE (/iso_mount/opnfv_ci) - -if [[ "$JOB_NAME" =~ "merge" ]]; then - echo "Downloading http://$GS_URL/opnfv-gerrit-$GERRIT_CHANGE_NUMBER.properties" - # get the properties file for the Armband Fuel ISO built for a merged change - curl -f -s -o $WORKSPACE/latest.properties http://$GS_URL/opnfv-gerrit-$GERRIT_CHANGE_NUMBER.properties -else - # get the latest.properties file in order to get info regarding latest artifact - echo "Downloading http://$GS_URL/latest.properties" - curl -f -s -o $WORKSPACE/latest.properties http://$GS_URL/latest.properties -fi - -# source the file so we get artifact metadata, it will exit if it doesn't exist -source latest.properties - -# echo the info about artifact that is used during the deployment -OPNFV_ARTIFACT=${OPNFV_ARTIFACT_URL/*\/} -echo "Using $OPNFV_ARTIFACT for deployment" - -# Releng doesn't want us to use anything but opnfv.iso for now. We comply. -ISO_FILE=${WORKSPACE}/opnfv.iso - -# using ISOs for verify & merge jobs from local storage will be enabled later -if [[ ! "$JOB_NAME" =~ (verify|merge) ]]; then - # check if we already have the ISO to avoid redownload - ISOSTORE=${ISOSTORE:-/iso_mount/opnfv_ci}/${BRANCH##*/} - if [[ -f "$ISOSTORE/$OPNFV_ARTIFACT" ]]; then - echo "ISO exists locally. Skipping the download and using the file from ISO store" - ln -s $ISOSTORE/$OPNFV_ARTIFACT ${ISO_FILE} - echo "--------------------------------------------------------" - echo - ls -al ${ISO_FILE} - echo - echo "--------------------------------------------------------" - echo "Done!" - exit 0 - fi -fi - -# Use gsutils if available -if $(which gsutil &>/dev/null); then - DOWNLOAD_URL="gs://$OPNFV_ARTIFACT_URL" - CMD="gsutil cp ${DOWNLOAD_URL} ${ISO_FILE}" -else - # download image - # -f returns error if the file was not found or on server error - DOWNLOAD_URL="http://$OPNFV_ARTIFACT_URL" - CMD="curl -f -s -o ${ISO_FILE} ${DOWNLOAD_URL}" -fi - -# log info to console -echo "Downloading the $INSTALLER_TYPE artifact using URL $DOWNLOAD_URL" -echo "This could take some time..." -echo "--------------------------------------------------------" -echo "$CMD" -$CMD -echo "--------------------------------------------------------" -echo "Done!" diff --git a/jjb/armband/armband-project-jobs.yml b/jjb/armband/armband-project-jobs.yml deleted file mode 100644 index 0623b5576..000000000 --- a/jjb/armband/armband-project-jobs.yml +++ /dev/null @@ -1,95 +0,0 @@ -################################################### -# All the jobs except verify have been removed! -# They will only be enabled on request by projects! -################################################### -- project: - name: armband - - project: '{name}' - - installer: 'fuel' - - jobs: - - 'armband-{installer}-build-daily-{stream}' - - stream: - - master: - branch: '{stream}' - gs-pathname: '' - disabled: false - - euphrates: - branch: 'stable/{stream}' - gs-pathname: '/{stream}' - disabled: true - -- job-template: - name: 'armband-{installer}-build-daily-{stream}' - - disabled: '{obj:disabled}' - - concurrent: false - - properties: - - logrotate-default - - throttle: - enabled: true - max-total: 1 - max-per-node: 1 - option: 'project' - - parameters: - - project-parameter: - project: '{project}' - branch: '{branch}' - - 'opnfv-build-enea-defaults' - - '{installer}-defaults' - - armband-project-parameter: - gs-pathname: '{gs-pathname}' - - scm: - - git-scm - - triggers: - - pollscm: - cron: '0 H/4 * * *' - - wrappers: - - timeout: - timeout: 360 - fail: true - - builders: - - shell: - !include-raw-escape: ./build.sh - - shell: - !include-raw-escape: ./upload-artifacts.sh - - publishers: - - email: - recipients: armband@enea.com - - email-jenkins-admins-on-failure - -######################## -# parameter macros -######################## -- parameter: - name: armband-project-parameter - parameters: - - 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/$INSTALLER_TYPE - description: "Directory where the cache to be used during the build is located." - - string: - name: GS_URL - default: artifacts.opnfv.org/$PROJECT{gs-pathname} - description: "URL to Google Storage." - - choice: - name: FORCE_BUILD - choices: - - 'false' - - 'true' - description: 'Force build even if there are no changes in the armband repo. Default false' diff --git a/jjb/armband/armband-verify-jobs.yml b/jjb/armband/armband-verify-jobs.yml index c9476b1a2..56f70d68b 100644 --- a/jjb/armband/armband-verify-jobs.yml +++ b/jjb/armband/armband-verify-jobs.yml @@ -22,8 +22,6 @@ phase: - 'basic': slave-label: 'opnfv-build-enea' - - 'build': - slave-label: 'opnfv-build-enea' - 'deploy-virtual': slave-label: 'opnfv-build-enea' - 'smoke-test': @@ -118,20 +116,6 @@ kill-phase-on: FAILURE abort-all-job: true - multijob: - name: build - condition: SUCCESSFUL - projects: - - name: 'armband-verify-build-{stream}' - current-parameters: false - predefined-parameters: | - BRANCH=$BRANCH - GERRIT_REFSPEC=$GERRIT_REFSPEC - GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER - GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE - node-parameters: false - kill-phase-on: FAILURE - abort-all-job: true - - multijob: name: deploy-virtual condition: SUCCESSFUL projects: @@ -213,14 +197,6 @@ echo "Not activated!" - builder: - name: 'armband-verify-build-macro' - builders: - - shell: - !include-raw: ./build.sh - - shell: - !include-raw: ./armband-workspace-cleanup.sh - -- builder: name: 'armband-verify-deploy-virtual-macro' builders: - shell: | @@ -242,14 +218,6 @@ name: 'armband-verify-defaults' parameters: - 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/$INSTALLER_TYPE - description: "Directory where the cache to be used during the build is located." - - string: name: GS_URL default: artifacts.opnfv.org/$PROJECT{gs-pathname} description: "URL to Google Storage." diff --git a/jjb/armband/armband-workspace-cleanup.sh b/jjb/armband/armband-workspace-cleanup.sh deleted file mode 100755 index d8948c7a0..000000000 --- a/jjb/armband/armband-workspace-cleanup.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -# SPDX-license-identifier: Apache-2.0 -############################################################################## -# Copyright (c) 2016 Ericsson AB and others. -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## -set -o errexit -set -o nounset -set -o pipefail - -# delete the $WORKSPACE to open some space -/bin/rm -rf $WORKSPACE diff --git a/jjb/armband/build.sh b/jjb/armband/build.sh deleted file mode 100755 index 29c01bb38..000000000 --- a/jjb/armband/build.sh +++ /dev/null @@ -1,114 +0,0 @@ -#!/bin/bash -# SPDX-license-identifier: Apache-2.0 -############################################################################## -# Copyright (c) 2016 Ericsson AB and others. -# Copyright (c) 2017 Enea AB. -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## - -# disable Armband iso build for master branch -if [[ "$BRANCH" == 'master' ]]; then - touch $WORKSPACE/.noupload - echo "--------------------------------------------------------" - echo "Done!" - exit 0 -fi - -set -o errexit -set -o nounset -set -o pipefail - -export TERM="vt220" - -echo "Host info: $(hostname) $(hostname -I)" - -cd $WORKSPACE - -# Armband requires initializing git submodules (e.g. for Fuel's clean_cache.sh) -make submodules-init - -# remove the expired items from cache -test -f $WORKSPACE/ci/clean_cache.sh && $WORKSPACE/ci/clean_cache.sh $CACHE_DIRECTORY - -LATEST_ISO_PROPERTIES=$WORKSPACE/latest.iso.properties -if [[ "$JOB_NAME" =~ "daily" ]]; then - # check to see if we already have an artifact on artifacts.opnfv.org - # for this commit during daily builds - echo "Checking to see if we already built and stored Armband Fuel ISO for this commit" - - curl -s -o $LATEST_ISO_PROPERTIES http://$GS_URL/latest.properties 2>/dev/null -fi - -# get metadata of latest ISO -if grep -q OPNFV_GIT_SHA1 $LATEST_ISO_PROPERTIES 2>/dev/null; then - LATEST_ISO_SHA1=$(grep OPNFV_GIT_SHA1 $LATEST_ISO_PROPERTIES | cut -d'=' -f2) - LATEST_ISO_URL=$(grep OPNFV_ARTIFACT_URL $LATEST_ISO_PROPERTIES | cut -d'=' -f2) -else - LATEST_ISO_SHA1=none -fi - -# get current SHA1 -CURRENT_SHA1=$(git rev-parse HEAD) - -# set FORCE_BUILD to false for non-daily builds -FORCE_BUILD=${FORCE_BUILD:-false} - -if [[ "$CURRENT_SHA1" == "$LATEST_ISO_SHA1" && "$FORCE_BUILD" == "false" ]]; then - echo "***************************************************" - echo " An ISO has already been built for this commit" - echo " $LATEST_ISO_URL" - echo "***************************************************" -else - echo "This commit has not been built yet or forced build! Proceeding with the build." - /bin/rm -f $LATEST_ISO_PROPERTIES - echo -fi - -# log info to console -echo "Starting the build of Armband $INSTALLER_TYPE. This could take some time..." -echo "-----------------------------------------------------------" -echo - -# create the cache directory if it doesn't exist -mkdir -p $CACHE_DIRECTORY - -# set OPNFV_ARTIFACT_VERSION -if [[ "$JOB_NAME" =~ "merge" ]]; then - echo "Building Fuel ISO for a merged change" - export OPNFV_ARTIFACT_VERSION="gerrit-$GERRIT_CHANGE_NUMBER" - echo "Not supported" - exit 1 -else - export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d_%H-%M-%S") -fi - -NOCACHE_PATTERN="verify: no-cache" -if [[ "$JOB_NAME" =~ "verify" && "$GERRIT_CHANGE_COMMIT_MESSAGE" =~ "$NOCACHE_PATTERN" ]]; then - echo "The cache will not be used for this build!" - NOCACHE_ARG="-f P" -fi -NOCACHE_ARG=${NOCACHE_ARG:-} - -# start the build -cd $WORKSPACE/ci -./build.sh -v $OPNFV_ARTIFACT_VERSION $NOCACHE_ARG -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY - -# list the build artifacts -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_SHA512SUM=$(sha512sum $BUILD_DIRECTORY/opnfv-$OPNFV_ARTIFACT_VERSION.iso | cut -d' ' -f1)" - echo "OPNFV_BUILD_URL=$BUILD_URL" -) > $WORKSPACE/opnfv.properties - -echo -echo "--------------------------------------------------------" -echo "Done!" diff --git a/jjb/armband/upload-artifacts.sh b/jjb/armband/upload-artifacts.sh deleted file mode 100755 index 97987e2c5..000000000 --- a/jjb/armband/upload-artifacts.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/bash -# SPDX-license-identifier: Apache-2.0 -############################################################################## -# Copyright (c) 2016 Ericsson AB and others. -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## -set -o pipefail - -# configurable environment variables: -# ISOSTORE (/iso_mount/opnfv_ci) - -# check if we built something -if [ -f $WORKSPACE/.noupload ]; then - echo "Nothing new to upload. Exiting." - /bin/rm -f $WORKSPACE/.noupload - exit 0 -fi - -# source the opnfv.properties to get ARTIFACT_VERSION -source $WORKSPACE/opnfv.properties - - -# storing ISOs for verify & merge jobs will be done once we get the disk array -if [[ ! "$JOB_NAME" =~ (verify|merge) ]]; then - # store ISO locally on NFS first - ISOSTORE=${ISOSTORE:-/iso_mount/opnfv_ci} - if [[ -d "$ISOSTORE" ]]; then - ISOSTORE=${ISOSTORE}/${BRANCH##*/} - mkdir -p $ISOSTORE - - # remove all but most recent 3 ISOs first to keep iso_mount clean & tidy - cd $ISOSTORE - ls -tp | grep -v '/' | tail -n +4 | xargs -d '\n' /bin/rm -f -- - - # store ISO - echo "Storing latest ISO in local storage" - touch .storing - /bin/cp -f $BUILD_DIRECTORY/opnfv-$OPNFV_ARTIFACT_VERSION.iso \ - $ISOSTORE/opnfv-$OPNFV_ARTIFACT_VERSION.iso - rm .storing - fi -fi - -# log info to console -echo "Uploading armband artifacts. This could take some time..." -echo - -echo "Started at $(date)" -cd $WORKSPACE -# upload artifact and additional files to google storage -gsutil cp $BUILD_DIRECTORY/opnfv-$OPNFV_ARTIFACT_VERSION.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 -if [[ ! "$JOB_NAME" =~ (verify|merge) ]]; then - gsutil cp $WORKSPACE/opnfv.properties \ - gs://$GS_URL/latest.properties > gsutil.latest.log 2>&1 -elif [[ "$JOB_NAME" =~ "merge" ]]; then - echo "Uploaded Armband Fuel ISO for a merged change" -fi -echo "Ended at $(date)" - -gsutil -m setmeta \ - -h "Content-Type:text/html" \ - -h "Cache-Control:private, max-age=0, no-transform" \ - gs://$GS_URL/latest.properties \ - gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.properties > /dev/null 2>&1 - -gsutil -m setmeta \ - -h "Cache-Control:private, max-age=0, no-transform" \ - gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso > /dev/null 2>&1 - -# disabled errexit due to gsutil setmeta complaints -# BadRequestException: 400 Invalid argument -# check if we uploaded the file successfully to see if things are fine -gsutil ls gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso > /dev/null 2>&1 -if [[ $? -ne 0 ]]; then - echo "Problem while uploading artifact!" - echo "Check log $WORKSPACE/gsutil.iso.log on the machine where this build is done." - exit 1 -fi - -echo "Done!" -echo -echo "--------------------------------------------------------" -echo -echo "Artifact is available as http://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso" -echo -echo "--------------------------------------------------------" -echo |