Jenkins Pipeline基本概念

Jenkins Pipeline 是一套插件,支持将持续交付流水线实现和集成到 Jenkins 中。它提供了一种可扩展的方式来将简单到复杂的交付流水线建模为代码。

一、Pipeline 基本概念

1. Pipeline 核心概念

参数说明
Pipeline用户定义的CD流水线模型,包含整个构建过程
Node执行Pipeline的机器,通常是Jenkins agent
Stage逻辑分组的概念,代表Pipeline的一个阶段(如构建、测试、部署)
tep单个构建步骤,告诉Jenkins在特定时间点做什么

2. 两种语法风格

声明式Pipeline (Declarative Pipeline)

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh 'make'
            }
        }
    }
}
特点
更简单的语法
预定义结构
更适合简单的流水线
内置错误处理和超时功能

脚本式Pipeline (Scripted Pipeline)

node {
    stage('Build') {
        sh 'make'
    }
}
特点
基于Groovy的完整编程能力
更灵活的控制结构
适合复杂逻辑
需要更多Groovy知识

二、Pipeline 核心组件详解

1. agent

指定整个Pipeline或特定阶段在何处执行:

agent {
    label 'my-label'  // 在指定标签的节点上运行
    // 或
    docker 'maven:3.8.1-jdk-11'  // 在Docker容器中运行
}
常见选项说明
any在任何可用agent上运行
none不分配全局agent,每个stage需自己定义
label在指定标签的节点上运行
docker在Docker容器中运行

2. stages

包含一系列stage指令的容器:

stages {
    stage('Build') { ... }
    stage('Test') { ... }
    stage('Deploy') { ... }
}

3. steps

在stage块中定义的具体执行步骤:

steps {
    sh 'mvn clean install'  // 执行shell命令
    timeout(time: 1, unit: 'HOURS') {  // 设置超时
        retry(3) {  // 重试机制
            sh './flakey-command.sh'
        }
    }
}

4. environment

定义环境变量:

environment {
    PATH = "/opt/maven/bin:$PATH"
    DB_CREDENTIALS = credentials('db-secret')  // 使用Jenkins凭证
}

5. options

配置Pipeline的特定选项:

options {
    timeout(time: 1, unit: 'HOURS')  // 超时设置
    retry(3)  // 失败重试次数
    disableConcurrentBuilds()  // 禁止并发构建
    buildDiscarder(logRotator(numToKeepStr: '10'))  // 构建历史保留策略
}

6. parameters

定义参数化构建的参数:

parameters {
    string(name: 'VERSION', defaultValue: '1.0.0', description: '发布版本')
    choice(name: 'ENV', choices: ['dev', 'staging', 'prod'], description: '部署环境')
    booleanParam(name: 'RUN_TESTS', defaultValue: true, description: '是否运行测试')
}

7. triggers

定义Pipeline的触发方式:

triggers {
    cron('H */4 * * 1-5')  // 定时构建
    pollSCM('H */15 * * *')  // 轮询SCM变更
    upstream(upstreamProjects: 'job1,job2', threshold: hudson.model.Result.SUCCESS)
}

8. post

定义Pipeline或stage完成后执行的操作:

post {
    always {
        echo '总会执行'
    }
    success {
        slackSend(color: 'good', message: "构建成功: ${currentBuild.fullDisplayName}")
    }
    failure {
        mail to: 'team@example.com', subject: "构建失败: ${currentBuild.fullDisplayName}"
    }
    unstable {
        echo '标记为不稳定时执行'
    }
    changed {
        echo '构建状态与上次不同时执行'
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值