【问题标题】:Jenkins triggers jobs without git changesJenkins 无需 git 更改即可触发作业
【发布时间】:2015-03-18 09:39:49
【问题描述】:

我们有一个 jenkins 服务器正在运行,它使用 docker jenkins plugin 在 docker 容器上构建相应的作业:

每个作业每 N 分钟检查一次是否对 git 进行了更改。如果发生任何更改,则会创建一个 docker 容器,并且项目会在该容器上成功构建。最后,构建完成后,docker 容器将关闭。

问题: Jenkins 会在所有 N 分钟内触发一个新的构建对 git 没有任何更改。问题可能是由于 docker 容器不再可用,因此没有可用于检查更改的工作区。

知道如何解决这个问题吗?

编辑:无法从公共网络访问我们的 jenkins 服务器。

编辑:解决方法:创建一个新作业,将项目克隆到 一个工作区(在詹金斯大师上)并触发一些子工作以防万一发生变化。这里的不同之处在于,master 保留了工作空间,因此能够检查差异,而 docker 容器的工作空间在容器关闭后被删除。

【问题讨论】:

    标签: git jenkins docker


    【解决方案1】:

    为什么要每 N 分钟检查一次 git 更改。 最好的事情是让 Jenkins 在每次 git 更改后构建。 1.勾选 poll scm 选项,但不要在 schedule 中输入任何内容。 2.现在进入git仓库文件夹,进入hooks文件夹,在那里你会找到钩子示例,使用post-receive.sample,将其重命名为post-receive,使其成为可执行文件,然后在文件中写入

    #!/bin/bash
    
    curl http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository
    

    然后保存。现在 Jenkins 在每次 Git 更改后构建。

    【讨论】:

    • 不幸的是,我们的服务器无法访问我们的公共网络,因此我们无法从外部触发工作。但是,当然,你是完全正确的。
    • 你可以配置一个动态的ddns地址和类似no-ip的服务并使用端口转发,完全可以作为云服务器使用。
    • 谢谢。但问题是只有 SSH 是公开可用的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    相关资源
    最近更新 更多