89 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
def label = "worker-${UUID.randomUUID().toString()}"
 | 
						|
 | 
						|
podTemplate(
 | 
						|
    label: label,
 | 
						|
    containers: [
 | 
						|
        containerTemplate(
 | 
						|
            name: 'gradle', 
 | 
						|
            image: 'gradle:7.6.0-jdk11', 
 | 
						|
            command: 'sleep', 
 | 
						|
            args: '30d'
 | 
						|
        ),
 | 
						|
        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
 | 
						|
        )
 | 
						|
    ],
 | 
						|
    volumes: [
 | 
						|
        hostPathVolume(mountPath: '/home/gradle/.gradle', hostPath: '/tmp/jenkins/.gradle'),
 | 
						|
        hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock')
 | 
						|
    ]
 | 
						|
)
 | 
						|
 | 
						|
{
 | 
						|
    node(label) {
 | 
						|
        def myRepo = checkout scm
 | 
						|
        def gitCommit = myRepo.GIT_COMMIT
 | 
						|
        def gitBranch = myRepo.GIT_BRANCH
 | 
						|
        def projectName = myRepo.PROJECT_NAME
 | 
						|
        def projectVersion = myRepo.PROJECT_VERSION
 | 
						|
        def shortGitCommit = "${gitCommit[0..10]}"
 | 
						|
        def previousGitCommit = sh(script: "git rev-parse ${gitCommit}~", returnStdout: true)
 | 
						|
        def dockerRegistryUrl = "harbor.loafle.net"
 | 
						|
 | 
						|
        stage('Test') {
 | 
						|
            try {
 | 
						|
                container('gradle') {
 | 
						|
                    def projectDetails = sh(returnStdout: true, script: "gradle -q projectDetails").trim()
 | 
						|
                    sh """
 | 
						|
                        pwd
 | 
						|
                        echo "GIT_BRANCH=${gitBranch}" >> /etc/environment
 | 
						|
                        echo "GIT_COMMIT=${gitCommit}" >> /etc/environment
 | 
						|
                        echo "${projectDetails}" >> /etc/environment
 | 
						|
                        gradle test
 | 
						|
                        """
 | 
						|
                }
 | 
						|
            }
 | 
						|
            catch (exc) {
 | 
						|
                println "Failed to test - ${currentBuild.fullDisplayName}"
 | 
						|
                throw(exc)
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        stage('Build') {
 | 
						|
            container('gradle') {
 | 
						|
                sh "gradle build"
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        stage('Create Docker images') {
 | 
						|
            container('docker') {
 | 
						|
                withCredentials([[$class: 'UsernamePasswordMultiBinding',
 | 
						|
                credentialsId: 'harbor.loafle.net',
 | 
						|
                usernameVariable: 'HARBOR_USER',
 | 
						|
                passwordVariable: 'HARBOR_PASSWORD']]) {
 | 
						|
                sh """
 | 
						|
                    docker login -u "${HARBOR_USER}" -p "${HARBOR_PASSWORD}" ${dockerRegistryUrl}
 | 
						|
                    docker build -t ${dockerRegistryUrl}/prototype/${projectName}:${projectVersion} --build-arg PROJECT_NAME=${projectName} --build-arg PROJECT_VERSION=${projectVersion} .
 | 
						|
                    docker push ${dockerRegistryUrl}/prototype/${projectName}:${projectVersion}
 | 
						|
                    """
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |