pipeline{ agent any environment { TMP_DOCKER_CONTAINER="jenkins-${currentBuild.number}" ENVIRONMENT="dev" PIPELINE_NAME="MyProjectPipeline-Dev" } stages{ stage('Clone Repository'){ steps { sh """ #!/bin/bash echo 'Cloning repository' rm -rf ${TMP_DOCKER_CONTAINER} mkdir -p ${TMP_DOCKER_CONTAINER} cd ${TMP_DOCKER_CONTAINER} # Clone & Navigate Snippets Repo git clone https://github.com/subsari/snippets.git cd /var/lib/jenkins/workspace/${PIPELINE_NAME}/docker/apache # Copy Docker Files To Workspace cp * -r /var/lib/jenkins/workspace/${PIPELINE_NAME}/ """ } } stage('Build Docker Image'){ steps { sh """ #!/bin/bash sudo docker build -t snippets . """ } } stage('Run Docker Instance'){ steps { sh """ #!/bin/bash sudo docker run --name ${ENVIRONMENT}-${currentBuild.number} -d -p 2019:80 snippets """ } } stage('Run Tests On Docker Instance'){ steps { echo 'Running tests on docker container instance ${TMP_DOCKER_CONTAINER}' sh """ #!/bin/bash sudo curl http://localhost:2019 -I -L """ } } stage('Cleanup Environment'){ steps { sh """ #!/bin/bash ## Uncomment lines below if you wish ## to navigate to browser URL and view ## the test website built for CI/CD example sudo docker container stop ${ENVIRONMENT}-${currentBuild.number} sudo docker container rm ${ENVIRONMENT}-${currentBuild.number} """ } } stage('Promote To Staging'){ steps { echo 'Here you would trigger your staging or other qa environments.' echo 'For example: by calling the build JenkinsProjectName (between single quotes)' } post { success { echo 'Successfully promoted promoted to next environment.' } failure { echo 'Failed to promote environment.' } } } } }