如果仅更改特定文件,则触发jenkins构建

时间:2017-11-07 08:03:29

标签: git github jenkins

我在GIT中拥有自己的代码库。代码库中有5个文件,即

  • File1中
  • 文件2
  • 文件3
  • FILE4
  • File5

我想只在文件2被更改的情况下触发jenkins构建。请注意,在构建被触发后,它应该拉动整个代码库。

我尝试使用poll SCM,但问题是如果存储库中的任何文件发生更改,则会触发构建。我想仅在文件2更改时触发它。

有可能吗?

4 个答案:

答案 0 :(得分:1)

我将如何做到这一点。

  1. 将Jenkins作业配置为Trigger builds remotely
  2. 这将以JENKINS_URL/job/MYJOB/build?token=TOKEN_NAME的形式启用构建触发器URL。您必须自己指定令牌名称。

    1. 在您的repo上配置一个git post-receive hook来调用该触发器。
    2. 钩子的脚本通常在.git/hooks/post-receive下。接收后挂钩在整个过程完成后运行,可用于更新其他服务或通知用户。

      post-receive hook从stdin获取其参数,格式为<oldrev> <newrev> <refname>

      您可以从新的HEAD提交中检索文件列表,如果它包含File2,则只能继续执行下一步。这样的事情(未经测试):

      #!/bin/bash
      while read oldrev newrev refname
      do
          # list of changed files for a commit
          filelist=$(git diff-tree --no-commit-id --name-only -r $newrev)
          if [[ $filelist == *"File2"* ]]; then
              # call the URL according to your build trigger config
          fi
      done
      

      More details on git hooks.

答案 1 :(得分:1)

在Jenkins中配置git checkout时,会有一个按钮来添加其他行为。其中一个选项是Polling ignores commits in certain paths。我还没有真正使用它,但我的理解是,这将做你想要的。包含和排除有一个选项。我相信你会使用包含。

答案 2 :(得分:1)

是的,您需要安装FS trigeer插件,然后才能在jenkins配置中包括和排除

Link Here - FSTrigger Plugin

答案 3 :(得分:0)

我可以使用此插件来完成它,并且它像一个魅力一样工作。

您需要在Jenkins中安装通用Webhook插件插件,并在配置中提供以下值。

变量:更改文件

表达式:$ .commits []。['修饰','添加','已移除'] []

expressionType:JSONPath

在选项下: 文字:$ changed_files

表达式:路径/到/您的/文件

https://github.com/jenkinsci/generic-webhook-trigger-plugin/blob/master/src/test/resources/org/jenkinsci/plugins/gwt/bdd/gitlab/gitlab-push-specific-folder.feature

相关问题