如果有变化,如何让Jenkins git提交?

时间:2014-02-26 11:29:53

标签: git build jenkins bash

我有一个Jenkins作业,它使用Maven(mvn clean install)从github.com存储库的主分支构建,然后检查Java文件中的许可证头和缺少的NOTICE文件,并在必要时添加它们({{1 }})。有时这会导致更改或添加文件,有时不会。

每当有任何更改(通过许可插件)时,我想将更改推送到github repo。

现在我无法弄清楚如何最好地实现这一目标。我在Maven许可插件之后添加了一个shell构建步骤,我执行git命令:

mvn license:format notice:generate

git add . # Just in case any NOTICE files have been added git commit -m "Added license headers" 单独工作,即即使没有添加任何文件也不会破坏构建。但是,如果根本没有任何更改,git add .会中断构建。

我并不关心回到github,因为我相信Git Publisher的构建后动作可以为我做这件事。有人可以指点我正确的git提交方向吗?

3 个答案:

答案 0 :(得分:31)

git diff --quiet && git diff --staged --quiet || git commit -am 'Added license headers'

此命令完全按照要求执行,只有在有更改的情况下才会执行git,而其他答案中的命令则不会:它们只会忽略git commit的任何错误。

答案 1 :(得分:1)

要阻止构建在shell构建步骤中中断,在任何一点返回退出代码1,例如,当尝试进行git提交时,尽管没有任何提交,您可以简单地包装相应的命令回声。

echo `git add -A && git commit -m "Added license headers"`

现在,是否有未跟踪的文件要添加到索引中,以及工作树是脏还是干净,echo将返回退出代码0,因为会有一些字符串为{{1 }}编

答案 2 :(得分:-1)

最好使用

  git commit --allow-empty -a -m "Added license headers"
相关问题