Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated to allow use of AWS ECR #4

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 38 additions & 13 deletions jenkins/jobs/dsl/docker_pipeline_jobs.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ getDockerfile.with{
description('Dockerhub username and password. Please make sure the credentials are added with ID "docker-credentials"')
}
stringParam("IMAGE_REPO",dockerfileGitUrl,"Repository location of your Dockerfile")
stringParam("IMAGE_TAG",'tomcat8',"Enter a unique string to tag your images (Note: Upper case chararacters are not allowed)")
stringParam("IMAGE_TAG",'tomcat8',"Enter a unique string to tag your images (Note: Upper case chararacters are not allowed) e.g. johnsmith/dockerimage or if pushing to aws aws_account_id.dkr.ecr.region.amazonaws.com/my-web-app ")
stringParam("CLAIR_DB",'',"URI for the Clair PostgreSQL database in the format postgresql://postgres:password@postgres:5432?sslmode=disable (ignore parameter as it is currently unsupported)")
}
wrappers {
Expand Down Expand Up @@ -210,7 +210,7 @@ dockerBuild.with{
}
shell('''set -x
|echo "Building the docker image locally..."
|docker build -t ${DOCKERHUB_USERNAME}/${IMAGE_TAG}:${B} ${WORKSPACE}/.
|docker build -t ${IMAGE_TAG}:${B} ${WORKSPACE}/.
|
|echo LOGIN=$(echo ${DOCKER_LOGIN}) > credential.properties
|set +x'''.stripMargin())
Expand Down Expand Up @@ -347,7 +347,7 @@ imageTest.with{
|# Set path workspace is available from inside docker machine
|export docker_workspace_dir=$(echo ${WORKSPACE} | sed 's#/workspace#/var/lib/docker/volumes/jenkins_slave_home/_data#')
|
|docker run --net=host --rm -v ${docker_workspace_dir}/${TESTS_PATH}/:${TEST_DIR} -v /var/run/docker.sock:/var/run/docker.sock darrenajackson/image-inspector -i ${DOCKERHUB_USERNAME}/${IMAGE_TAG}:${B} -f ${TEST_DIR}/image.cfg > ${WORKSPACE}/${JOB_NAME##*/}.out
|docker run --net=host --rm -v ${docker_workspace_dir}/${TESTS_PATH}/:${TEST_DIR} -v /var/run/docker.sock:/var/run/docker.sock darrenajackson/image-inspector -i ${IMAGE_TAG}:${B} -f ${TEST_DIR}/image.cfg > ${WORKSPACE}/${JOB_NAME##*/}.out
|
|if grep "ERROR" ${WORKSPACE}/${JOB_NAME##*/}.out; then
| echo "Your built image has failed testing..."
Expand Down Expand Up @@ -425,6 +425,7 @@ containerTest.with{
|
|# Test image name extension
|export IMG_EXT="test"
|export IMAGE_NAME="${IMAGE_TAG///}"
|
|# Test image tag
|export IMG_TAG=${B}
Expand All @@ -441,7 +442,7 @@ containerTest.with{
|# Create test Dockerfile
|if ! [[ -f ${TEST_DF} ]]; then
| cat << EOF > ${TEST_DF}
|FROM ${DOCKERHUB_USERNAME}/${IMAGE_TAG}:${B}
|FROM ${IMAGE_TAG}:${B}
|
|RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y ${PACK_LIST} && apt-get clean && rm -rf /var/lib/apt/lists/*
|
Expand All @@ -457,17 +458,17 @@ containerTest.with{
|docker build -t ${IMAGE_TAG}-${IMG_EXT}:${IMG_TAG} -f ${TEST_DF} ${TEST_DF_PATH}
|
|# Run the test image
|docker run -d --name ${IMAGE_TAG}-${IMG_EXT} -v ${docker_workspace_dir}/${TESTS_PATH}/:${TEST_DIR} ${IMAGE_TAG}-${IMG_EXT}:${IMG_TAG}
|docker run -d --name ${IMAGE_NAME}-${IMG_EXT} -v ${docker_workspace_dir}/${TESTS_PATH}/:${TEST_DIR} ${IMAGE_TAG}-${IMG_EXT}:${IMG_TAG}
|
|# Allow the container time to start
|sleep 60
|
|# Execute the testing scripts
|docker exec ${IMAGE_TAG}-${IMG_EXT} chmod -R +x ${TEST_DIR}
|docker exec ${IMAGE_TAG}-${IMG_EXT} ${TEST_DIR}/container_tests.sh ${TEST_DIR} > ${WORKSPACE}/${JOB_NAME##*/}.out
|docker exec ${IMAGE_NAME}-${IMG_EXT} chmod -R +x ${TEST_DIR}
|docker exec ${IMAGE_NAME}-${IMG_EXT} ${TEST_DIR}/container_tests.sh ${TEST_DIR} > ${WORKSPACE}/${JOB_NAME##*/}.out
|
|# Stop and clean up the testing container and testing image
|docker stop ${IMAGE_TAG}-${IMG_EXT} && docker rm -v ${IMAGE_TAG}-${IMG_EXT} && docker rmi ${IMAGE_TAG}-${IMG_EXT}:${IMG_TAG}
|docker stop ${IMAGE_NAME}-${IMG_EXT} && docker rm -v ${IMAGE_NAME}-${IMG_EXT} && docker rmi ${IMAGE_TAG}-${IMG_EXT}:${IMG_TAG}
|
|if grep "^-" ${WORKSPACE}/${JOB_NAME##*/}.out; then
| echo "Note: some warnings/errors found..."
Expand Down Expand Up @@ -530,8 +531,18 @@ dockerPush.with{
label("docker")
steps {
shell('''set +x
|docker login -u ${DOCKERHUB_USERNAME} -p ${DOCKERHUB_PASSWORD} -e devops@adop.com
|docker push ${DOCKERHUB_USERNAME}/${IMAGE_TAG}:${B}
|if [[ ${IMAGE_TAG} == *"amazonaws.com"* ]]; then
| export AWS_ACCESS_KEY_ID=${DOCKERHUB_USERNAME}
| export AWS_SECRET_ACCESS_KEY=${DOCKERHUB_PASSWORD}
| export AWS_DEFAULT_REGION="${IMAGE_TAG#*.*.*.}"
| export AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION%%.*}"
| ECR_DOCKER_LOGIN=`aws ecr get-login`
| ${ECR_DOCKER_LOGIN}
|else
| docker login -u ${DOCKERHUB_USERNAME} -p ${DOCKERHUB_PASSWORD} -e devops@adop.com
|fi
|
|docker push ${IMAGE_TAG}:${B}
|
|echo LOGIN=$(echo ${DOCKER_LOGIN}) > credential.properties
|set -x'''.stripMargin())
Expand Down Expand Up @@ -582,8 +593,20 @@ dockerDeploy.with{
label("docker")
steps {
shell('''set +x
|docker login -u ${DOCKERHUB_USERNAME} -p ${DOCKERHUB_PASSWORD} -e devops@adop.com
|docker run -d --name jenkins_${IMAGE_TAG}_${B} ${DOCKERHUB_USERNAME}/${IMAGE_TAG}:${B}
|if [[ ${IMAGE_TAG} == *"amazonaws.com"* ]]; then
| export AWS_ACCESS_KEY_ID=${DOCKERHUB_USERNAME}
| export AWS_SECRET_ACCESS_KEY=${DOCKERHUB_PASSWORD}
| export AWS_DEFAULT_REGION="${IMAGE_TAG#*.*.*.}"
| export AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION%%.*}"
| ECR_DOCKER_LOGIN=`aws ecr get-login`
| ${ECR_DOCKER_LOGIN}
|else
| docker login -u ${DOCKERHUB_USERNAME} -p ${DOCKERHUB_PASSWORD} -e devops@adop.com
|fi
|
|export IMAGE_NAME="${IMAGE_TAG///}"
|
|docker run -d --name jenkins_${IMAGE_NAME}_${B} ${IMAGE_TAG}:${B}
|
|set -x'''.stripMargin())
}
Expand Down Expand Up @@ -622,9 +645,11 @@ dockerCleanup.with{
|# Checking to see whether to delete all containers or just one
|if [ ${CONTAINER_DELETION} = "SINGLE" ]; then
| echo "Deleting single container..."
| docker rm -f jenkins_${IMAGE_TAG}_${B}
| export IMAGE_NAME="${IMAGE_TAG///}"
| docker rm -f jenkins_${IMAGE_NAME}_${B}
|elif [ ${CONTAINER_DELETION} = "ALL" ]; then
| echo "Deleting all containers..."
| export IMAGE_NAME="${IMAGE_TAG///}"
| for i in `seq 1 ${B}`;
| do
| if docker ps -a | grep "jenkins_${IMAGE_TAG}_${i}"; then
Expand Down