// 脚本式流水线完整结构示例(标注包含关系) 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 "流水线执行失败!" } } }