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
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
|
#########
# ============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/}
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
}
# 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
shift
fi
fi
fi
grep -v '#' d.props | grep '=' | grep -v -e "=$"
DOCKER=${DOCKER:=docker}
########
# Preliminary: if Cass exists, build that first
if [[ -z "$1" || "$1" = "cass" ]]; then
echo "#### Delegate to Cassandra build"
echo "Building Containers for aaf components, version $VERSION"
# AAF_cass now needs a version...
echo "### Build Cass"
cd ../auth-cass/docker
bash ./dbuild.sh $DOCKER_PULL_REGISTRY
cd -
fi
if [[ -z "$1" || "$1" = "base" ]]; then
########
# 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
fi
# Common copies
cd ..
SCP ../cadi/aaf/target/aaf-cadi-aaf-${VERSION}-full.jar sample/bin
if [[ -z "$1" || "$1" = "config" ]]; then
########
# Second, Create the AAF Config (Security) Images
# 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/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
# Note: do Config as Root, to get directories correct
$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
fi
if [[ -z "$1" || "$1" = "agent" ]]; then
# 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
#if [ -n "$DUSER" ]; then
# echo "USER $DUSER" >> sample/Dockerfile
#fi
$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
fi
# Clean up
rm -Rf sample/Dockerfile sample/bin/aaf-*-*.jar 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
cp ../sample/bin/pod_wait.sh ../aaf_DBUILD/bin
if [[ -z "$1" || "$1" = "core" ]]; then
########
# Fourth, build a core Docker Image to be used for all AAF Components
# 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
if [ -n "$DUSER" ]; then
echo "USER $DUSER" >> ../aaf_DBUILD/Dockerfile
fi
cd ..
$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
cd -
fi
if [[ -z "$1" || "$1" = "hello" ]]; then
########
# Fifth, do Hello
# Apply currrent Properties to Docker file, and put in place.
echo "### Building Hello"
cp ../sample/bin/client.sh ../aaf_DBUILD/bin
cp ../sample/hello/init.sh ../aaf_DBUILD/bin/hello_init.sh
SCP ../../cadi/aaf/target/aaf-cadi-aaf-${VERSION}-full.jar ../aaf_DBUILD/bin
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
#if [ -n "$DUSER" ]; then
# echo "USER $DUSER" >> ../aaf_DBUILD/Dockerfile
#fi
cd ..
cp -Rf sample/etc aaf_DBUILD
cp -Rf sample/logs aaf_DBUILD
cp -Rf sample/cert 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
if [ -n ${DOCKER_REPOSITORY} ]; then
$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
fi
cd -
fi
# Final cleanup
rm -Rf ../aaf_DBUILD
|