aboutsummaryrefslogtreecommitdiffstats
path: root/pom.xml
blob: 234ba6997dd53ae3e614a47e13994356f9ae0b76 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?xml version="1.0" encoding="UTF-8"?>
<!--
    Copyright 2017 Huawei Technologies Co., Ltd.

    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.
 -->
<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>2.0.0</version>
    </parent>

    <groupId>org.onap.cli</groupId>
    <artifactId>cli</artifactId>
    <version>4.0.0-SNAPSHOT</version>

    <packaging>pom</packaging>
    <name>cli</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <package.name>cli</package.name>
        <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>
    </properties>

  <modules>
        <module>framework</module>
        <module>profiles</module>
        <module>products</module>
        <module>main</module>
        <module>validate</module>
        <module>grpc</module>
        <module>deployment</module>
  </modules>

    <distributionManagement>
      <site>
        <id>ecomp-site</id>
        <url>dav:${onap.nexus.url}${sitePath}</url>
      </site>
    </distributionManagement>

    <build>
        <pluginManagement>
          <plugins>
            <plugin>
             <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-surefire-plugin</artifactId>
               <configuration>
                 <systemPropertyVariables>
                    <ONAP_CLI_HOME>.</ONAP_CLI_HOME>
                 </systemPropertyVariables>
               </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.0.2</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                        </manifest>
                        <manifestEntries>
                            <Build-Time>${maven.build.timestamp}</Build-Time>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
