Maven clean/package/test/deploy for sshkeyshare 15/8815/3
authorAndrew Gauld <ag1282@att.com>
Fri, 25 Aug 2017 17:11:25 +0000 (13:11 -0400)
committerAndrew Gauld <ag1282@att.com>
Fri, 25 Aug 2017 18:16:19 +0000 (14:16 -0400)
Change-Id: I7074f904fc2025bc8b76a62bbf56e2b1f66f6045
Issue-Id: CCSDK-65
Signed-off-by: Andrew Gauld <ag1282@att.com>
mvn-phase-script.sh [new file with mode: 0755]
pom.xml
sshkeyshare/pom.xml [new file with mode: 0644]

diff --git a/mvn-phase-script.sh b/mvn-phase-script.sh
new file mode 100755 (executable)
index 0000000..5b14754
--- /dev/null
@@ -0,0 +1,118 @@
+#!/bin/bash
+# ============LICENSE_START====================================================
+# org.onap.ccsdk
+# =============================================================================
+# Copyright (c) 2017 AT&T Intellectual Property. All rights reserved.
+# =============================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END======================================================
+
+echo "running script: [$0] for module [$1] at stage [$2]"
+
+echo "=> Prepare environment "
+
+# This is the base for where "deploy" will upload
+# MVN_NEXUSPROXY is set in the pom.xml
+REPO=$MVN_NEXUSPROXY/content/sites/raw
+
+TIMESTAMP=$(date +%C%y%m%dT%H%M%S)
+export BUILD_NUMBER="${TIMESTAMP}"
+
+# expected environment variables
+if [ -z "${MVN_NEXUSPROXY}" ]; then
+    echo "MVN_NEXUSPROXY environment variable not set.  Cannot proceed"
+    exit
+fi
+MVN_NEXUSPROXY_HOST=$(echo $MVN_NEXUSPROXY |cut -f3 -d'/' | cut -f1 -d':')
+
+
+# use the version text detect which phase we are in in LF CICD process: verify, merge, or (daily) release
+
+# mvn phase in life cycle
+MVN_PHASE="$2"
+
+case $MVN_PHASE in
+clean)
+  echo "==> clean phase script"
+  rm -rf .testenv .pkgenv $PLUGIN_NAME-*.wgn $PLUGIN_SUBDIR/.tox $PLUGIN_SUBDIR/$PLUGIN_NAME.egg-info $(find $PLUGIN_SUBDIR -name __pycache__ -type d -print)
+  ;;
+generate-sources)
+  echo "==> generate-sources phase script"
+  # Nothing to do
+  ;;
+compile)
+  echo "==> compile phase script"
+  # Nothing to do
+  ;;
+test)
+  echo "==> test phase script"
+  if [ -f $PLUGIN_SUBDIR/tox.ini ]
+  then
+    set -e -x
+    rm -rf .testenv
+    mkdir .testenv
+    virtualenv .testenv
+    . .testenv/bin/activate
+    pip install --upgrade pip
+    pip install tox
+    (cd $PLUGIN_SUBDIR; tox)
+    deactivate
+    rm -rf .testenv
+    set +e +x
+  fi
+  ;;
+package)
+  echo "==> package phase script"
+  set -e -x
+  rm -rf $PLUGIN_NAME-*.wgn .pkgenv
+  mkdir .pkgenv
+  virtualenv .pkgenv
+  . .pkgenv/bin/activate
+  pip install --upgrade pip
+  pip install wagon
+  wagon create --format tar.gz $PLUGIN_SUBDIR
+  deactivate
+  rm -rf .pkgenv
+  ;;
+install)
+  echo "==> install phase script"
+  # Nothing to do
+  ;;
+deploy)
+  echo "==> deploy phase script"
+  # Just upload files to Nexus
+  set -e -x
+  function setnetrc {
+    # Turn off -x so won't leak the credentials
+    set +x
+    hostport=$(echo $1 | cut -f3 -d /)
+    host=$(echo $hostport | cut -f1 -d:)
+    settings=$HOME/.m2/settings.xml
+    ( echo machine $host; echo login $(xpath $settings "//servers/server[id='$MVN_SERVER_ID']/username/text()"); echo password $(xpath $settings "//servers/server[id='$MVN_SERVER_ID']/password/text()") ) >$HOME/.netrc
+    chmod 600 $HOME/.netrc
+    set -x
+  }
+  function putraw {
+    curl -X PUT -H "Content-Type: text/plain" --netrc --upload-file $1 --url $REPO/$2
+  }
+  setnetrc $REPO
+  PLUGIN_FILE=$(echo $PLUGIN_NAME-*.wgn)
+  putraw $PLUGIN_FILE plugins/$PLUGIN_FILE
+  putraw $TYPE_FILE_SOURCE $TYPE_FILE_DEST
+  set +e +x
+  ;;
+*)
+  echo "==> unprocessed phase"
+  ;;
+esac
+
diff --git a/pom.xml b/pom.xml
index 8ae657b..d36297d 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -1,14 +1,38 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0"?>
+<!--
+============LICENSE_START=======================================================
+org.onap.ccsdk
+================================================================================
+Copyright (c) 2017 AT&T Intellectual Property. All rights reserved.
+================================================================================
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
 
