36 lines
1.6 KiB
Plaintext
36 lines
1.6 KiB
Plaintext
// 脚本式流水线完整结构示例(标注包含关系)
|
||
pipeline { // 1. 根容器:所有流水线逻辑的顶层包裹
|
||
agent any // 代理配置(指定执行环境)
|
||
|
||
stages { // 2. 阶段集合:包含所有「stage」(必须有,且只能有1个)
|
||
stage('构建') { // 3. 单个阶段:包含「steps」或「script」(至少1个,可多个)
|
||
steps { // 4. 步骤容器:直接包裹「具体执行命令」(如 sh、echo)
|
||
echo "开始构建Go项目"
|
||
sh "go build -o app main.go" // 具体步骤(执行shell命令)
|
||
}
|
||
}
|
||
|
||
stage('部署实例A') { // 第二个阶段
|
||
steps {
|
||
script { // 5. 脚本块:嵌套在「steps」内,用于编写复杂逻辑(如循环、判断)
|
||
def targetHost = "192.168.1.100"
|
||
echo "向实例A发送优雅退出信号"
|
||
// 复杂逻辑:轮询检查进程状态(需用script包裹)
|
||
def elapsed = 0
|
||
while (elapsed < 60) {
|
||
sh "ssh user@${targetHost} 'ps -ef | grep app | grep -v grep'"
|
||
sleep 2
|
||
elapsed += 2
|
||
}
|
||
}
|
||
// script外仍可写简单步骤
|
||
sh "scp app user@${targetHost}:/opt/app/" // 同步新产物
|
||
}
|
||
}
|
||
}
|
||
|
||
post { // 可选:流水线结束后执行的操作(如通知、清理)
|
||
success { echo "流水线执行成功!" }
|
||
failure { echo "流水线执行失败!" }
|
||
}
|
||
} |