120.Jenkins里的Pipeline Script

目录

[1. **Declarative Pipeline**](#1. Declarative Pipeline)

主要部分

示例

[2. **Scripted Pipeline**](#2. Scripted Pipeline)

主要部分

示例

[3. **常用指令和功能**](#3. 常用指令和功能)

环境变量

工具管理

文件操作

构建触发器

并行执行

异常处理

用户交互

4.**两种类型的特点**

[1. **声明式 Pipeline (Declarative Pipeline)**](#1. 声明式 Pipeline (Declarative Pipeline))

中文解释:

特点:

[2. **脚本式 Pipeline (Scripted Pipeline)**](#2. 脚本式 Pipeline (Scripted Pipeline))

中文解释:

特点:

3.**如何选择**

5.**总结**


Jenkins Pipeline 脚本可以包括多种内容,用于定义和控制 CI/CD 流程的各个方面。根据 Jenkins Pipeline 的类型(Declarative 或 Scripted),脚本的内容和结构会有所不同。以下是详细的说明和示例:

1. **Declarative Pipeline**

Declarative Pipeline 是一种结构化、声明式的语法,适合大多数 CI/CD 场景。它使用 `pipeline` 块来定义整个流水线。

主要部分

  • **agent**:指定执行构建的环境。

  • **stages**:定义多个阶段,每个阶段包含一个或多个步骤。

  • **steps**:定义具体的构建步骤。

  • **environment**:设置环境变量。

  • **tools**:指定需要的工具版本。

  • **post**:定义构建完成后的操作(如清理工作空间、发送通知)。

  • **triggers**:定义触发构建的方式。

  • **parameters**:定义用户输入的参数。

  • **options**:设置一些选项,如超时时间、并发控制等。

示例

Groovy 复制代码
pipeline {
    agent any
    environment {
        NPM_CONFIG_REGISTRY = 'https://registry.npmmirror.com'
    }
    tools {
        nodejs 'node-14'
    }
    stages {
        stage('Checkout') {
            steps {
                checkout scm
            }
        }
        stage('Install Dependencies') {
            steps {
                sh 'npm install'
            }
        }
        stage('Build') {
            steps {
                sh 'npm run build'
            }
        }
        stage('Test') {
            steps {
                sh 'npm test'
            }
        }
    }
    post {
        always {
            cleanWs()
        }
        success {
            echo 'Build succeeded!'
        }
        failure {
            echo 'Build failed!'
        }
    }
    triggers {
        cron('H/15 * * * *')
    }
    parameters {
        string(name: 'BRANCH_NAME', defaultValue: 'main', description: 'Branch to build')
    }
    options {
        timeout(time: 1, unit: 'HOURS')
        disableConcurrentBuilds()
    }
}

2. **Scripted Pipeline**

Scripted Pipeline 使用 Groovy 语法,提供了更大的灵活性,但相对复杂。它以 `node` 块为起点,逐步定义构建逻辑。

主要部分

  • **node**:指定执行构建的环境。

  • **stage**:定义阶段。

  • **steps**:定义具体的构建步骤。

  • **environment**:设置环境变量。

  • **try-catch-finally**:用于异常处理。

  • **parallel**:并行执行多个任务。

  • **input**:等待用户输入确认。

  • **timeout**:设置超时时间。

示例

Groovy 复制代码
node {
    environment {
        NPM_CONFIG_REGISTRY = 'https://registry.npmmirror.com'
    }
    try {
        stage('Checkout') {
            checkout scm
        }
        stage('Install Dependencies') {
            sh 'npm install'
        }
        stage('Build') {
            sh 'npm run build'
        }
        stage('Test') {
            sh 'npm test'
        }
        stage('Deploy') {
            input 'Do you want to deploy?'
            parallel(
                deployToDev: {
                    sh 'npm run deploy-dev'
                },
                deployToProd: {
                    sh 'npm run deploy-prod'
                }
            )
        }
    } catch (err) {
        currentBuild.result = 'FAILED'
        throw err
    } finally {
        cleanWs()
    }
}

3. **常用指令和功能**

环境变量

  • **内置环境变量**:如 `env.BUILD_ID`, `env.WORKSPACE` 等。

  • **自定义环境变量**:通过 `environment` 块或 `withEnv` 指令设置。

工具管理

  • **tools**:自动安装和配置所需的工具(如 JDK、Node.js 等)。

文件操作

  • **writeFile**:写入文件。

  • **readFile**:读取文件。

  • **archiveArtifacts**:归档构建产物。

  • **stash/unstash**:暂存和恢复文件。

构建触发器

  • **cron**:定时触发构建。

  • **pollSCM**:定期轮询代码仓库。

  • **upstream**:由其他项目触发。

并行执行

  • **parallel**:并行执行多个任务。

异常处理

  • **try-catch-finally**:捕获异常并进行处理。

用户交互

  • **input**:等待用户输入确认。

4.**两种类型的特点**

Jenkins Pipeline 的类型分为两种:**声明式 Pipeline (Declarative Pipeline)** 和 **脚本式 Pipeline (Scripted Pipeline)**。以下是这两种类型的中文解释及其特点:

1. **声明式 Pipeline (Declarative Pipeline)**

中文解释:

声明式 Pipeline 是一种结构化、声明式的语法,用户通过定义各个部分(如 `agent`、`stages`、`steps` 等)来描述整个构建流程。它提供了更清晰和易读的语法结构,适合大多数 CI/CD 场景。

特点:

  • **结构化**:使用固定的语法结构,包括 `pipeline` 块,使得代码更加规范和易于理解。

  • **易于维护**:由于其结构化特性,更容易进行版本控制和团队协作。

  • **内置验证**:Jenkins 提供了对声明式 Pipeline 的内置验证工具,帮助发现潜在问题。

  • **丰富的内置指令**:支持多种内置指令,如 `environment`、`tools`、`post` 等,简化常见任务的配置。

2. **脚本式 Pipeline (Scripted Pipeline)**

中文解释:

脚本式 Pipeline 使用 Groovy 语法编写,提供更大的灵活性和编程能力。用户可以自由编写逻辑,适合复杂的构建场景或需要高度定制化的流水线。

特点:

  • **灵活性高**:完全基于 Groovy 语言,允许编写任意复杂的逻辑。

  • **动态性**:可以根据条件动态生成和修改 Pipeline。

  • **复杂逻辑支持**:支持更复杂的控制结构,如 `if-else`、`try-catch`、`loops` 等。

  • **学习曲线较陡**:由于使用完整的编程语言,对于不熟悉 Groovy 或编程的新手来说可能较难上手。

3.**如何选择**

  • **声明式 Pipeline** 更加结构化和易读,适合大多数 CI/CD 场景,特别是新手用户和团队协作。

  • **脚本式 Pipeline** 提供了更大的灵活性和编程能力,适合复杂的构建场景或需要高度定制化的流水线。

选择哪种类型的 Pipeline 取决于你的具体需求和团队的技术水平。如果你有更多具体的问题或需要进一步的帮助,请随时提问!

5.**总结**

Jenkins Pipeline 脚本可以包括以下内容:

  • **环境配置**:如环境变量、工具版本。

  • **构建阶段**:如检查代码、安装依赖、构建、测试、部署。

  • **后置操作**:如清理工作空间、发送通知。

  • **触发器**:如定时触发、代码提交触发。

  • **用户交互**:如等待用户确认。

  • **异常处理**:如捕获和处理错误。

选择 Declarative 或 Scripted Pipeline 取决于你的需求和偏好。Declarative 更加结构化和易读,而 Scripted 提供了更大的灵活性。如果你有更多具体的需求或问题,请随时提问!

相关推荐
Ven%2 小时前
如何让后台运行llamafactory-cli webui 即使关掉了ssh远程连接 也在运行
运维·人工智能·chrome·python·ssh·aigc
迷茫的小技术4 小时前
OSPF使能配置
运维·服务器·网络
揽星逐月酒微醺5 小时前
find 查找文件grep匹配数据
linux·运维·服务器
银河麒麟操作系统6 小时前
【银河麒麟高级服务器操作系统】服务器异常重启故障分析及处理建议
linux·运维·服务器·安全·电脑
Codeking__6 小时前
Linux初识——基本指令
linux·运维·服务器
xiao-xiang6 小时前
nginx-链路追踪(trace)实现
运维·nginx
sun0077006 小时前
Linux如何查看有多少个用户登录?
linux·运维·服务器
sanzk6 小时前
虚拟机安装黑群晖
linux·运维·服务器
gavin_gxh6 小时前
SAP BC 同服务器不同client之间的传输SCC1
运维·经验分享·其他
大霞上仙7 小时前
jenkins入门13--pipeline
运维·jenkins