package com.meesho.stages def run(Map config){ stage('Build docker image'){ container('dockerpush') { def env = "dev" //write if condition according to branch if branch is dev/staging or any other branch then master it will be dev if master prod def ecrImagePod = config.ecrImagePod def repo_name = config.repo_name def dockerBuildVersion = config.dockerBuildVersion ?: "" def version = getVersion() def artifactId = getArtifactId() def modules = getModules() def excludedModules = config.excludedModules ?: [] j = 0 for (module in modules){ if (excludedModules.contains(module)){ echo "===== NOT Building container for Module - ${module} =====" }else { def dockerfileRef = getDockerfile("${dockerBuildVersion}","${repo_name}","${version}","${module}","NO") j+=1 sh """ echo "===== ${j}. Creating Container for Module - ${module} ======" if [ -f ${module}/target/*.jar ] then echo "docker build -t ${ecrImagePod}/${repo_name}/${module} ${dockerfileRef}; rm -f Dockerfile-${module}" else echo "No jar file found." exit 1 fi """ } } } } } def getCommitid(){ return sh(returnStdout: true, script: 'git log -1 --format=%h').trim() } def registry(String buildenv){ switch(env) { case "prod": return 'asia-southeast1-docker.pkg.dev/meesho-devops-admin-0622/prod/' break; case "dev": return 'asia-southeast1-docker.pkg.dev/meesho-devops-admin-0622/dev/' break; default: return 'asia-southeast1-docker.pkg.dev/meesho-devops-admin-0622' } } def getVersion(){ // if (fileExists("pom.xml")) { // return sh(returnStdout: true, script: 'xq -r .project.version pom.xml').trim() // }else if (fileExists("package.json")) { // return sh(returnStdout: true, script: 'jq -r .version package.json').trim() // } return "2.0" } def getModules(){ // if (fileExists("pom.xml")) { // modules = sh(returnStdout: true, script: 'xq -r .project.modules.module[] pom.xml 2>/dev/null || xq -r .project.modules.module pom.xml 2>/dev/null || echo empty').trim() // if (modules == 'empty' || modules == 'null') { // return null // } // modules = modules.split("\n") // return modules // } // else { // return null // } return ["server"] } def getArtifactId(){ // if (fileExists("pom.xml")) { // return sh(returnStdout: true, script: 'xq -r .project.artifactId pom.xml').trim() // } else if (fileExists("package.json")) { // return sh(returnStdout: true, script: 'jq -r .name package.json').trim() // } return "external-payment-gateway" } def getTag(){ def buildenv = "${env.BUILD_ENV}" echo "========get version========" def version = getVersion() echo "========commitID========" def commitID = getCommitid() echo "========tag========" def tag = "v${version}-${commitID}" return ${tag} } def release(Map config){ stage('Push docker image'){ def repo_name = config.repo_name def branch_name = "${env.BRANCH_NAME}" def ecrImagePod = config.ecrImagePod def bu = config.BU def buildenv = "${env.BUILD_ENV}" echo "========registry========" def registry = registry("${buildenv}") echo "========get version========" def version = getVersion() echo "========commitID========" def commitID = getCommitid() echo "========tag========" echo "registry is ${registry}" def tag = "v${version}-${commitID}" echo "${registry}" echo "tag is ${tag}" def artifactId = getArtifactId() def modules = getModules() def excludedModules = config.excludedModules ?: [] log.info("########################### Pushing Docker Images ###########################") if (modules == null){ echo "docker tag ${ecrImagePod}/${repo_name} ${registry}/${bu}/${ecrImagePod}/${repo_name}:${tag}" echo "gcloud auth configure-docker asia-southeast1-docker.pkg.dev --quiet" echo "docker push ${registry}/${bu}/${ecrImagePod}/${repo_name}:${tag}" }else { j = 0 for (module in modules){ if (excludedModules.contains(module)){ echo "===== NOT Pushing container for Module - ${common} =====" }else { j+=1 sh """ echo "===== ${j}. Pushing Container for Module - ${module} ======" echo "docker tag ${ecrImagePod}/${repo_name}/${module} ${registry}/${bu}/${ecrImagePod}/${repo_name}/${module}:${tag}" echo "gcloud auth configure-docker asia-southeast1-docker.pkg.dev --quiet" echo "docker push ${registry}/${bu}/${ecrImagePod}/${repo_name}/${module}:${tag}" """ } } } } } def getDockerfile(String dockerBuildVersion, String repo_name, String version, String module, String doBuild) { if (dockerBuildVersion) { if(dockerBuildVersion == "maven-3.3-jdk-8"){ def scriptcontents = libraryResource "org/meesho/templates/${dockerBuildVersion}.sh" writeFile file: "${dockerBuildVersion}.sh", text: scriptcontents sh "chmod a+x ./${dockerBuildVersion}.sh;./${dockerBuildVersion}.sh ${module} ${version} ${doBuild} ${repo_name}" return "-f Dockerfile-${module} ." }else if(dockerBuildVersion == "node-12.22"){ def scriptcontents = libraryResource "org/meesho/templates/${dockerBuildVersion}.sh" writeFile file: "${dockerBuildVersion}.sh", text: scriptcontents sh "chmod a+x ./${dockerBuildVersion}.sh;./${dockerBuildVersion}.sh ${module}" return "-f Dockerfile-${module} ." } } else { return "-f Dockerfile ." } }