="k">) TOX_FILES="$TOX_FILES $(find . -name 'venv-tox')" for F in $TOX_FILES; do rm -rf "$F" done } expand_templates() { # set up env variables, get ready for template resolution # NOTE: CCSDK artifacts do not distinguish REALESE vs SNAPSHOTs export ONAPTEMPLATE_RAWREPOURL_org_onap_ccsdk_platform_plugins_releases="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.ccsdk.platform.plugins" export ONAPTEMPLATE_RAWREPOURL_org_onap_ccsdk_platform_plugins_snapshots="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.ccsdk.platform.plugins" export ONAPTEMPLATE_RAWREPOURL_org_onap_ccsdk_platform_blueprints_releases="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.ccsdk.platform.blueprints" export ONAPTEMPLATE_RAWREPOURL_org_onap_ccsdk_platform_blueprints_snapshots="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.ccsdk.platform.blueprints" export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_releases="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2/releases" export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_snapshots="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2/snapshots" export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_platform_plugins_releases="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2.platform.plugins/releases" export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_platform_plugins_snapshots="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2.platform.plugins/snapshots" export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_platform_blueprints_releases="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2.platform.blueprints/releases" export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_platform_blueprints_snapshots="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2.platform.blueprints/snapshots" export ONAPTEMPLATE_PYPIURL_org_onap_dcaegen2="${MVN_NEXUSPROXY}/content/sites/pypi" export ONAPTEMPLATE_DOCKERREGURL_org_onap_dcaegen2_releases="$MVN_DOCKERREGISTRY_DAILY" export ONAPTEMPLATE_DOCKERREGURL_org_onap_dcaegen2_snapshots="$MVN_DOCKERREGISTRY_DAILY/snapshots" TEMPLATE_FILES=$(find . -name "*-template") for F in $TEMPLATE_FILES; do F2=$(echo "$F" | sed 's/-template$//') cp "$F" "$F2" MOD=$(stat --format '%a' "$F") chmod "$MOD" "$F2" done TEMPLATES=$(env |grep ONAPTEMPLATE) if [ -z "$TEMPLATES" ]; then return 0 fi echo "====> Resolving the following temaplate from environment variables " echo "[$TEMPLATES]" SELFFILE=$(echo "$0" | rev | cut -f1 -d '/' | rev) for TEMPLATE in $TEMPLATES; do KEY=$(echo "$TEMPLATE" | cut -f1 -d'=') VALUE=$(echo "$TEMPLATE" | cut -f2 -d'=') VALUE2=$(echo "$TEMPLATE" | cut -f2 -d'=' |sed 's/\//\\\//g') set +e FILES=$(grep -rl "$KEY") set -e if [ -z "$FILES" ]; then continue fi # assuming FILES is not longer than 2M bytes, the limit for variable value max size on this VM for F in $FILES; do if [[ $F == *"$SELFFILE" ]]; then continue fi if [[ "$F" == *-template ]]; then continue fi echo "======> Resolving template $KEY to value $VALUE for file $F" sed -i "s/{{[[:space:]]*$KEY[[:space:]]*}}/$VALUE2/g" "$F" #cat "$F" done #if [ ! -z "$FILES" ]; then # echo "====> Resolving template $VALUE to value $VALUE" # #CMD="grep -rl \"$VALUE\" | tr '\n' '\0' | xargs -0 sed -i \"s/{{[[:space:]]*$VALUE[[:space:]]*}}/$VALUE/g\"" # grep -rl "$KEY" | tr '\n' '\0' | xargs -0 sed -i 's/$KEY/$VALUE2/g' # #echo $CMD # #eval $CMD #fi done echo "====> Done template reolving" } run_tox_test() { set -x CURDIR=$(pwd) TOXINIS=$(find . -name "tox.ini") for TOXINI in "${TOXINIS[@]}"; do DIR=$(echo "$TOXINI" | rev | cut -f2- -d'/' | rev) cd "${CURDIR}/${DIR}" rm -rf ./venv-tox ./.tox virtualenv ./venv-tox source ./venv-tox/bin/activate pip install --upgrade pip pip install --upgrade tox argparse pip freeze tox deactivate rm -rf ./venv-tox ./.tox done } build_wagons() { rm -rf ./*.wgn venv-pkg SETUPFILES=$(find . -name "setup.py") for SETUPFILE in $SETUPFILES; do PLUGIN_DIR=$(echo "$SETUPFILE" |rev | cut -f 2- -d '/' |rev) PLUGIN_NAME=$(grep 'name' "$SETUPFILE" | cut -f2 -d'=' | sed 's/[^0-9a-zA-Z\.]*//g') PLUGIN_VERSION=$(grep 'version' "$SETUPFILE" | cut -f2 -d'=' | sed 's/[^0-9\.]*//g') echo "In $PLUGIN_DIR, $PLUGIN_NAME, $PLUGIN_VERSION" virtualenv ./venv-pkg source ./venv-pkg/bin/activate pip install --upgrade pip pip install wagon wagon create --format tar.gz "$PLUGIN_DIR" deactivate rm -rf venv-pkg PKG_FILE_NAMES=( "${PLUGIN_NAME}-${PLUGIN_VERSION}"*.wgn ) echo Built package: "${PKG_FILE_NAMES[@]}" done } upload_raw_file() { # Extract the username and password to the nexus repo from the settings file USER=$(xpath -q -e "//servers/server[id='$MVN_RAWREPO_SERVERID']/username/text()" "$SETTINGS_FILE") PASS=$(xpath -q -e "//servers/server[id='$MVN_RAWREPO_SERVERID']/password/text()" "$SETTINGS_FILE") NETRC=$(mktemp) echo "machine $MVN_RAWREPO_HOST login $USER password $PASS" > "$NETRC" REPO="$MVN_RAWREPO_BASEURL_UPLOAD" OUTPUT_FILE=$1 EXT=$(echo "$OUTPUT_FILE" | rev |cut -f1 -d '.' |rev) if [ "$EXT" == 'yaml' ]; then OUTPUT_FILE_TYPE='text/x-yaml' elif [ "$EXT" == 'sh' ]; then OUTPUT_FILE_TYPE='text/x-shellscript' elif [ "$EXT" == 'gz' ]; then OUTPUT_FILE_TYPE='application/gzip' elif [ "$EXT" == 'wgn' ]; then OUTPUT_FILE_TYPE='application/gzip' else OUTPUT_FILE_TYPE='application/octet-stream' fi if [ "$MVN_DEPLOYMENT_TYPE" == 'SNAPSHOT' ]; then SEND_TO="${REPO}/${FQDN}/snapshots" elif [ "$MVN_DEPLOYMENT_TYPE" == 'STAGING' ]; then SEND_TO="${REPO}/${FQDN}/releases" else echo "Unreconfnized deployment type, quit" exit fi if [ ! -z "$MVN_PROJECT_MODULEID" ]; then SEND_TO="$SEND_TO/$MVN_PROJECT_MODULEID" fi echo "Sending ${OUTPUT_FILE} to Nexus: ${SEND_TO}" curl -vkn --netrc-file "${NETRC}" --upload-file "${OUTPUT_FILE}" -X PUT -H "Content-Type: $OUTPUT_FILE_TYPE" "${SEND_TO}/${OUTPUT_FILE}-${MVN_PROJECT_VERSION}-${TIMESTAMP}" curl -vkn --netrc-file "${NETRC}" --upload-file "${OUTPUT_FILE}" -X PUT -H "Content-Type: $OUTPUT_FILE_TYPE" "${SEND_TO}/${OUTPUT_FILE}-${MVN_PROJECT_VERSION}" curl -vkn --netrc-file "${NETRC}" --upload-file "${OUTPUT_FILE}" -X PUT -H "Content-Type: $OUTPUT_FILE_TYPE" "${SEND_TO}/${OUTPUT_FILE}" } upload_wagons_and_type_yamls() { WAGONS=$(ls -1 ./*.wgn) for WAGON in $WAGONS ; do WAGON_NAME=$(echo "$WAGON" | cut -f1 -d '-') WAGON_VERSION=$(echo "$WAGON" | cut -f2 -d '-') WAGON_TYPEFILE=$(grep -rl "$WAGON_NAME" | grep yaml | head -1) upload_raw_file "$WAGON" upload_raw_file "$WAGON_TYPEFILE" done } upload_files_of_extension() { FILES=$(ls -1 ./*."$1") for F in $FILES ; do upload_raw_file "$F" done } build_and_push_docker() { IMAGENAME="onap/${FQDN}.${MVN_PROJECT_MODULEID}" IMAGENAME=$(echo "$IMAGENAME" | sed -e 's/_*$//g' -e 's/\.*$//g') # use the major and minor version of the MVN artifact version as docker image version VERSION="${MVN_PROJECT_VERSION//[^0-9.]/}" VERSION2=$(echo "$VERSION" | cut -f1-2 -d'.') LFQI="${IMAGENAME}:${VERSION}-${TIMESTAMP}" BUILD_PATH="${WORKSPACE}" # build a docker image docker build --rm -f "${WORKSPACE}"/Dockerfile -t "${LFQI}" "${BUILD_PATH}" REPO="" if [ $MVN_DEPLOYMENT_TYPE == "SNAPSHOT" ]; then REPO=$MVN_DOCKERREGISTRY_DAILY elif [ $MVN_DEPLOYMENT_TYPE == "STAGING" ]; then # there seems to be no staging docker registry? set to use SNAPSHOT also #REPO=$MVN_DOCKERREGISTRY_RELEASE REPO=$MVN_DOCKERREGISTRY_DAILY else echo "Fail to determine DEPLOYMENT_TYPE" REPO=$MVN_DOCKERREGISTRY_DAILY fi echo "DEPLOYMENT_TYPE is: $MVN_DEPLOYMENT_TYPE, repo is $REPO" if [ ! -z "$REPO" ]; then USER=$(xpath -e "//servers/server[id='$REPO']/username/text()" "$SETTINGS_FILE") PASS=$(xpath -e "//servers/server[id='$REPO']/password/text()" "$SETTINGS_FILE") if [ -z "$USER" ]; then echo "Error: no user provided" fi if [ -z "$PASS" ]; then echo "Error: no password provided" fi [ -z "$PASS" ] && PASS_PROVIDED="<empty>" || PASS_PROVIDED="<password>" echo docker login "$REPO" -u "$USER" -p "$PASS_PROVIDED" docker login "$REPO" -u "$USER" -p "$PASS" if [ $MVN_DEPLOYMENT_TYPE == "SNAPSHOT" ]; then REPO="$REPO/snapshots" elif [ $MVN_DEPLOYMENT_TYPE == "STAGING" ]; then # there seems to be no staging docker registry? set to use SNAPSHOT also #REPO=$MVN_DOCKERREGISTRY_RELEASE REPO="$REPO" else echo "Fail to determine DEPLOYMENT_TYPE" REPO="$REPO/unknown" fi OLDTAG="${LFQI}" PUSHTAGS="${REPO}/${IMAGENAME}:${VERSION2}-${TIMESTAMP} ${REPO}/${IMAGENAME}:${VERSION2} ${REPO}/${IMAGENAME}:${VERSION2}-latest" for NEWTAG in ${PUSHTAGS} do echo "tagging ${OLDTAG} to ${NEWTAG}" docker tag "${OLDTAG}" "${NEWTAG}" echo "pushing ${NEWTAG}" docker push "${NEWTAG}" OLDTAG="${NEWTAG}" done fi }