|
| 1 | +pipeline { |
| 2 | + agent any |
| 3 | + |
| 4 | + parameters { |
| 5 | + string(name: 'DOCKER_REGISTRY', description: 'Docker registry URL (e.g., ECR URL)', defaultValue: 'hms-dbmi') |
| 6 | + string(name: 'REPOSITORY_NAME', description: 'Docker repository name', defaultValue: 'pic-sure-logging') |
| 7 | + choice(name: 'DEPLOY_METHOD', description: 'Deployment method', choices: ['docker', 's3', 'none']) |
| 8 | + string(name: 'TARGET_STACK', description: 'Target stack for deployment (required for s3 deploy)', defaultValue: '') |
| 9 | + string(name: 'STACK_S3_BUCKET', description: 'S3 bucket for image upload (required for s3 deploy)', defaultValue: '') |
| 10 | + } |
| 11 | + |
| 12 | + environment { |
| 13 | + DOCKER_BUILD_ARGS = "--build-arg http_proxy=$http_proxy --build-arg https_proxy=$http_proxy --build-arg no_proxy=\"$no_proxy\" --build-arg HTTP_PROXY=$http_proxy --build-arg HTTPS_PROXY=$http_proxy --build-arg NO_PROXY=\"$no_proxy\"" |
| 14 | + GIT_BRANCH_SHORT = sh(script: 'echo ${GIT_BRANCH} | cut -d "/" -f 2', returnStdout: true).trim() |
| 15 | + GIT_COMMIT_SHORT = sh(script: 'echo ${GIT_COMMIT} | cut -c1-7', returnStdout: true).trim() |
| 16 | + IMAGE_TAG = "${GIT_BRANCH_SHORT}_${GIT_COMMIT_SHORT}" |
| 17 | + } |
| 18 | + |
| 19 | + stages { |
| 20 | + stage('build') { |
| 21 | + steps { |
| 22 | + script { |
| 23 | + env.LATEST_TAG = params.DEPLOY_METHOD == 's3' ? 'latest' : 'LATEST' |
| 24 | + } |
| 25 | + sh "docker build ${DOCKER_BUILD_ARGS} -t ${params.DOCKER_REGISTRY}/${params.REPOSITORY_NAME}:${IMAGE_TAG} ." |
| 26 | + sh "docker tag ${params.DOCKER_REGISTRY}/${params.REPOSITORY_NAME}:${IMAGE_TAG} ${params.DOCKER_REGISTRY}/${params.REPOSITORY_NAME}:${LATEST_TAG}" |
| 27 | + } |
| 28 | + } |
| 29 | + stage('deploy') { |
| 30 | + steps { |
| 31 | + script { |
| 32 | + if (params.DEPLOY_METHOD == 'docker') { |
| 33 | + sh "docker stop pic-sure-logging || true" |
| 34 | + sh "docker rm pic-sure-logging || true" |
| 35 | + sh """docker run --name=pic-sure-logging --restart always \ |
| 36 | + --network=picsure \ |
| 37 | + --env-file /usr/local/docker-config/pic-sure-logging/logging.env \ |
| 38 | + -v /usr/local/docker-config/pic-sure-logging/logs:/app/logs \ |
| 39 | + -d ${params.DOCKER_REGISTRY}/${params.REPOSITORY_NAME}:${IMAGE_TAG}""" |
| 40 | + } else if (params.DEPLOY_METHOD == 's3') { |
| 41 | + sh "docker save ${params.DOCKER_REGISTRY}/${params.REPOSITORY_NAME}:${LATEST_TAG} | gzip > pic-sure-logging.tar.gz" |
| 42 | + sh "aws s3 --sse=AES256 cp pic-sure-logging.tar.gz s3://${params.STACK_S3_BUCKET}/${params.TARGET_STACK}/containers/pic-sure-logging.tar.gz" |
| 43 | + } else { |
| 44 | + echo "Deployment skipped." |
| 45 | + } |
| 46 | + } |
| 47 | + } |
| 48 | + } |
| 49 | + } |
| 50 | +} |
0 commit comments