我有一个 Jenkins 作业,它使用 Maven (mvn clean install
) 从 github.com 存储库的主分支构建,然后检查 Java 文件中的许可证头和丢失的 NOTICE 文件,如果出现则添加它们必要的(mvn license:format notice:generate
)。有时这会导致更改或添加文件,有时不会。
只要有任何更改(通过许可证插件),我都想将更改推送到 github 存储库。
现在我无法弄清楚如何最好地实现这一目标。我在执行 git 命令的 Maven 许可证插件之后添加了一个 shell 构建步骤:
git add . # Just in case any NOTICE files have been added
git commit -m "Added license headers"
git add .
单独工作,即不会破坏构建,即使没有添加文件。但是,如果根本没有任何更改,git commit
会破坏构建。
我不担心推回 github,因为我相信 Git Publisher 构建后操作可以为我做到这一点。有人可以为我指出正确的 git commit 方向吗?
最佳答案
git diff --quiet && git diff --staged --quiet || git commit -am 'Added license headers'
此命令完全符合要求,“仅在有更改时才提交”,而其他答案中的命令则没有:它们只忽略 git commit
的任何错误。
https://stackoverflow.com/questions/22040113/