def label = "eureka-${UUID.randomUUID().toString()}"

podTemplate(
	label: label, 
	containers: [
		//container image는 docker search 명령 이용
		containerTemplate(name: "docker", image: "docker:latest", ttyEnabled: true, command: "cat"),
		containerTemplate(name: "gradle", image: "gradle", command: "cat", ttyEnabled: true),
		containerTemplate(name: "kubectl", image: "bitnami/kubectl", command: "cat", ttyEnabled: true)
	],
	//volume mount
	volumes: [
		hostPathVolume(hostPath: "/var/run/docker.sock", mountPath: "/var/run/docker.sock")
	]
) 
{
	node(label) {
	
		//-- 환경변수 파일 읽어서 변수값 셋팅 
		def props = readProperties  file:"pipeline.properties"
		def tag = props["version"]
		def gitRepository = props["gitRepository"]
		def git_credential=props["git_credential"]
		def dockerRegistry = props["dockerRegistry"]
		def registry_credential=props["registry_credential"]
		def image = props["image"]
		def deployment = props["deployment"]
		def service = props["service"]
		def ingress = props["ingress"]
		def selector_key = props["selector_key"]
		def selector_val = props["selector_val"]
		def namespace = props["namespace"]
	
		stage("Get Source") {
			git branch: 'master', credentialsId: GIT_CREDENTIALS, url: "http://mindol.synology.me:8418/kiz-space/eureka-server.git"
        }

		try {
		
			stage("Gradle Build") {
				container('gradle') {
					sh './gradlew build'
				}
			}
		
			stage("Dockerize and Push") {
				container("docker") {
					docker.withRegistry(http://mindol.synology.me:60000/v2/_catalog/, REGISTRY_CREDENTIALS) {
						sh "docker build -f ./Dockerfile -t kiz/eureka:0.1 ."
						sh "docker push kiz/eureka:0.1"
						sh "docker tag kiz/eureka:0.1 kiz/eureka:latest"
						sh "docker push kiz/eureka:latest"
					}
				}
			}
			
		} catch(e) {
			currentBuild.result = "FAILED"
		}
	}
}