【注意】最后更新于 December 29, 2021,文中内容可能已过时,请谨慎使用。
下面是一个示例配置文件,包含了常用的步骤,基本每一个步骤都有注解
其中docker打包借助了maven的插件maven插件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
pipeline {
agent any
// 部署参数
parameters {
string(name: 'type', defaultValue: 'dev', description: '应用环境')
string(name: 'servers',defaultValue:'0' ,description: '对应服务器(可选)')
}
// 触发器,这里指定每2分钟轮询一次
triggers {
pollSCM('*/2 * * * *')
}
stages {
// 使用maven编译打包
stage('Build') {
steps {
sh 'mvn clean compile -P$type'
sh 'mvn clean package -Dmaven.test.skip=true -P$type'
}
}
// 借助maven打包镜像
stage('Build Docker image') {
steps {
sh 'mvn docker:build -Ddeploy_type=$type -P$type'
}
}
//开始部署相关流程
stage('deploy') {
steps {
script {
//根据环境区别处理,因为一般线上环境可能需要通过堡垒机,测试环境则不用
if (env.type == 'test' || env.type == 'dev') {
sh "chmod +x deploy_service_ssh.sh"
//根据参数提供的服务器列表逐台部署
for (item in env.servers.tokenize(',')) {
def cmd = "deploy_service_ssh.sh" + item
sh "$cmd"
}
} else if (env.type == 'prod') {
for (item in env.servers.tokenize(',')) {
echo "Deploying to " + item
def cmd = "deploy_gateway.sh " + item
sh "$cmd"
}
} else {
throw new RuntimeException('end_other')
}
echo "清理镜像"
// 清理过期镜像
try{
sh "docker image ls |grep none|awk '{print \$3}'|xargs docker image rm"
}catch(Exception e){
}
}
}
}
}
// 部署步骤完成后的操作,可以在这里加入类似推送的功能
post{
always{
script {
def msg = env.service_name + '部署成功'
echo msg
}
}
}
}
|