Skip to content

Instantly share code, notes, and snippets.

@cyrille-leclerc
Last active August 31, 2023 21:52
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save cyrille-leclerc/19b37477897f87b143e2 to your computer and use it in GitHub Desktop.
Save cyrille-leclerc/19b37477897f87b143e2 to your computer and use it in GitHub Desktop.
Jenkins Docker Workflow - Deploy Game Of Life to Amazon EC2 Container Service / ECS
docker.withRegistry('', 'dockerhub-credentials-cleclerc') {
writeFile file: "${pwd()}/.m2/settings.xml", text: "<settings><localRepository>${pwd()}/.m2/repo</localRepository></settings>"
stage 'Build Web App'
docker.image('cloudbees/java-build-tools:0.0.5').inside {
git 'https://github.com/cyrille-leclerc/game-of-life.git'
sh "mvn -B -V -s ${pwd()}/.m2/settings.xml clean package"
}
// build docker image 'cleclerc/game-of-life' and push it to docker hub
stage 'Build & Push Docker Image'
echo 'Build docker image cleclerc/game-of-life...'
def gameOfLifeImage = docker.build('cleclerc/game-of-life', 'gameoflife-web')
echo 'Push docker image cleclerc/game-of-life to Docker Hub...'
gameOfLifeImage.push()
stage 'Redeploy ECS Service'
wrap([$class: 'AmazonAwsCliBuildWrapper', credentialsId: 'aws-cleclerc-admin', defaultRegion: 'us-east-1']) {
// TODO THESE ARE PROBABLY NOT THE BEST ECS CALLS
sh "aws ecs update-service --service game-of-life --desired-count 0"
sleep 60
sh "aws ecs update-service --service game-of-life --desired-count 1"
sleep 20
}
stage 'Web Browser tests'
mail body: "Start web browser tests on http://gameoflife-ecs.beesshop.org/ ?",subject: "Start web browser tests on http://gameoflife-ecs.beesshop.org/ ?", to: 'cleclerc@cloudbees.com'
// input "Start web browser tests on http://gameoflife-ecs.beesshop.org/ ?"
// web browser tests are fragile, test up to 3 times
retry(3) {
docker.image('cloudbees/java-build-tools:0.0.5').inside {
sh """
curl http://gameoflife-ecs.beesshop.org/
cd gameoflife-acceptance-tests
mvn -B -V -s ../.m2/settings.xml verify -Dwebdriver.driver=remote -Dwebdriver.base.url=http://gameoflife-ecs.beesshop.org/
"""
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment