2023-02-01 22:39:33 +00:00
|
|
|
import org.gradle.tooling.GradleConnector
|
|
|
|
import org.gradle.tooling.ProjectConnection
|
|
|
|
import org.gradle.tooling.model.GradleProject
|
|
|
|
|
|
|
|
def getIncludedProjectNamesMap(Project project) {
|
|
|
|
def projectNamesMap = new HashMap<String, String>()
|
|
|
|
project.gradle.includedBuilds.each { includedBuild ->
|
|
|
|
ProjectConnection connection = GradleConnector.newConnector()
|
|
|
|
.forProjectDirectory(includedBuild.projectDir)
|
|
|
|
.connect()
|
|
|
|
GradleProject includedProject = connection.getModel(GradleProject.class);
|
|
|
|
def name = includedProject.getName();
|
|
|
|
connection.close();
|
|
|
|
|
|
|
|
projectNamesMap.put includedBuild.name, name;
|
|
|
|
}
|
|
|
|
|
|
|
|
return projectNamesMap
|
|
|
|
}
|
|
|
|
|
2023-02-01 11:07:00 +00:00
|
|
|
def label = "worker-${UUID.randomUUID().toString()}"
|
|
|
|
|
|
|
|
podTemplate(
|
2023-02-01 11:08:12 +00:00
|
|
|
label: label,
|
2023-02-01 11:07:00 +00:00
|
|
|
containers: [
|
|
|
|
containerTemplate(
|
|
|
|
name: 'gradle',
|
|
|
|
image: 'gradle:7.6.0-jdk11',
|
|
|
|
command: 'sleep',
|
|
|
|
args: '30d'
|
2023-02-01 11:17:55 +00:00
|
|
|
),
|
|
|
|
containerTemplate(
|
|
|
|
name: 'docker',
|
|
|
|
image: 'docker:latest',
|
|
|
|
command: 'cat',
|
|
|
|
ttyEnabled: true
|
|
|
|
),
|
|
|
|
containerTemplate(
|
|
|
|
name: 'kubectl',
|
|
|
|
image: 'bitnami/kubectl:latest',
|
|
|
|
command: 'cat',
|
|
|
|
ttyEnabled: true
|
|
|
|
),
|
|
|
|
containerTemplate(
|
|
|
|
name: 'helm',
|
|
|
|
image: 'alpine/helm:latest',
|
|
|
|
command: 'cat',
|
|
|
|
ttyEnabled: true
|
2023-02-01 09:17:31 +00:00
|
|
|
)
|
2023-02-01 11:07:00 +00:00
|
|
|
],
|
|
|
|
volumes: [
|
2023-02-01 11:17:55 +00:00
|
|
|
hostPathVolume(mountPath: '/home/gradle/.gradle', hostPath: '/tmp/jenkins/.gradle'),
|
|
|
|
hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock')
|
2023-02-01 11:07:00 +00:00
|
|
|
]
|
|
|
|
)
|
2023-02-01 14:44:31 +00:00
|
|
|
|
2023-02-01 11:07:00 +00:00
|
|
|
{
|
|
|
|
node(label) {
|
|
|
|
def myRepo = checkout scm
|
|
|
|
def gitCommit = myRepo.GIT_COMMIT
|
|
|
|
def gitBranch = myRepo.GIT_BRANCH
|
|
|
|
def shortGitCommit = "${gitCommit[0..10]}"
|
|
|
|
def previousGitCommit = sh(script: "git rev-parse ${gitCommit}~", returnStdout: true)
|
2023-02-01 14:15:07 +00:00
|
|
|
def docker_registry_url = "harbor.loafle.net"
|
2023-02-01 15:02:53 +00:00
|
|
|
def app_version_value = sh(returnStdout: true, script: "cat build.gradle | grep -o 'version = [^,]*'").trim()
|
|
|
|
sh "echo Project in version value: $app_version_value"
|
|
|
|
def app_version = app_version_value.split(/=/)[1].trim()
|
2023-02-01 22:39:33 +00:00
|
|
|
println getIncludedProjectNamesMap(project)
|
2023-02-01 08:34:23 +00:00
|
|
|
|
2023-02-01 11:07:00 +00:00
|
|
|
stage('Test') {
|
|
|
|
try {
|
|
|
|
container('gradle') {
|
|
|
|
sh """
|
|
|
|
pwd
|
|
|
|
echo "GIT_BRANCH=${gitBranch}" >> /etc/environment
|
|
|
|
echo "GIT_COMMIT=${gitCommit}" >> /etc/environment
|
|
|
|
gradle test
|
|
|
|
"""
|
2023-02-01 08:18:35 +00:00
|
|
|
}
|
|
|
|
}
|
2023-02-01 11:07:00 +00:00
|
|
|
catch (exc) {
|
|
|
|
println "Failed to test - ${currentBuild.fullDisplayName}"
|
|
|
|
throw(exc)
|
|
|
|
}
|
|
|
|
}
|
2023-02-01 14:11:40 +00:00
|
|
|
|
2023-02-01 11:07:00 +00:00
|
|
|
stage('Build') {
|
|
|
|
container('gradle') {
|
|
|
|
sh "gradle build"
|
|
|
|
}
|
2023-02-01 07:26:49 +00:00
|
|
|
}
|
2023-02-01 11:17:55 +00:00
|
|
|
|
2023-02-01 14:11:40 +00:00
|
|
|
stage('Create Docker images') {
|
|
|
|
container('docker') {
|
|
|
|
withCredentials([[$class: 'UsernamePasswordMultiBinding',
|
|
|
|
credentialsId: 'harbor.loafle.net',
|
|
|
|
usernameVariable: 'HARBOR_USER',
|
|
|
|
passwordVariable: 'HARBOR_PASSWORD']]) {
|
|
|
|
sh """
|
2023-02-01 14:38:01 +00:00
|
|
|
docker login -u "${HARBOR_USER}" -p "${HARBOR_PASSWORD}" ${docker_registry_url}
|
2023-02-01 15:05:16 +00:00
|
|
|
docker build -t ${docker_registry_url}/prototype/cicd-java-spring-boot:${app_version} --build-arg JAR_NAME=cicd-${app_version}.jar .
|
2023-02-01 14:50:41 +00:00
|
|
|
docker push ${docker_registry_url}/prototype/cicd-java-spring-boot:${app_version}
|
2023-02-01 14:11:40 +00:00
|
|
|
"""
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2023-01-31 13:42:28 +00:00
|
|
|
}
|
2023-02-01 09:48:49 +00:00
|
|
|
}
|