Jenkins Pipeline

1、Pipeline介绍

Pipeline 是Jenkins 2.0的精髓,简单来说,就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程。

Pipeline的实现方式是一套Groovy DSL,任何发布流程都可以表述为一段Groovy脚本,并且Jenkins支持从代码库直接读取脚本,从而实现了Pipeline as Code的理念。

Stage: 阶段,一个Pipeline可以划分为若干个Stage,每个Stage代表一组操作。

注意,Stage是一个逻辑分组的概念,可以跨多个Node。

Node: 节点,一个Node就是一个Jenkins节点,或者是Master,或者是Agent,是执行Step的具体运行期环境。

2、pipeline简单示例

在这里插入图片描述
配置页面前半部分和freestyle项目一样,只是后半部分少了源码管理、构建和构建后操作这部分内容,这是因为pipeline所有的这些操作都是要通过编写Groovy脚本来实现,大家不要怕,写一些我们常用的操作也不难,下面我们通过具体的例子带大家来学习。我们首先创建一个最简单的例子。

在这里插入图片描述
在这里插入图片描述

node {
   echo 'Hello World'
}

此段代码的作用就是输出Hello World。

保存后执行,查看结果输出了Hello World。
在这里插入图片描述
在这里插入图片描述

3、Pipeline多stage示例

  1. 多stage Pipeline Job

我们使用如下的pipeline script:

node {
    stage("Pull Code"){
        echo "pull code from git "
    }
    stage("Code Build"){
        echo "Buile code"
    }
    stage('Unit Test'){
        echo "Unit Test"
    }
}

stage表示阶段,每个阶段里可以执行具体的操作。我们暂时先简单的输出一些文字,后面再介绍其他常用操作。

保存后Job后,执行构建:
在这里插入图片描述
我们可以看每一个阶段的执行时间,点击可以查看每一个阶段执行的日志:

在这里插入图片描述
2. Pipeline Scipt 执行命令、脚本

我们可以使用如下方式执行命令或者脚本

node {
    stage("Pull Code"){
        echo "pull code from git"
        sh "ls /etc"
    }
    stage("Code Build"){
        echo "Buile code"
        sh "/server/scripts/demo.sh"
    }
    stage('Unit Test'){
        echo "Unit Test"
    }
}

得到如下结果:
在这里插入图片描述
3. 使用生成器生成pipeline脚本

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在我们使用Pipeline Script实现frontend-job,脚本如下:

node {
    stage("获取代码"){
        echo "获取代码"
        git branch: 'dev', url: 'git@192.168.56.12:web-site/frontend.git'
    }
    stage("打包"){
        echo "打包"
        sh "tar czf frontend-${BUILD_NUMBER}.tar.gz ./*.html"
    }
    stage('发布到node1'){
        echo "发布到node1"
        sh "scp frontend-${BUILD_NUMBER}.tar.gz 192.168.56.11:/data/web"
    }
}

构建执行后:
在这里插入图片描述
在这里插入图片描述
4. 使用Pipeline Script调用己有的Job

我们的目录的是想一次性按顺序自动执行多个Job,我们还是使用生成器:

node {
    stage("获取代码"){
        echo "获取代码"
        git branch: 'dev', url: 'git@192.168.56.12:web-site/frontend.git'
    }
    stage("打包"){
        echo "打包"
        sh "tar czf frontend-${BUILD_NUMBER}.tar.gz ./*.html"
    }
    stage('发布到node1'){
        echo "发布到node1"
        sh "scp frontend-${BUILD_NUMBER}.tar.gz 192.168.56.11:/data/web"
    }
    stage("调用frontend Job"){
        build 'frontend-job'
    }
}

执行结果如下:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大风车滴呀滴溜溜地转

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

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

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

打赏作者

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

抵扣说明:

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

余额充值