Add repository archiver for compliance checks 03/36103/5
authorRudy Grigar <rgrigar@linuxfoundation.org>
Thu, 15 Jun 2017 07:48:34 +0000 (15:48 +0800)
committerTrevor Bramwell <tbramwell@linuxfoundation.org>
Thu, 22 Jun 2017 17:24:15 +0000 (10:24 -0700)
Change-Id: Ibf82ed705202f6bd343c59862018d67ba1f31496
Signed-off-by: Rudy Grigar <rgrigar@linuxfoundation.org>
Signed-off-by: Trevor Bramwell <tbramwell@linuxfoundation.org>
jjb/releng/opnfv-repo-archiver.sh [new file with mode: 0644]
jjb/releng/opnfv-utils.yml

diff --git a/jjb/releng/opnfv-repo-archiver.sh b/jjb/releng/opnfv-repo-archiver.sh
new file mode 100644 (file)
index 0000000..c9fdba3
--- /dev/null
@@ -0,0 +1,66 @@
+#!/bin/bash
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2016 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
+##############################################################################
+set -o errexit
+set -o pipefail
+export PATH=$PATH:/usr/local/bin/
+
+DATE="$(date +%Y%m%d)"
+
+declare -a PROJECT_LIST
+EXCLUDE_PROJECTS="All-Projects|All-Users|securedlab"
+CLONE_PATH="$WORKSPACE/opnfv-repos"
+
+# Generate project list from gerrit
+PROJECT_LIST=($(ssh -p 29418 jenkins-ci@gerrit.opnfv.org gerrit ls-projects | egrep -v $EXCLUDE_PROJECTS))
+
+echo "Cloning all OPNFV repositories"
+echo "------------------------------"
+
+for PROJECT in "${PROJECT_LIST[@]}"; do
+  echo "> Cloning $PROJECT"
+  if [ ! -d "$CLONE_PATH/$PROJECT" ]; then
+    git clone "https://gerrit.opnfv.org/gerrit/$PROJECT.git" $CLONE_PATH/$PROJECT
+  else
+    pushd "$CLONE_PATH/$PROJECT" &>/dev/null
+    git pull -f
+    popd &> /dev/null
+  fi
+
+  # Don't license scan kernel or qemu in kvmfornfv
+  if [ "$PROJECT" == "kvmfornfv" ]; then
+    rm -rf "$CLONE_PATH/$PROJECT/{kernel,qemu}"
+  fi
+done
+
+echo "Finished cloning OPNFV repositories"
+echo "-----------------------------------"
+
+# Copy repos and clear git data
+echo "Copying repos to $WORKSPACE/opnfv-archive and removing .git files"
+cp -R $CLONE_PATH $WORKSPACE/opnfv-archive
+find $WORKSPACE/opnfv-archive -type d -iname '.git' -exec rm -rf {} +
+find $WORKSPACE/opnfv-archive -type f -iname '.git*' -exec rm -rf {} +
+
+# Create archive
+echo "Creating archive: opnfv-archive-$DATE.tar.gz"
+echo "--------------------------------------"
+cd $WORKSPACE
+tar -czf "opnfv-archive-$DATE.tar.gz" opnfv-archive && rm -rf opnfv-archive
+echo "Archiving Complete."
+
+echo "Uploading artifacts"
+echo "--------------------------------------"
+
+gsutil cp "$WORKSPACE/opnfv-archive-$DATE.tar.gz" \
+    "gs://opnfv-archive/opnfv-archive-$DATE.tar.gz" 2>&1
+
+rm -f opnfv-archive-$DATE.tar.gz
+
+echo "Finished"
index 717bb3c..ac1ec07 100644 (file)
@@ -4,6 +4,8 @@
 
     jobs:
         - 'prune-docker-images'
+        - 'archive-repositories'
+
 ########################
 # job templates
 ########################
 
     triggers:
         - timed: '@midnight'
+
+- job-template:
+    name: 'archive-repositories'
+
+    disabled: false
+
+    concurrent: true
+
+    parameters:
+        - node:
+            name: SLAVE_NAME
+            description: Where to create the archive
+            default-slaves:
+                - master
+            allowed-multiselect: false
+            ignore-offline-nodes: true
+
+    triggers:
+        - timed: '@monthly'
+
+    builders:
+        - shell:
+            !include-raw-escape: opnfv-repo-archiver.sh