summaryrefslogtreecommitdiffstats
path: root/auth/docker/dbuild.sh
blob: 3b764547741edc72b8bf6bfbace725f42d1406e2 (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
#!/bin/bash
#########
#  ============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

# 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

echo "$0: AAF_COMPONENTS=$AAF_COMPONENTS DOCKER_PULL_REGISTRY=$DOCKER_PULL_REGISTRY"

DOCKER=${DOCKER:=docker}

echo "Building Containers for aaf components, version $VERSION"

# AAF_cass now needs a version...
cd ../auth-cass/docker
bash ./dbuild.sh $DOCKER_PULL_REGISTRY
cd -

########
# First, build a AAF Base version - set the core image, etc
sed -e 's/${AAF_VERSION}/'${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

########
# Second, Create the AAF Config (Security) Images
cd ..
cp auth-cmd/target/aaf-auth-cmd-$VERSION-full.jar sample/bin
cp auth-batch/target/aaf-auth-batch-$VERSION-full.jar sample/bin
cp -Rf ../conf/CA sample

# AAF Config image (for AAF itself)
sed -e 's/${AAF_VERSION}/'${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

cp ../cadi/servlet-sample/target/aaf-cadi-servlet-sample-${VERSION}-sample.jar sample/bin
# AAF Agent Image (for Clients)
sed -e 's/${AAF_VERSION}/'${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-*-${VERSION}-full.jar sample/bin/aaf-cadi-servlet-sample-${VERSION}-sample.jar 
rm -Rf sample/CA
cd -

########
# Third, build a core Docker Image to be used for all AAF Components
echo Building aaf_$AAF_COMPONENT...
cp ../sample/bin/pod_wait.sh  ../aaf_${VERSION}/bin
# Apply currrent Properties to Docker file, and put in place.
sed -e 's/${AAF_VERSION}/'${VERSION}'/g' \
    -e 's/${AAF_COMPONENT}/'${AAF_COMPONENT}'/g' \
    -e 's/${DOCKER_REPOSITORY}/'${DOCKER_REPOSITORY}'/g' \
    -e 's/${DUSER}/'${DUSER}'/g' \
    Dockerfile.core >../aaf_${VERSION}/Dockerfile
cd ..
echo "#######"
pwd
echo "#######"
$DOCKER build -t ${ORG}/${PROJECT}/aaf_core:${VERSION} aaf_${VERSION}
$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_${VERSION}/Dockerfile

########
# Fourth, do Hello
# Apply currrent Properties to Docker file, and put in place.
cd -
sed -e 's/${AAF_VERSION}/'${VERSION}'/g' \
    -e 's/${DOCKER_REPOSITORY}/'${DOCKER_REPOSITORY}'/g' \
    -e 's/${DUSER}/'${DUSER}'/g' \
    Dockerfile.hello >../aaf_${VERSION}/Dockerfile
cd ..
echo "#######"
pwd
echo "#######"
cp -Rf sample/etc aaf_${VERSION}
$DOCKER build -t ${ORG}/${PROJECT}/aaf_hello:${VERSION} aaf_${VERSION}
$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
rm -Rf aaf_${VERSION}/Dockerfile aaf_${VERSION}/etc

# Final cleanup
rm aaf_${VERSION}/bin/pod_wait.sh

cd -