From bbafa00756c3c742d31caa33da98ac0731a6c0a9 Mon Sep 17 00:00:00 2001 From: Trevor Bramwell Date: Thu, 19 Apr 2018 15:37:34 -0700 Subject: [PATCH] Update Pharos Dashboard Jobs Moves the pharos dashboard jobs to their own file sperate and deploys the dashboard when changes are merged to master. Note: this may need to be manually triggered due to the timing between the container being built and it being availble to be pulled. Also includes the following changes to the job: - Uploads backups to Google Storage - Remove sudo usage as docker can be ran as the Jenkins user - Renames jobs to match general naming scheme JIRA: PHAROS-394 Change-Id: I516c4414d7b0158f1f8478214c10f0aa7d176739 Signed-off-by: Trevor Bramwell --- jjb/global/slave-params.yaml | 2 +- jjb/pharos/pharos-tools.yml | 54 +++++++++++++++++++++++++ jjb/pharos/pharos.yaml | 77 ------------------------------------ jjb/pharos/shell/backup-dashboard.sh | 28 +++++++++++++ jjb/pharos/shell/deploy-dashboard.sh | 17 ++++++++ 5 files changed, 100 insertions(+), 78 deletions(-) create mode 100644 jjb/pharos/pharos-tools.yml create mode 100644 jjb/pharos/shell/backup-dashboard.sh create mode 100644 jjb/pharos/shell/deploy-dashboard.sh diff --git a/jjb/global/slave-params.yaml b/jjb/global/slave-params.yaml index 805673a0a..09a0d2287 100644 --- a/jjb/global/slave-params.yaml +++ b/jjb/global/slave-params.yaml @@ -572,7 +572,7 @@ parameters: - label: name: SLAVE_LABEL - default: 'pharos-dashboard' + default: 'pharos-dashboard2' description: 'Slave label on Jenkins' all-nodes: false node-eligibility: 'ignore-offline' diff --git a/jjb/pharos/pharos-tools.yml b/jjb/pharos/pharos-tools.yml new file mode 100644 index 000000000..507e93eb3 --- /dev/null +++ b/jjb/pharos/pharos-tools.yml @@ -0,0 +1,54 @@ +--- +- project: + name: pharos-dashboard-jobs + + project: 'pharos-tools' + + disabled: false + + jobs: + - '{project}-verify-basic' + - 'pharos-dashboard-backup' + - 'pharos-dashboard-deploy' + +- job-template: + name: 'pharos-dashboard-backup' + + disabled: '{obj:disabled}' + + parameters: + - 'pharos-dashboard-defaults' + + triggers: + - timed: '@daily' + + builders: + - shell: + !include-raw: shell/backup-dashboard.sh + +- job-template: + name: 'pharos-dashboard-deploy' + + disabled: '{obj:disabled}' + + parameters: + - project-parameter: + project: '{project}' + branch: 'master' + - 'pharos-dashboard-defaults' + + scm: + - git-scm-gerrit + + triggers: + - gerrit-trigger-change-merged: + branch: 'master' + project: '{project}' + # In the future this should be switch to just the compose file + # for when tags are updated + # files: 'dashboard/docker-compose.yml' + files: 'dashboard/**' + + builders: + - shell: + !include-raw: shell/deploy-dashboard.sh diff --git a/jjb/pharos/pharos.yaml b/jjb/pharos/pharos.yaml index c1bb1ba0e..0b5119657 100644 --- a/jjb/pharos/pharos.yaml +++ b/jjb/pharos/pharos.yaml @@ -4,85 +4,8 @@ project: - '{name}' - - '{name}-tools' disabled: false jobs: - '{project}-verify-basic' - - 'backup-pharos-dashboard' - - 'deploy-pharos-dashboard': - disabled: true - -- job-template: - name: 'backup-pharos-dashboard' - - disabled: '{obj:disabled}' - - parameters: - - 'pharos-dashboard-defaults' - - triggers: - - timed: '@daily' - - builders: - - shell: | - BACKUP_DIR=$HOME/backups/ - TMP_DIR=$HOME/tmp/ - mkdir -p $BACKUP_DIR - echo "-- $(date +%Y%m%d) --" - echo "Backing up Pharos Dashboard data..." - sudo docker run --rm \ - -v pharos-data:/pharos-data:ro \ - -v $TMP_DIR:/backup \ - alpine \ - tar -czf /backup/pharos-dashboard-db-$(date +%Y%m%d).tar.gz -C /pharos-data ./ - sudo mv $TMP_DIR/pharos-dashboard-db-$(date +%Y%m%d).tar.gz $BACKUP_DIR - sudo chown $USER:$USER $BACKUP_DIR/pharos-dashboard-db-$(date +%Y%m%d).tar.gz - echo "...complete" - -- job-template: - name: 'deploy-pharos-dashboard' - - disabled: '{obj:disabled}' - - parameters: - - project-parameter: - project: 'pharos-tools' - branch: 'master' - - 'pharos-dashboard-defaults' - - scm: - - git: - choosing-strategy: 'gerrit' - refspec: '$GERRIT_REFSPEC' - branches: - - 'origin/$BRANCH' - timeout: 15 - credentials-id: '$SSH_CREDENTIAL_ID' - url: '$GIT_BASE' - skip-tag: true - wipe-workspace: false - - triggers: - - gerrit: - server-name: 'gerrit.opnfv.org' - trigger-on: - - ref-updated-event - - comment-added-contains-event: - comment-contains-value: '^redeploy$' - projects: - - project-compare-type: 'ANT' - project-pattern: 'pharos-tools' - branches: - - branch-compare-type: 'ANT' - branch-pattern: '**/master' - - builders: - - shell: | - cp $HOME/config.env $WORKSPACE/dashboard - cp $HOME/rsa.pub $WORKSPACE/dashboard - cp $HOME/rsa.pem $WORKSPACE/dashboard - cd $WORKSPACE/dashboard - sudo docker-compose build - sudo docker-compose up -d diff --git a/jjb/pharos/shell/backup-dashboard.sh b/jjb/pharos/shell/backup-dashboard.sh new file mode 100644 index 000000000..4c1c01500 --- /dev/null +++ b/jjb/pharos/shell/backup-dashboard.sh @@ -0,0 +1,28 @@ +#!/bin/bash -eux +############################################################################## +# Copyright (c) 2018 Linux Foundation 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 +############################################################################## + +BACKUP_DIR=$HOME/backups +DATE=$(date +%Y%m%d) +TAR_FILE=pharos-dashboard-db-$DATE.tar.tz + +mkdir -p $BACKUP_DIR +echo "-- $DATE --" +echo "--> Backing up Pharos Dashboard" + +docker run --rm \ + -v pharos-data:/pharos-data:ro \ + -v $BACKUP_DIR:/backup \ + alpine \ + tar -czf /backup/$TAR_FILE -C /pharos-data ./ + +/usr/local/bin/gsutil cp $BACKUP_DIR/$TAR_FILE \ + gs://opnfv-backups/pharos-dashboard/ && rm $BACKUP_DIR/$TAR_FILE + +echo "--> Pharos dashboard backup complete" diff --git a/jjb/pharos/shell/deploy-dashboard.sh b/jjb/pharos/shell/deploy-dashboard.sh new file mode 100644 index 000000000..4ca41f48c --- /dev/null +++ b/jjb/pharos/shell/deploy-dashboard.sh @@ -0,0 +1,17 @@ +#!/bin/bash -eux +############################################################################## +# Copyright (c) 2018 Linux Foundation 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 +############################################################################## + +cp $HOME/config.env $WORKSPACE/dashboard +cp $HOME/rsa.pub $WORKSPACE/dashboard +cp $HOME/rsa.pem $WORKSPACE/dashboard + +cd $WORKSPACE/dashboard +docker-compose pull +docker-compose up -d -- 2.16.6