前言
在本文开始前可以先看看这篇文章:
Jenkins + Gitlab + Maven + Tomcat 持续集成部署 SpringBoot 应用实践,除了 Jenkins 构建项目的方式不一样之外,其他配置都一样。
关于 pipeline 的简介和 pipeline 的两种语法模型的区别可以看这篇文章: Pipeline 声明式和脚本式的主要区别
Spring Boot 项目准备
这里创建了一个简单的 Spring Boot 项目,功能简单,运行后会提供一个可访问的 index 页面。结构图如下:
项目根路径有个 Jenkinsfile,关于该项目的构建与部署步骤等任务都被记录在该文件中,随着项目一起进行版本化迭代。
Jenkinsfile 里填写 pipeline 如下,这里采用的是声明式语法,这里分为 3 个 stage 分别对应代码 checkout,编译构建以及项目部署三个阶段,最后会有 email 推送每次构建的结果。
pipeline {
agent any
stages {
stage('拉取代码') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']],
doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [],
userRemoteConfigs: [[credentialsId: 'Jenkins_SSH_Key', url:
'git@192.168.43.208:yekongle-test/ci-test.git']]])
}
}
stage('编译构建') {
steps {
sh label: '', script: 'mvn clean package'
}
}
stage('项目部署') {
steps {
deploy adapters: [tomcat8(credentialsId: 'Tomcat-Auth', path: '', url: 'http://192.168.43.206:8080')], contextPath: null,
war: 'target/*.war'
}
}
}
post {
always {
emailext(
subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} -${BUILD_STATUS}!',
body: '${FILE,path="email.html"}',
to: 'yekongle@126.com'
)
}
}
}
同样将该项目推送到本地gitlab 上并配置好 webhook。
Jenkins 配置 pipeline
首先去插件中心安装 pipeline 插件
安装完插件后创建一个新 item 时可以看到可以选择一个 pipeline 类型的项目。
然后关于 pipeline 的配置可以参考下图,其中 pipeline 的 执行代码会引用到 Spring Boot 项目根路径的 Jenkinsfile。
构建并部署
保存 pipeline 配置后,可以通过提交代码到 master 分支触发构建任务,也可以直接在 Jenkins 手动启动一次 build up.
观察上图,pipeline 任务可以以可视化视图的形式展示出来,可以直观地看到每一个 stage 的执行时间和执行结果。
执行成功后会将项目 deploy 到 tomcat 容器,点击访问