s.d*_*s.d 11 git bash build jenkins
我有一个Jenkins作业,它使用Maven(mvn clean install
)从github.com存储库的主分支构建,然后检查Java文件中的许可证头和缺少的NOTICE文件,并在必要时添加它们(mvn license:format notice:generate
).有时这会导致更改或添加文件,有时不会.
每当有已作出(由许可证插件)的任何改变我要推更改到GitHub库.
现在我无法弄清楚如何最好地实现这一目标.我在Maven许可插件之后添加了一个shell构建步骤,执行git命令:
git add . # Just in case any NOTICE files have been added
git commit -m "Added license headers"
Run Code Online (Sandbox Code Playgroud)
git add .
单独工作,即不会破坏构建,即使没有添加任何文件.但是,git commit
如果根本没有任何更改,请中断构建.
我不担心回到github,因为我相信Git Publisher的后期构建操作可以为我做这件事.有人可以指点我正确的git提交方向吗?
kim*_*ula 39
git diff --quiet && git diff --staged --quiet || git commit -am 'Added license headers'
Run Code Online (Sandbox Code Playgroud)
这个命令完全按照要求执行,'git仅在有更改时提交',而其他答案中的命令则不执行:它们只忽略任何错误git commit
.
您也可以使用OR运算符捕获错误代码:
git commit -m "Added license headers" || echo "No changes to commit"
Run Code Online (Sandbox Code Playgroud)
要阻止构建在 shell 构建步骤上中断并1
在任何时候返回退出代码,例如,当尝试进行 git 提交时,尽管没有任何内容可提交,您可以简单地将相应的命令包装到 echo 中。
echo `git add -A && git commit -m "Added license headers"`
Run Code Online (Sandbox Code Playgroud)
现在,无论是否有未跟踪的文件要添加到索引中,以及工作树是脏的还是干净的,echo 都会返回退出代码0
,因为会有一些字符串要echo
编辑。