Jenkinsfile流水线构建教程

前言

Jenkins 是目前使用非常广泛的自动化流程的执行工具, 我们目前的一些自动化编译, 自动化测试都允许在 Jenkins 上面. 在 Jenkins 的术语里面, 一些自动化工作联合起来称之为流水线, 比如拉取代码, 编译, 运行自动化测试等.

本文的主要目的是引导你快速熟悉 Jenkinsfile 结构和语义, 让你读完之后可以自己写出一个 Jenkinsfile.

Jenkins 流水线分为脚本式的和声明式的. 脚本式流水线比较灵活, 可以嵌入一些 groovy 语言编程,功能比较强大, 但是对于新手而言上手比较困难, 有一定的学习门槛. 声明式流水线更具结构化, 简单直白, 减少了对 groovy 语言的依赖, 对新用户更友好.

Jenkinsfile 是什么

在 Jenkins 2 中, 流水线配置可以从 Jenkins 中分离出来. Jenkinsfile 允许你将配置文件和执行步骤以代码的形式保存, 这样就可以做到像管理 源代码一样管理 Jenkins 任务, 支持历史追溯, 差异对比等.

Jenkins2 推荐使用名为 'Jenkinsfile’的文件保存任务配置和流水线信息, 不同的项目和分支都有自己 的 Jenkinsfile, 其内容各不相同.

Jenkinsfile 基本功能

让我们先从一个简单的 Jenkinsfile 开始, 逐步了解 Jenkinsfile 的功能和用法.

Jenkinsfile Hello world

pipeline {
    agent any

    stages {
        stage('Source') {
            steps {
                echo 'hello world'
            }
        }
    }
}
  • 第 1 行声明这是一个流水线.
  • 第 2 行指定了执行该流水线的 agent, agent 可以理解为一个执行环境, 可以是 docker, k8s, 也可以是当前机器环境
  • 第 4 行指定了执行该流水线所需要的步骤, stages 里面可以保护多个 stage
  • 第 5 行指定了一个名字叫做'Source'stage
  • 第 6 行指定了该 stage 内需要执行的 steps
  • 第 7 行调用 echo 内置函数打印了一句'hello world'

执行 shell 脚本

在 steps 块中使用sh来执行. 多行命令可以用"""(三个双引号) 或者 "'(三个单引号). 区别在于双引号里面引用 的变量会被计算展开. 例如:

steps {
   
    // 单行shell命令
    sh 'echo "Hello world"'

    // 多行shell命令, 以连续的三个'或者"包围
    sh '''#!/bin/bash
    # multi line shell script
    cd project
    mkdir build && cd build
    cmake .. && cmake --build .
    '''
}

指定工作目录

dir指令的功能是设定命令执行时的工作目录, 如果该目录不存在则创建它.

steps {
   
    dir('project/build') {
   
        sh "echo `pwd`"
    }
}

拉取 GitHub/Bitbucket 代码

声明式流水线的 git 检出代码非常简单直白. 如下:

steps {
   
    dir('code_repo') {
   
        git credentialsId: 
Jenkins是一个开源的持续集成和交付工具,它提供了丰富的功能来自动化构建、测试和部署软件项目。Jenkins构建流水线是一种将软件开发过程划分为多个阶段,并在每个阶段执行一系列操作的方式。 Jenkins构建流水线可以通过Jenkinsfile文件或者通过Jenkins的Web界面进行配置。以下是一个简单的Jenkins构建流水线的示例: 1. 定义流水线的环境和参数: ``` pipeline { agent any parameters { string(name: 'ENV', defaultValue: 'dev', description: 'Environment') } stages { // ... } } ``` 2. 定义流水线的阶段: ``` stages { stage('Build') { steps { // 执行构建操作,如编译代码、生成可执行文件等 } } stage('Test') { steps { // 执行测试操作,如运行单元测试、集成测试等 } } stage('Deploy') { steps { // 执行部署操作,如将构建好的软件包部署到目标环境 } } } ``` 3. 定义流水线的触发条件: ``` triggers { // 定时触发 cron('H 0 * * 1-5') // 或者根据代码仓库的变化触发 scm('git@github.com:username/repo.git') } ``` 4. 定义流水线的通知和报告: ``` post { success { // 构建成功后执行的操作,如发送通知、生成报告等 } failure { // 构建失败后执行的操作,如发送通知、生成报告等 } } ``` 通过以上配置,Jenkins会按照定义的流水线顺序执行每个阶段的操作,并根据触发条件自动触发构建。开发人员可以根据实际需求自定义流水线的各个阶段和操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

arong-xu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值