Files
svc-api-x/build/Jenkinsfile
T
vzaytsev cebc882950 Added build dir
Added integrations with k8s
Added support for multiple stands
2024-10-25 15:04:22 +03:00

63 lines
2.5 KiB
Groovy

@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
)
}
}
}