最终Jenkins流水线各步骤分解
Jenkins+Springboot+gitlab+maven+jdk+docker
目录
编写Jenkinsfile,Dockerfile,Deploy.sh
创建jenkins流水线工程
多模块maven项目结构大概如下:
cfw-project #父工程
-canfu-eureka #子工程(1)
-canfu-provider #子工程(2)
-canfu-supplier #子工程(n)
-src
-pom.xml
-pom.xml
-Dockerfile_config #存放各子工程Dockerfile
-Deploy.sh #远程部署脚本
1、编写Jenkinsfile,Dockerfile,Deploy.sh
编写声明式Jenkinsfile
步骤大概为:(1)打印变量信息;(2)从源码库拉取对应分支代码到"${WORKSPACE}";(3)maven编译、打包;(4)将jar包构建成docker镜像;(5)触发部署脚本(Deploy.sh )实施远程部署/重启/回滚;(6)清理工作目录
pipeline {
agent any
environment {
registryUrl= "192.168.1.110:5000" //搭建docker私有仓库(Harbor)或者 用DockerHub 又或者用云平台的“容器镜像服务”
registry_user= "xxx"
registry_pass= "xxx"
}
options {
timestamps() //设置在项目打印日志时带上对应时间
disableConcurrentBuilds() //不允许同时执行流水线,被用来防止同时访问共享资源等
timeout(time: 5, unit: 'MINUTES') // 设置流水线运行超过n分钟,Jenkins将中止流水线
buildDiscarder(logRotator(numToKeepStr: '20')) // 表示保留n次构建历史
}
//gitlab webhook触发器
//聚合项目,代码发生以下动作后,所有子项目将被触发构建,可选择使用(前提需要gitlab配置 webhook)
//triggers{ //方法一,为All时
// gitlab( triggerOnPush: true, //代码有push动作就会触发job
// triggerOnMergeRequest: true, //代码有merge动作就会触发job
// branchFilterType: "All") //为All时(只有符合条件的分支才会触发构建 “All/NameBasedFilter/RegexBasedFilter”)
//}
//triggers{ //方法二,为branchFilterType时
// gitlab( triggerOnPush: true,
// triggerOnMergeRequest: true,
// branchFilterType: "branchFilterType", //为branchFilterType时
// includeBranchesSpec: "dev") //基于branchFilterType值,输入期望包括的分支的规则
//}
stages{
stage('Print Message') { //打印信息
steps {