summaryrefslogtreecommitdiffstats
path: root/auth/docker/dbuild.sh
blob: 0a81646132b0836a956fb085bf0b5072e178b460 (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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
#########
#  ============LICENSE_START====================================================
#  org.onap.aaf
#  ===========================================================================
#  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====================================================
#
# Docker Building Script.  Reads all the components generated by install, on per-version basis
#

# Pull in Variables from d.props
if [ ! -e ./d.props ]; then
    cp d.props.init d.props
fi

. ./d.props

# Remove "SNAPSHOT" from AAF Jars in Containers
JAR_VERSION=${VERSION/-SNAPSHOT/}

# process input. originally, an optional positional parameter is used to designate a component.
# A flagged parameter has been added to optionally indicate docker pull registry. Ideally, options
# would be flagged but we're avoiding ripple effect of changing original usage
if [ $# -gt 0 ]; then
    if [ "$1" == "-r" ]; then
        DOCKER_PULL_REGISTRY=$2
    else
        AAF_COMPONENTS=$1
        if [[ $# -gt 1 && $2 == "-r" ]]; then
            # If docker.io is indicated, registry var is void as that is docker default
            if [ $3 == "docker.io" ]; then
                DOCKER_PULL_REGISTRY=''
            else
                DOCKER_PULL_REGISTRY=$3
            fi
        fi
    fi
fi

grep -v '#' d.props | grep '=' | grep -v -e "=$"

DOCKER=${DOCKER:=docker}

echo "Building Containers for aaf components, version $VERSION"
# AAF_cass now needs a version...
echo "### Build Cass"
cd ../auth-cass/docker
pwd
bash ./dbuild.sh $DOCKER_PULL_REGISTRY
cd -

########
# First, build a AAF Base version - set the core image, etc
echo "### Build Base"
sed -e 's/${AAF_VERSION}/'${VERSION}'/g' \
    -e 's/${JAR_VERSION}/'${JAR_VERSION}'/g' \
    -e 's/${DUSER}/'${DUSER}'/g' \
    -e 's/${REGISTRY}/'${DOCKER_PULL_REGISTRY}'/g' \
    Dockerfile.base > Dockerfile
$DOCKER build -t ${ORG}/${PROJECT}/aaf_base:${VERSION} .
$DOCKER tag ${ORG}/${PROJECT}/aaf_base:${VERSION} ${DOCKER_REPOSITORY}/${ORG}/${PROJECT}/aaf_base:${VERSION}
$DOCKER tag ${ORG}/${PROJECT}/aaf_base:${VERSION} ${DOCKER_REPOSITORY}/${ORG}/${PROJECT}/aaf_base:latest
rm Dockerfile

function SCP() {
  SANS=${1/-SNAPSHOT/}
  echo $1 = $SANS
  if [ -e $SANS ]; then
    cp $SANS $2
  else 

    ln $1 $SANS
    cp $SANS $2
    rm $SANS
  fi
}

########
# Second, Create the AAF Config (Security) Images
cd ..
# Note: only 2 jars each in Agent/Config
SCP auth-cmd/target/aaf-auth-cmd-$VERSION-full.jar sample/bin
SCP auth-batch/target/aaf-auth-batch-$VERSION-full.jar sample/bin
SCP ../cadi/aaf/target/aaf-cadi-aaf-${VERSION}-full.jar sample/bin
SCP ../cadi/servlet-sample/target/aaf-cadi-servlet-sample-${VERSION}-sample.jar sample/bin
cp -Rf ../conf/CA sample

# AAF Config image (for AAF itself)
echo "### Build Config"
sed -e 's/${AAF_VERSION}/'${VERSION}'/g' \
    -e 's/${JAR_VERSION}/'${JAR_VERSION}'/g' \
    -e 's/${AAF_COMPONENT}/'${AAF_COMPONENT}'/g' \
    -e 's/${DOCKER_REPOSITORY}/'${DOCKER_REPOSITORY}'/g' \
    -e 's/${DUSER}/'${DUSER}'/g' \
    docker/Dockerfile.config > sample/Dockerfile
$DOCKER build -t ${ORG}/${PROJECT}/aaf_config:${VERSION} sample
$DOCKER tag ${ORG}/${PROJECT}/aaf_config:${VERSION} ${DOCKER_REPOSITORY}/${ORG}/${PROJECT}/aaf_config:${VERSION}
$DOCKER tag ${ORG}/${PROJECT}/aaf_config:${VERSION} ${DOCKER_REPOSITORY}/${ORG}/${PROJECT}/aaf_config:latest


# AAF Agent Image (for Clients)
echo "### Build Agent"
sed -e 's/${AAF_VERSION}/'${VERSION}'/g' \
    -e 's/${JAR_VERSION}/'${JAR_VERSION}'/g' \
    -e 's/${AAF_COMPONENT}/'${AAF_COMPONENT}'/g' \
    -e 's/${DOCKER_REPOSITORY}/'${DOCKER_REPOSITORY}'/g' \
    -e 's/${DUSER}/'${DUSER}'/g' \
    docker/Dockerfile.agent > sample/Dockerfile
$DOCKER build -t ${ORG}/${PROJECT}/aaf_agent:${VERSION} sample
$DOCKER tag ${ORG}/${PROJECT}/aaf_agent:${VERSION} ${DOCKER_REPOSITORY}/${ORG}/${PROJECT}/aaf_agent:${VERSION}
$DOCKER tag ${ORG}/${PROJECT}/aaf_agent:${VERSION} ${DOCKER_REPOSITORY}/${ORG}/${PROJECT}/aaf_agent:latest

# Clean up 
rm sample/Dockerfile sample/bin/aaf-*-*.jar 
rm -Rf sample/CA
cd -


########
# Third Copy AAF Executables to a BUILD Directory, for easy Cleanup
echo "### Copy to aaf_DBUILD"
if [ -e "../aaf_$VERSION" ]; then
  cp -Rf ../aaf_$VERSION ../aaf_DBUILD
elif [ -e "../aaf_$JAR_VERSION" ]; then
  cp -Rf ../aaf_$JAR_VERSION ../aaf_DBUILD
else
  echo "ERROR: No AAF Built.  use Maven"
  exit
fi
if [ ! "$VERSION" = "$JAR_VERSION" ]; then 
  START_DIR=$(pwd)
  # Convert SNAPSHOT issues
  cp -Rf ../aaf_$VERSION ../aaf_DBUILD
  cd ../aaf_DBUILD/lib
  # If Built Jars are "SNAPSHOT", convert to NON SNAPSHOT
  for J in $(ls *-SNAPSHOT*); do mv $J ${J/-SNAPSHOT/}; done
  cd ../bin
  rm *.bat
  for S in $(ls); do
     sed -e "/$VERSION/s/$VERSION/$JAR_VERSION/g" $S > tmp
     mv tmp $S
  done
  cd ${START_DIR}
fi

########
# Third, build a core Docker Image to be used for all AAF Components
cp ../sample/bin/pod_wait.sh  ../aaf_DBUILD/bin
# Apply currrent Properties to Docker file, and put in place.
sed -e 's/${AAF_VERSION}/'${VERSION}'/g' \
    -e 's/${JAR_VERSION}/'${JAR_VERSION}'/g' \
    -e 's/${AAF_COMPONENT}/'${AAF_COMPONENT}'/g' \
    -e 's/${DOCKER_REPOSITORY}/'${DOCKER_REPOSITORY}'/g' \
    -e 's/${DUSER}/'${DUSER}'/g' \
    Dockerfile.core >../aaf_DBUILD/Dockerfile
cd ..

echo "### Building Core"
# Don't need "Hello" App in core
mv aaf_DBUILD/lib/aaf-auth-hello-${JAR_VERSION}* /tmp

$DOCKER build -t ${ORG}/${PROJECT}/aaf_core:${VERSION} aaf_DBUILD
$DOCKER tag ${ORG}/${PROJECT}/aaf_core:${VERSION} ${DOCKER_REPOSITORY}/${ORG}/${PROJECT}/aaf_core:${VERSION}
$DOCKER tag ${ORG}/${PROJECT}/aaf_core:${VERSION} ${DOCKER_REPOSITORY}/${ORG}/${PROJECT}/aaf_core:latest
rm aaf_DBUILD/Dockerfile
mv /tmp/aaf-auth-hello-${JAR_VERSION}* aaf_DBUILD/lib

########
# Fourth, do Hello
# Apply currrent Properties to Docker file, and put in place.
echo "### Building Hello"
cd -
sed -e 's/${AAF_VERSION}/'${VERSION}'/g' \
    -e 's/${JAR_VERSION}/'${JAR_VERSION}'/g' \
    -e 's/${DOCKER_REPOSITORY}/'${DOCKER_REPOSITORY}'/g' \
    -e 's/${DUSER}/'${DUSER}'/g' \
    Dockerfile.hello >../aaf_DBUILD/Dockerfile
cd ..

cp -Rf sample/etc aaf_DBUILD
cp -Rf sample/logs aaf_DBUILD

for C in cass certman cmd deforg fs gui locate oauth service; do
   rm aaf_DBUILD/lib/aaf-auth-$C-*
done

$DOCKER build -t ${ORG}/${PROJECT}/aaf_hello:${VERSION} aaf_DBUILD
$DOCKER tag ${ORG}/${PROJECT}/aaf_hello:${VERSION} ${DOCKER_REPOSITORY}/${ORG}/${PROJECT}/aaf_hello:${VERSION}
$DOCKER tag ${ORG}/${PROJECT}/aaf_hello:${VERSION} ${DOCKER_REPOSITORY}/${ORG}/${PROJECT}/aaf_hello:latest

# Final cleanup
rm -Rf aaf_DBUILD

cd -