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 提供了更大的灵活性。如果你有更多具体的需求或问题,请随时提问!

相关推荐
林开落L27 分钟前
Linux深度探索:进程管理与系统架构
linux·运维·系统架构
XINO33 分钟前
防火墙双机热备实践
运维·安全
神洛华43 分钟前
Docker概念详解
运维·docker·容器
四川合睿达自动化控制工程有限公司44 分钟前
管道位移自动化监测方案
运维·自动化
007php0071 小时前
Docker Compose 安装Elasticsearch8和kibana和mysql8和redis5 并重置密码的经验与总结
大数据·运维·elasticsearch·搜索引擎·docker·容器·jenkins
XINO1 小时前
企业常见安全事故排查思路
运维·安全
自由如风7092 小时前
Apache Atlas构建安装(Linux)
linux·运维·apache
烦躁的大鼻嘎2 小时前
【Linux】进程替换与自定义 Shell:原理与实战
linux·运维·服务器·ubuntu
merge不墨迹2 小时前
Kubernetes 创建 Jenkins 实现 CICD 配置指南
kubernetes·jenkins
Run1.3 小时前
深入解析 Linux 文件系统中的软硬链接:从原理到实践
linux·运维·服务器