Jenkinsfile怎么写

目录

[1. 理解 Jenkins 和 Jenkinsfile](#1. 理解 Jenkins 和 Jenkinsfile)

[2. 基本概念](#2. 基本概念)

[3. Jenkinsfile 结构](#3. Jenkinsfile 结构)

[示例:Declarative Pipeline](#示例:Declarative Pipeline)

各部分拆解讲解

[Pipeline 声明](#Pipeline 声明)

[Agent 声明](#Agent 声明)

[Environment 环境变量](#Environment 环境变量)

Options

Stages

Steps

[Post 部分](#Post 部分)

[4. 学习资料](#4. 学习资料)

[5. 实践运用](#5. 实践运用)


学习和运用 Jenkinsfile 是熟练使用 Jenkins 进行持续集成和持续交付(CI/CD)流程的关键一步。这段时间也是学有所成 和大家分享下学习成果:

1. 理解 Jenkins 和 Jenkinsfile

  • Jenkins 是一个开源的自动化服务器,可以用于构建、测试、部署软件项目。
  • Jenkinsfile 是用来定义 Jenkins Pipeline 的文本文件,使用领域特定语言(DSL)编写。它允许你将构建过程作为代码来管理,便于版本控制和协作。

2. 基本概念

  • Pipeline:表示工作流的完整过程,由一系列阶段(Stage)构成。
  • Stage:Pipeline 中的逻辑划分,每个阶段可以包含一个或多个步骤。
  • Step:执行具体动作的基本构建单元,例如运行命令、构建项目。

3. Jenkinsfile 结构

Jenkinsfile 可以用两种不同的语法编写:Declarative 和 Scripted。Declarative 是较新的语法,更加简单和结构化。

示例:Declarative Pipeline
python 复制代码
pipeline {
    agent any 

    stages {
        stage('Build') { 
            steps {
                echo 'Building..'
                // Add build steps here
            }
        }
        stage('Test') { 
            steps {
                echo 'Testing..'
                // Add test steps here
            }
        }
        stage('Deploy') { 
            steps {
                echo 'Deploying....'
                // Add deploy steps here
            }
        }
    }
}
各部分拆解讲解
Pipeline 声明
python 复制代码
pipeline {
    ...
}
  • 声明这是一个 Pipeline 脚本,所有内容需包含在大括号内。
Agent 声明
python 复制代码
agent any
  • 指定在任何可用的 Jenkins 节点上执行 Pipeline。具体的节点可以通过指定标签来限定。
Environment 环境变量
python 复制代码
environment {
    NODE_ENV = 'production'
}
  • 定义一个环境变量 NODE_ENV,在 Pipeline 的所有步骤中都可以使用。
Options
python 复制代码
options {
    timeout(time: 1, unit: 'HOURS')
}
  • 定义一些全局性的选项,如设置 Pipeline 的超时时间为 1 小时,防止长时间运行;或者加入一些定时的操作(利用cron)
Stages
python 复制代码
stages {
    stage('Stage Name') {
        steps {
            // ...
        }
    }
    ...
}
  • 定义 Pipeline 的各个阶段(Stage)。每个阶段包含步骤(Steps),具体执行的操作写在步骤中。
Steps
  • Checkout 代码

    python 复制代码
    stage('Checkout') { 
        steps {
            checkout scm
        }
    }
    • 使用 checkout scm 从版本控制系统中检出代码,通常会从 Git 仓库拉取源代码。
  • Build 构建

    python 复制代码
    stage('Build') {
        steps {
            sh 'npm install'
        }
    }
    • 在这个阶段,通过 sh 执行 Shell 命令来安装项目依赖。
  • Test 测试

    python 复制代码
    stage('Test') {
        steps {
            sh 'npm test'
        }
    }
    • 运行测试命令,确保代码无误。
  • Deploy 部署

    python 复制代码
    stage('Deploy') {
        steps {
            input message: 'Approve deployment?', ok: 'Deploy'
            sh 'npm run deploy'
        }
    }
    • 在部署阶段之前,使用 input 来进行手动审批,然后运行部署脚本。
Post 部分
python 复制代码
post {
    success {
        echo 'Pipeline succeeded!'
    }
    failure {
        echo 'Pipeline failed.'
    }
    always {
        cleanWs()
    }
}
  • success: 当 Pipeline 成功时执行。
  • failure: 当 Pipeline 失败时执行。
  • always: 不论成功与否,都执行,比如清理工作空间或者发送邮件到个人邮箱。

4. 学习资料

  • 官方文档 :Jenkins 官方提供了全面的 使用指南,包括 Jenkinsfile。
  • 在线课程:许多平台提供 Jenkins 和 Jenkinsfile 的在线培训课程。
  • 开源项目:在 GitHub 等平台上查找使用 Jenkins 的开源项目,阅读它们的 Jenkinsfile,很有帮助。

5. 实践运用

  • 创建 Jenkinsfile:为你的项目创建一个 Jenkinsfile,并将其添加到版本控制仓库中。
  • 配置 Jenkins:在 Jenkins 中创建一个新任务,指向包含 Jenkinsfile 的项目仓库。
  • 迭代开发:随着项目需求的改变,不断更新和优化 Jenkinsfile。

通过对 Jenkinsfile 的学习和实践,可以大大提升项目的自动化程度和团队的协作效率。如果你有具体问题或需要更多的指导,欢迎提出!

相关推荐
慌糖1 小时前
✨ Apifox:这玩意儿是接口界的“瑞士军刀”吧![特殊字符][特殊字符]
测试工具
试着4 小时前
【新技术】微软 Azure Test Impact Analyzer (TIA) 全面解析
测试工具·microsoft·azure·测试覆盖率
心灵宝贝6 小时前
Postman-win64-7.2.2 安装教程(Windows 64位详细步骤)
windows·测试工具·postman
程序员小远7 小时前
接口测试和单元测试详解
自动化测试·软件测试·python·测试工具·单元测试·测试用例·接口测试
Ctrl С10 小时前
[三分钟]入门web自动化测试(一):1.使用驱动管理下载web驱动(WebDriver);2.初步认识和使用Selenium
selenium·测试工具·自动化·web
半路_出家ren1 天前
流量抓取工具(wireshark)
网络·网络协议·测试工具·网络安全·wireshark·流量抓取工具
猿周LV1 天前
JMeter 安装及使用 [软件测试工具]
java·测试工具·jmeter·单元测试·压力测试
天才测试猿2 天前
软件测试之功能测试详解
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
远方2352 天前
应用信息1.13.0发布
测试工具·安全·apk·开发工具·应用·工具·信息
珠峰下的沙砾2 天前
如何在 Postman 中,自动获取 Token 并将其赋值到环境变量
测试工具·lua·postman