-    <modelVersion>4.0.0</modelVersion>
-    <packaging>pom</packaging>
-    <groupId>org.onap.ccsdk.platform_plugins</groupId>
-    <artifactId>platform-plugins</artifactId>
-    <version>0.1.0-SNAPSHOT</version>
+     http://www.apache.org/licenses/LICENSE-2.0
 
-    <name>PlatformPlugins</name>
-    <description>CCSD Platform Plugins</description>
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+============LICENSE_END=========================================================
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.onap.oparent</groupId>
+    <artifactId>oparent</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+  </parent>
+  <groupId>org.onap.ccsdk.platform</groupId>
+  <artifactId>plugins</artifactId>
+  <name>plugins</name>
+  <version>1.0.0-SNAPSHOT</version>
+  <url>http://maven.apache.org</url>
+  <packaging>pom</packaging>
+  <modules>
+     <module>sshkeyshare</module>
+  </modules>
 
 </project>
diff --git a/sshkeyshare/pom.xml b/sshkeyshare/pom.xml
new file mode 100644 (file)
index 0000000..f5653f9
--- /dev/null
@@ -0,0 +1,304 @@
+<?xml version="1.0"?>
+<!--
+============LICENSE_START=======================================================
+org.onap.ccsdk
+================================================================================
+Copyright (c) 2017 AT&T Intellectual Property. All rights reserved.
+================================================================================
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+============LICENSE_END=========================================================
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.onap.ccsdk.platform</groupId>
+    <artifactId>plugins</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+  </parent>
+
+  <!--- CHANGE THE FOLLOWING 3 OBJECTS for your own repo -->
+  <groupId>org.onap.ccsdk.platform.plugins</groupId>
+  <artifactId>sshkeyshare</artifactId>
+  <name>sshkeyshare</name>
+
+  <version>1.0.0-SNAPSHOT</version>
+  <url>http://maven.apache.org</url>
+  <properties>
+    <!-- name from the setup.py file -->
+    <plugin.name>sshkeyshare</plugin.name>
+    <!-- path to directory containing the setup.py relative to this file -->
+    <plugin.subdir>.</plugin.subdir>
+    <!-- path of types file itself relative to this file -->
+    <typefile.source>sshkey_types.yaml</typefile.source>
+    <!-- path, in repo, to store type file -->
+    <typefile.dest>type_files/sshkeyshare/sshkey_types.yaml</typefile.dest>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <sonar.sources>.</sonar.sources>
+    <!-- customize the SONARQUBE URL -->
+    <sonar.host.url>http://localhost:9000</sonar.host.url>
+    <!-- below are language dependent -->
+    <!-- for Python -->
+    <sonar.language>py</sonar.language>
+    <sonar.pluginName>Python</sonar.pluginName>
+    <sonar.inclusions>**/*.py</sonar.inclusions>
+    <!-- for JavaScaript -->
+    <!--
+    <sonar.language>js</sonar.language>
+    <sonar.pluginName>JS</sonar.pluginName>
+    <sonar.inclusions>**/*.js</sonar.inclusions>
+    -->
+  </properties>
+
+  <build>
+    <finalName>${project.artifactId}-${project.version}</finalName>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.codehaus.mojo</groupId>
+          <artifactId>sonar-maven-plugin</artifactId>
+          <version>2.7.1</version>
+        </plugin>
+
+        <!-- nexus-staging-maven-plugin is called during deploy phase by default behavior.
+         we do not need it -->
+        <plugin>
+          <groupId>org.sonatype.plugins</groupId>
+          <artifactId>nexus-staging-maven-plugin</artifactId>
+          <version>1.6.7</version>
+          <configuration>
+            <skipNexusStagingDeployMojo>true</skipNexusStagingDeployMojo>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+
+    <plugins>
+
+      <!-- first disable the default Java plugins at various stages -->
+      <!-- maven-resources-plugin is called during "*resource" phases by default behavior.  it prepares the resources
+       dir.  we do not need it -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-resources-plugin</artifactId>
+        <version>2.6</version>
+        <configuration>
+          <skip>true</skip>
+        </configuration>
+      </plugin>
+
+      <!-- maven-compiler-plugin is called during "compile" phases by default behavior.  we do not need it -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>3.1</version>
+        <configuration>
+          <skip>true</skip>
+        </configuration>
+      </plugin>
+
+      <!-- maven-jar-plugin is called during "compile" phase by default behavior.  we do not need it -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>2.4</version>
+        <executions>
+          <execution>
+            <id>default-jar</id>
+            <phase/>
+          </execution>
+        </executions>
+      </plugin>
+
+      <!-- maven-install-plugin is called during "install" phase by default behavior.  it tries to copy stuff under
+       target dir to ~/.m2.  we do not need it -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-install-plugin</artifactId>
+        <version>2.4</version>
+        <configuration>
+          <skip>true</skip>
+        </configuration>
+      </plugin>
+
+      <!-- maven-surefire-plugin is called during "test" phase by default behavior.  it triggers junit test.
+       we do not need it -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <version>2.12.4</version>
+        <configuration>
+          <skipTests>true</skipTests>
+        </configuration>
+      </plugin>
+
+      <!-- now we configure custom action (calling a script) at various lifecycle phases -->
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>exec-maven-plugin</artifactId>
+        <version>1.2.1</version>
+        <executions>
+          <execution>
+            <id>clean phase script</id>
+            <phase>clean</phase>
+            <goals><goal>exec</goal></goals>
+            <configuration>
+              <executable>${session.executionRootDirectory}/mvn-phase-script.sh</executable>
+              <arguments>
+                <argument>${project.artifactId}</argument>
+                <argument>clean</argument>
+              </arguments>
+              <environmentVariables>
+                <!-- make mvn properties as env for our script -->
+                <MVN_PROJECT_GROUPID>${project.groupId}</MVN_PROJECT_GROUPID>
+                <MVN_PROJECT_ARTIFACTID>${project.artifactId}</MVN_PROJECT_ARTIFACTID>
+                <MVN_PROJECT_VERSION>${project.version}</MVN_PROJECT_VERSION>
+                <MVN_NEXUSPROXY>${onap.nexus.url}</MVN_NEXUSPROXY>
+                <PLUGIN_NAME>${plugin.name}</PLUGIN_NAME>
+                <PLUGIN_SUBDIR>${plugin.subdir}</PLUGIN_SUBDIR>
+              </environmentVariables>
+            </configuration>
+          </execution>
+
+          <execution>
+            <id>generate-sources script</id>
+            <phase>generate-sources</phase>
+            <goals><goal>exec</goal></goals>
+            <configuration>
+              <executable>mvn-phase-script.sh</executable>
+              <arguments>
+                <argument>${project.artifactId}</argument>
+                <argument>generate-sources</argument>
+              </arguments>
+              <environmentVariables>
+                <!-- make mvn properties as env for our script -->
+                <MVN_PROJECT_GROUPID>${project.groupId}</MVN_PROJECT_GROUPID>
+                <MVN_PROJECT_ARTIFACTID>${project.artifactId}</MVN_PROJECT_ARTIFACTID>
+                <MVN_PROJECT_VERSION>${project.version}</MVN_PROJECT_VERSION>
+                <MVN_NEXUSPROXY>${onap.nexus.url}</MVN_NEXUSPROXY>
+              </environmentVariables>
+            </configuration>
+          </execution>
+
+          <execution>
+            <id>compile script</id>
+            <phase>compile</phase>
+            <goals><goal>exec</goal></goals>
+            <configuration>
+              <executable>mvn-phase-script.sh</executable>
+              <arguments>
+                <argument>${project.artifactId}</argument>
+                <argument>compile</argument>
+              </arguments>
+              <environmentVariables>
+                <!-- make mvn properties as env for our script -->
+                <MVN_PROJECT_GROUPID>${project.groupId}</MVN_PROJECT_GROUPID>
+                <MVN_PROJECT_ARTIFACTID>${project.artifactId}</MVN_PROJECT_ARTIFACTID>
+                <MVN_PROJECT_VERSION>${project.version}</MVN_PROJECT_VERSION>
+                <MVN_NEXUSPROXY>${onap.nexus.url}</MVN_NEXUSPROXY>
+              </environmentVariables>
+            </configuration>
+          </execution>
+
+          <execution>
+            <id>package script</id>
+            <phase>package</phase>
+            <goals><goal>exec</goal></goals>
+            <configuration>
+              <executable>mvn-phase-script.sh</executable>
+              <arguments>
+                <argument>${project.artifactId}</argument>
+                <argument>package</argument>
+              </arguments>
+              <environmentVariables>
+                <!-- make mvn properties as env for our script -->
+                <MVN_PROJECT_GROUPID>${project.groupId}</MVN_PROJECT_GROUPID>
+                <MVN_PROJECT_ARTIFACTID>${project.artifactId}</MVN_PROJECT_ARTIFACTID>
+                <MVN_PROJECT_VERSION>${project.version}</MVN_PROJECT_VERSION>
+                <MVN_NEXUSPROXY>${onap.nexus.url}</MVN_NEXUSPROXY>
+                <PLUGIN_NAME>${plugin.name}</PLUGIN_NAME>
+                <PLUGIN_SUBDIR>${plugin.subdir}</PLUGIN_SUBDIR>
+              </environmentVariables>
+            </configuration>
+          </execution>
+
+          <execution>
+            <id>test script</id>
+            <phase>test</phase>
+            <goals><goal>exec</goal></goals>
+            <configuration>
+              <executable>mvn-phase-script.sh</executable>
+              <arguments>
+                <argument>${project.artifactId}</argument>
+                <argument>test</argument>
+              </arguments>
+              <environmentVariables>
+                <!-- make mvn properties as env for our script -->
+                <MVN_PROJECT_GROUPID>${project.groupId}</MVN_PROJECT_GROUPID>
+                <MVN_PROJECT_ARTIFACTID>${project.artifactId}</MVN_PROJECT_ARTIFACTID>
+                <MVN_PROJECT_VERSION>${project.version}</MVN_PROJECT_VERSION>
+                <MVN_NEXUSPROXY>${onap.nexus.url}</MVN_NEXUSPROXY>
+                <PLUGIN_NAME>${plugin.name}</PLUGIN_NAME>
+                <PLUGIN_SUBDIR>${plugin.subdir}</PLUGIN_SUBDIR>
+              </environmentVariables>
+            </configuration>
+          </execution>
+
+          <execution>
+            <id>install script</id>
+            <phase>install</phase>
+            <goals><goal>exec</goal></goals>
+            <configuration>
+              <executable>mvn-phase-script.sh</executable>
+              <arguments>
+                <argument>${project.artifactId}</argument>
+                <argument>install</argument>
+              </arguments>
+              <environmentVariables>
+                <!-- make mvn properties as env for our script -->
+                <MVN_PROJECT_GROUPID>${project.groupId}</MVN_PROJECT_GROUPID>
+                <MVN_PROJECT_ARTIFACTID>${project.artifactId}</MVN_PROJECT_ARTIFACTID>
+                <MVN_PROJECT_VERSION>${project.version}</MVN_PROJECT_VERSION>
+                <MVN_NEXUSPROXY>${onap.nexus.url}</MVN_NEXUSPROXY>
+              </environmentVariables>
+            </configuration>
+          </execution>
+
+          <execution>
+            <id>deploy script</id>
+            <phase>deploy</phase>
+            <goals><goal>exec</goal></goals>
+            <configuration>
+              <executable>${session.executionRootDirectory}/mvn-phase-script.sh</executable>
+              <arguments>
+                <argument>${project.artifactId}</argument>
+                <argument>deploy</argument>
+              </arguments>
+              <environmentVariables>
+                <!-- make mvn properties as env for our script -->
+                <MVN_PROJECT_GROUPID>${project.groupId}</MVN_PROJECT_GROUPID>
+                <MVN_PROJECT_ARTIFACTID>${project.artifactId}</MVN_PROJECT_ARTIFACTID>
+                <MVN_PROJECT_VERSION>${project.version}</MVN_PROJECT_VERSION>
+                <MVN_NEXUSPROXY>${onap.nexus.url}</MVN_NEXUSPROXY>
+                <MVN_SERVER_ID>${project.distributionManagement.snapshotRepository.id}</MVN_SERVER_ID>
+                <TYPE_FILE_SOURCE>${typefile.source}</TYPE_FILE_SOURCE>
+                <TYPE_FILE_DEST>${typefile.dest}</TYPE_FILE_DEST>
+                <PLUGIN_NAME>${plugin.name}</PLUGIN_NAME>
+                <PLUGIN_SUBDIR>${plugin.subdir}</PLUGIN_SUBDIR>
+              </environmentVariables>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>