Jenkinsfile +docekr 自动化构建镜像并push到私有库

这里只是做了个dame ,仅供参考。

全局工具配置maven ,git,jdk 这里就不赘述了。

直接新建一个pipeline 任务
Jenkinsfile +docekr 自动化构建镜像并push到私有库_第1张图片
主要的配置如下图:
Jenkinsfile +docekr 自动化构建镜像并push到私有库_第2张图片
下面是项目中 jenkinsfile 的编写:


pipeline {
    agent any
	tools {
		maven 'maven3.6.0'
		jdk 'jdk1.8'
	}
	environment {
		registryUrl= "120.78.215.177:8161"
		artifactId =readMavenPom().getArtifactId().toLowerCase()
		image_tag = readMavenPom().getVersion()
		image_repository = "${registryUrl}/${artifactId}"
    }
    stages{
	    stage('prepare'){
			steps {
				echo "registryUrl: ${registryUrl} ,image_repository: ${image_repository} ,image_tag : ${image_tag}"
			}
		}
        stage('Build project') {
            steps {
                sh 'mvn clean package -DskipTests'
            }
        }
		stage('Build & Push Image') {
            steps {
					dir('target'){
						script {
							def app = docker.build('${image_repository}:${image_tag}')
							app.push('${image_tag}')
						    app.push('latest')
						}
					}
            }
        }
		stage('deploy') {
			steps {
				echo "deploy"
			}
		}
    }
}

Jenkins Pipeline,简而言之,就是一套运行于Jenkins上的工作流框架
分为 Declarative(声明式) Pipeline 和 Scripted(脚本式) Pipeline
上面是 声明式的 Pipeline

agent any 必须存在,agent必须在pipeline块内的顶层定义

tools 定义需要用到的 、Jenkins系统配置中配置好了的工具,

tools {
		maven 'maven3.6.0'
		jdk 'jdk1.8'
	}

maven3.0.6为我配置的maven名

Jenkinsfile +docekr 自动化构建镜像并push到私有库_第3张图片

environment 定义了一组全局的环境变量键值对,在整个pipeline中可以用${}读取值。

readMavenPom()这个方法用于读取pom.xml中的内容,需要安装Pipeline Utility Steps插件

artifactId =readMavenPom().getArtifactId().toLowerCase()
获取pom文件中小写的 artifactid

toLowerCase() 是groovy的语法,如果你想在jenkinsfile中使用一些函数,可以试试groovy的语法。

dir(‘target’) 进入target 路径下

上面整个脚本主要是对项目进行打包,打包后的文件都在 target/ 目录下,进入target/ ,然后读取 pom文件中的 artifactId 和version ,作为镜像的repository 和tag ,根据dockerfile 进行镜像的构建,并push 到私有库。

你可能感兴趣的:(Linux)