创建一个Jenkinsfile管道

设置Jenkins多分支管道作业和定义Jenkinsfile的基础。

创建多分支管道作业

如果您想阅读本文,但没有手头的Jenkins实例,则可以使用我的GitHub项目启动dockerized Jenkins:

git clone https://github.com/hoto/jenkinsfile-examples.git
cd jenkinsfile-examples
docker-compose pull
docker-compose up

让我们通过转到localhost:8080打开Jenkins

那里已经有几个工作,但是请忽略它们,因为我们将创建一个新工作。

创造新工作

单击“ New Item以打开工作创建向导。

Jenkinsfile管道

提供my-pipeline-job作为my-pipeline-job的名称,并选择Multibranch Pipeline作为类型,然后单击OK

Jenkinsfile管道

Pipeline作业类型允许您将Jenkinsfile直接粘贴到作业配置中,或者引用单个git存储库作为源,然后指定Jenkinsfile所在的单个分支。 您很少要使用此作业类型,最好避免使用。

Multibranch Pipeline作业类型,您可以定义一个作业,Jenkins将从一个git存储库中检测到多个分支,并在找到Jenkinsfile时创建嵌套作业。 这是使用Jenkins管道的最佳方法。

定义Jenkinsfile源

添加一个Git源,并提供https://github.com/hoto/jenkinsfile-examples.git存储库链接。

Jenkinsfile管道
Jenkinsfile管道

Jenkins正在寻找Jenkinsfile的默认位置是使用Jenkinsfile作为文件名的项目的根。

Jenkinsfile可以放在任何目录中,文件名可以是您想要的任何文件。 但是除非您有充分的理由不Jenkinsfile做,否则我会遵循默认约定,即使用项目的根目录和Jenkinsfile作为文件名。

一个Jenkins作业只能引用一个Jenkinsfile。 如果您的存储库中有更多Jenkinsfile,则必须为每个文件创建一个Multibranch Pipeline作业。

提供jenkinsfiles/001-stages-declarative-style.groovy作为Jenkinsfile Script Path 。 我们也可以只为要扫描的特定分支指定一个正则表达式,但我更喜欢扫描并构建所有分支。

Jenkinsfile管道

我们引用的Jenkinsfile非常简单,看起来像这样:

pipeline {
  agent any
  stages {
  stage('Stage 1') {
      steps {
        script {
          echo 'Stage 1'
        }
      }
    }
  stage('Stage 2') {
      steps {
        script {
          echo 'Stage 2'
        }
      }
    }
  }
}

通过轮询检测更改

外部Webhook可以立即通过存储库中的更改(例如,新提交)通知Jenkins,但是如果您不知道如何设置它,则始终可以从Jenkins轮询git存储库并检查新更改开始。

激活“ Scan Multibranch Pipeline Triggers使Jenkins git fetch在1分钟的间隔内git fetch新更改。 当检测到新的提交或分支时,Jenkins将自动开始构建。

Jenkinsfile管道

然后,如果您可以在git托管提供程序中设置一个Webhook,以将新更改通知Jenkins,因为它会使开发人员的构建反馈循环更快。

单击“ Save ,Jenkins将开始第一次扫描。

Jenkinsfile管道

发生的事情是Jenkins克隆了存储库,并在每个分支中查找Jenkinsfile。 找到匹配项后,它将为每个分支创建嵌套作业,并为其运行构建。 在我们当前的设置中,詹金斯将每分钟执行一次此循环。

在撰写本文时,只有master分支符合我的工作标准。 因此,仅创建了一个作业。

Checking branches...
  Checking branch master
      ‘jenkinsfiles/001-stages-declarative-style.groovy’ found
    Met criteria

巢状工作

让我们看看詹金斯创造了什么。

回到詹金斯的家,然后点击my-pipeline-job

Jenkinsfile管道

如果您在无法自动创建或创建分支的作业中遇到问题,请检查“ Scan Multibranch Pipeline Log

Jenkinsfile管道

这与我们之前看到的日志视图相同,但是日志将每分钟刷新,或者当有人单击“ Scan Multibranch Pipeline Now链接时刷新。

Jenkinsfile管道

根据我的经验,这种观点是调试多分支管道问题的最佳方法。 如果您在git命令上看到超时,则通常意味着Jenkins无法访问git存储库。

以下日志告诉我们,仅检测到1个分支,并且Jenkins已经在该分支上具有提交的构建。

No changes detected: master (still at c9b78b77a085becd313f1efff2497)
Processed 1 branches

返回嵌套作业视图,然后单击master分支的作业。

Jenkinsfile管道
Jenkinsfile管道

如果引用的git仓库从不更改,则不会再运行任何构建。 如果需要,您始终可以通过单击Build Now链接手动触发构建。 当构建由于随机原因而失败时,这很有用。

自动分支检测

在本教程中,我将创建一个新分支并将其推送到存储库,以便我们可以测试是否创建了新的嵌套作业。

Jenkinsfile管道

一分钟后,自动创建creating-a-jenkins-pipeline-blog分支的新工作。

Jenkinsfile管道

从日志中,我们可以看到Jenkins检测到新的分支匹配管道条件并为其计划了构建。

Started by timer
[...]
Checking branches...
  Checking branch master
      ‘jenkinsfiles/001-stages-declarative-style.groovy’ found
    Met criteria
No changes detected: master (still at c9b78b77a085becd313f1efff249)
  Checking branch creating-a-jenkinsfile-pipeline-blog
      ‘jenkinsfiles/001-stages-declarative-style.groovy’ found
    Met criteria
Scheduled build for branch: creating-a-jenkinsfile-pipeline-blog
Processed 2 branches
Jenkinsfile管道

而已! 下一步将是为即时构建创建一个Webhook,并修改Jenkinsfile以做一些有用的事情,例如构建和部署您的应用程序。

翻译自: https://www.javacodegeeks.com/2019/05/creating-jenkinsfile-pipeline.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值