@Library(['jlib']) _ node("docker") { // Временная метка в логе Jenkins timestamps() { // Цветные букавы в логе Jenkins ansiColor("xterm"){ // Получаем актуальную версию репы, где лежит пайп checkout scm stage("Prepare environments") { if (env.BRANCH_NAME == 'master') envConfig = "build/vars/master.yaml" else if (env.BRANCH_NAME == 'dev') envConfig = "build/vars/dev.yaml" else error("Unsupported branch: ${env.BRANCH_NAME}") support.getVarsV2(envConfig) println "Success prepare" } stage("Build image") { println "Start building image ${env.registryContainerName}:${env.version}" app = docker.build("${env.registryContainerName}:${env.version}", "--no-cache -f ./build/Dockerfile .") println "Start uploading image ${env.registryContainerName}:${env.version} to Nexus" docker.withRegistry("https://${registryUrl}", "nexus-jenkins-cred") { app.push("${env.version}") app.push("latest") } } stage("Update version in Kubernetes") { dir ("build") { // Надо создать пачку кредов в Jenkins, а также пространство с кредами подключения в Vault creds = ["auth", "certificate", "key", "k8scluster", "endpoint"] creds.each { cred -> withCredentials([vaultString(credentialsId: "${env.registryContainerName}-${cred}-${stand}", variable: "key")]) { env."${cred}" = key } } convertJinja("auth.config.tmpl", "auth.config") convertJinja("microservice.yaml.tmpl", "microservice.yaml") sh "kubectl --kubeconfig=auth.config get pods --namespace ${env.namespace}" sh "kubectl --kubeconfig=auth.config apply -f microservice.yaml" } } println "Success build job. Now start cleanup" cleanWs( deleteDirs: true, disableDeferredWipeout: true ) } } }