From 99b3f70a673995bdc3e790d93aee4ab8319252b3 Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Thu, 15 Feb 2018 18:46:43 -0500 Subject: [PATCH 1/5] Update dockerfile to the latest and plugins --- Dockerfile | 3 ++- plugins.txt | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 17fe4f7..178463e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM jenkins/jenkins:lts +FROM jenkins/jenkins:2.89.4 USER root @@ -8,6 +8,7 @@ RUN apt-get -qq update && apt-get install -y \ moreutils \ python3 \ python3-pip \ + redis-tools \ jq \ zip \ && rm -rf /var/lib/apt/lists/* diff --git a/plugins.txt b/plugins.txt index 2350513..7867e14 100644 --- a/plugins.txt +++ b/plugins.txt @@ -1,6 +1,7 @@ amazon-ecr:1.6 aws-credentials:1.23 credentials:2.1.16 +envinject:2.1.5 docker-workflow:1.14 git:3.7.0 github:1.28.1 -- GitLab From ce28d732afd4d79eb01db98530c9f9e98112d205 Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Thu, 15 Feb 2018 18:47:32 -0500 Subject: [PATCH 2/5] Add build and rename task script --- .gitignore | 18 ++---------------- README.md | 13 ++----------- jenkins.task.json | 2 +- scripts/deploy_jenkins.sh | 24 ++++++++++++++++++++++++ 4 files changed, 29 insertions(+), 28 deletions(-) create mode 100755 scripts/deploy_jenkins.sh diff --git a/.gitignore b/.gitignore index 6da7580..5d987d9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,2 @@ -# Access key id and secret for AWS. -aws.ini - -# EB configuration. -.elasticbeanstalk - -# Elastic Beanstalk Files -.elasticbeanstalk/* -!.elasticbeanstalk/*.cfg.yml -!.elasticbeanstalk/*.global.yml - -# Zipped build. -deployment.zip - -# Docker login configuration -jenkins.json +# ECS +task.json diff --git a/README.md b/README.md index b0c5409..4a0eadb 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,8 @@ # Jenkins Docker Image This is the docker image for the BlocPower jenkins image. -## Docker build & push -aws ecr get-login --no-include-email --region us-east-1 -docker build -t blocp/jenkins . - -docker tag blocp/jenkins:latest 763311425122.dkr.ecr.us-east-1.amazonaws.com/jenkins:latest -docker tag blocp/jenkins:latest 763311425122.dkr.ecr.us-east-1.amazonaws.com/jenkins:1.0 - -docker push 763311425122.dkr.ecr.us-east-1.amazonaws.com/jenkins +## Docker build, push and register ECS task +`./scripts/deploy_jenkins.sh` ## AWS ECS aws ecs register-task-definition --cli-input-json file://jenkins.task.json - -## aws.ini -The AWS configuration is contained in the `aws.ini` file in the top-level directory. This is `.gitignore`d so that the key id and secret are not version controlled. Ask for the key if you need to build this docker image. When Jenkins builds itself, it copies its own `aws.ini` into the repository before building the image. diff --git a/jenkins.task.json b/jenkins.task.json index d503c2d..154f237 100644 --- a/jenkins.task.json +++ b/jenkins.task.json @@ -4,7 +4,7 @@ "containerDefinitions": [ { "name": "jenkins-task", - "image": "763311425122.dkr.ecr.us-east-1.amazonaws.com/jenkins:1.2", + "image": "", "cpu": 1024, "memoryReservation": 2048, "links": [], diff --git a/scripts/deploy_jenkins.sh b/scripts/deploy_jenkins.sh new file mode 100755 index 0000000..1d871b1 --- /dev/null +++ b/scripts/deploy_jenkins.sh @@ -0,0 +1,24 @@ +#! /bin/bash + +ECR_REPO_HOST="763311425122.dkr.ecr.us-east-1.amazonaws.com" +PROJECT="$ECR_REPO_HOST/jenkins" + +if [ -z "$VERSION" ]; then + echo "Missing image version" + exit +fi + +IMAGE="$PROJECT:$VERSION" +IMAGE_LATEST="$PROJECT:latest" + +docker build -t $IMAGE -t $IMAGE_LATEST . + +$(aws ecr get-login --no-include-email --region us-east-1) + +# Will push $IMAGE and $IMAGE_LATEST +docker push $PROJECT + +jq '.containerDefinitions[0].image = "'$IMAGE'"' jenkins.task.json > task.json + +docker rmi $IMAGE +docker rmi $IMAGE_LATEST -- GitLab From c207f4ea56380d9763a3890f91aa07784ba62388 Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Fri, 16 Feb 2018 10:38:01 -0500 Subject: [PATCH 3/5] Add deployment to ECS to script --- scripts/deploy_jenkins.sh | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/scripts/deploy_jenkins.sh b/scripts/deploy_jenkins.sh index 1d871b1..df85cb2 100755 --- a/scripts/deploy_jenkins.sh +++ b/scripts/deploy_jenkins.sh @@ -1,5 +1,11 @@ #! /bin/bash +function heading() { + echo -e "\033[95m==========> $1\033[0m" +} + +heading "Starting..." + ECR_REPO_HOST="763311425122.dkr.ecr.us-east-1.amazonaws.com" PROJECT="$ECR_REPO_HOST/jenkins" @@ -11,14 +17,32 @@ fi IMAGE="$PROJECT:$VERSION" IMAGE_LATEST="$PROJECT:latest" +# Build image +heading "Building docker image: $IMAGE" docker build -t $IMAGE -t $IMAGE_LATEST . +# Login and push $IMAGE and $IMAGE_LATEST $(aws ecr get-login --no-include-email --region us-east-1) - -# Will push $IMAGE and $IMAGE_LATEST docker push $PROJECT +# Add image to task definition and register with ECS jq '.containerDefinitions[0].image = "'$IMAGE'"' jenkins.task.json > task.json +aws ecs register-task-definition --cli-input-json file://task.json + +# Get the latest task definition +LATEST_TASK_DEFINITION=$(aws ecs list-task-definitions --family-prefix jenkins --sort DESC | jq '.taskDefinitionArns[0] ') +LATEST_TASK_DEFINITION=$(echo $LATEST_TASK_DEFINITION | tr -d '"' | awk -F'/' '{print $2}') + +# Stop current task +TASK_RUNNING_ARN=$(aws ecs list-tasks --cluster jenkins | jq '.taskArns[0]' | tr -d '"') +heading "Stopping task: $TASK_RUNNING_ARN" +aws ecs stop-task --task $TASK_RUNNING_ARN --cluster jenkins + +# Start new task +heading "Starting task $LATEST_TASK_DEFINITION" +aws ecs run-task --cluster jenkins --task-definition $LATEST_TASK_DEFINITION +# Cleanup +rm task.json docker rmi $IMAGE docker rmi $IMAGE_LATEST -- GitLab From 1809ec43f88d0bdf878dcf268d63029859ddc108 Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Fri, 16 Feb 2018 10:48:49 -0500 Subject: [PATCH 4/5] Add instructions to script --- scripts/deploy_jenkins.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/deploy_jenkins.sh b/scripts/deploy_jenkins.sh index df85cb2..22ea566 100755 --- a/scripts/deploy_jenkins.sh +++ b/scripts/deploy_jenkins.sh @@ -1,4 +1,7 @@ #! /bin/bash +# +# VERSION=1.x ./scripts/deploy_jenkins.sh +# function heading() { echo -e "\033[95m==========> $1\033[0m" -- GitLab From a8c99db78bd949a0869ee3d7fd4a2308e9770ffe Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Fri, 16 Feb 2018 10:49:19 -0500 Subject: [PATCH 5/5] Update readme --- README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.md b/README.md index 4a0eadb..1db6e3d 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,4 @@ This is the docker image for the BlocPower jenkins image. ## Docker build, push and register ECS task -`./scripts/deploy_jenkins.sh` - -## AWS ECS -aws ecs register-task-definition --cli-input-json file://jenkins.task.json +`VERSION=1.x ./scripts/deploy_jenkins.sh` -- GitLab