#!/usr/bin/env bash VERSION=$1 EDITIONS=( artifactory-pro artifactory-jcr ) #EDITIONS=( artifactory-jcr ) #EDITIONS=( artifactory-pro ) #for loop start: editoins for EDITION in "${EDITIONS[@]}" do UPSTREAM_IMAGE_NAME=docker.bintray.io/jfrog/$EDITION BUILD_IMAGE_NAME=partnership-public-images.jfrog.io/aws/$EDITION ARTIFACTORY_PASSWORD=corona1831 # Logic starts here if [ -z "$VERSION" ] then echo "No version passed in. Build failed." echo "usage: buildAwsContainers " echo "example: buildAwsContainers artifactory-pro 7.2.1 " exit -1 fi # Extract and modify the entrypoint to run out custom code for first-time password docker pull $UPSTREAM_IMAGE_NAME:$VERSION docker run -d --rm --name tmp-docker $UPSTREAM_IMAGE_NAME:$VERSION docker cp tmp-docker:/entrypoint-artifactory.sh original-entrypoint.sh docker rm -f tmp-docker perl -pe 's/^addExtraJavaArgs$/`cat extra_conf`/ge' original-entrypoint.sh > entrypoint-artifactory.sh #Create installer-info file if [ "$EDITION" == "artifactory-pro" ] then cat < installer-info.json { "productId": "CloudFormation_artifactory-ha/$VERSION", "features": [ { "featureId": "Partner/ACC-006973" } ] } EOF else cat < installer-info.json { "productId": "CloudFormation_artifactory-jcr/$VERSION", "features": [ { "featureId": "Partner/ACC-006973" } ] } EOF fi cat installer-info.json # Create the new docker image docker build --no-cache --build-arg UPSTREAM_TAG=$VERSION -t $BUILD_IMAGE_NAME:$VERSION . # Run minimal test set -x docker run --name test-new-image -d -e ARTIFACTORY_PASSWORD=$ARTIFACTORY_PASSWORD -p 8081:8081 -p 8082:8082 $BUILD_IMAGE_NAME:$VERSION # Wait for it to come up SUCCESS=false for i in {1..30} do STATUS=$(curl -u admin:$ARTIFACTORY_PASSWORD http://localhost:8082/router/api/v1/system/health | jq .services[0].state) if [ "$STATUS" == "\"HEALTHY\"" ]; then echo "Build successful!" SUCCESS=true break fi echo "Container is not up yet, waiting 10 seconds..." sleep 10 done if [ "$SUCCESS" = true ] ; then echo "Test Succeeded. Build succeeded." docker push $BUILD_IMAGE_NAME:$VERSION else echo "Test failed. Build failed. Removing docker image" fi #clearnup docker stop test-new-image docker rm test-new-image rm installer-info.json #for loop endL: editions done