Jenkinsfile +docekr 自动化构建镜像并push到私有库
这里只是做了个dame ,仅供参考。
全局工具配置maven ,git,jdk 这里就不赘述了。
直接新建一个pipeline 任务
主要的配置如下图:
下面是项目中 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名
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 到私有库。