Files
my-jenkins-library/vars/buildAndDeploy.groovy

68 lines
2.3 KiB
Groovy

import com.example.DockerBuilder
def call(String appName, String helmChartPath, String helmRepoName, String namespace, String helmChartVersion, Boolean useCustomDocker, Boolean useInsecureRegistry, Integer appPort) {
def dockerBuilder = new DockerBuilder()
def containerName = useCustomDocker ? 'custom-docker' : 'docker'
stage('Make jar') {
script {
buildJar(true)
}
}
stage('Package helm chart') {
script {
makeHelmChart("${helmChartPath}/${appName}")
}
}
stage('Upload helm chart') {
script {
uploadHelmChart("${appName}-${helmChartVersion}.tgz", env.NEXUS_URL, "admin", env.NEXUS_PASS)
}
}
stage('Docker build & push') {
container(containerName) {
script {
sh(script: dockerBuilder.getDockerdCommand(env.NEXUS_DOCKER_URL, useInsecureRegistry), returnStdout: true)
dockerBuilder.getDockerBuildCommands(
env.NEXUS_DOCKER_URL,
appName,
"./Dockerfile",
"target",
"admin",
env.NEXUS_DOCKER_PASS,
appPort
).each { cmd ->
sh(script: cmd, returnStdout:true)
}
}
}
}
stage('Add Helm Repo') {
script {
addHelmRepo(helmRepoName, env.NEXUS_URL)
}
}
stage('Deploy Helm Chart') {
script {
deployHelm(
appName,
helmRepoName,
appName,
namespace,
helmChartVersion,
env.KUBERNETES_API,
env.KUBERNETES_TOKEN,
[
"app.image": "localhost:31050/my-docker-repo/${appName}:latest",
"app.ports.http": appPort,
"app.secret": "nexus-secret",
"app.env.QUARKUS_DATASOURCE_DB_KIND": "postgresql",
"app.env.QUARKUS_DATASOURCE_USERNAME": quarkusDBName,
"app.env.QUARKUS_DATASOURCE_PASSWORD": quarkusDBPass,
"app.env.QUARKUS_DATASOURCE_JDBC_URL": "jdbc:postgresql://mydb-service:5432/mydb"
]
)
}
}
}