| |
| ######### |
| # ============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 - |