3

我正在尝试使用gradle release-plugin来“发布”我的项目

该插件首先检查我的工作副本是否干净,以便仅发布正确版本的内容。

这在我的本地机器上工作得很好。但是当我在 Jenkins 的工作中尝试同样的事情时,构建失败并抱怨工作场所中的各种东西发生了变化。我决定詹金斯在内部使用了很多东西并将其添加到gitignore

caches/
native/
wrapper/

但它也认为gradlew改变了:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':checkCommitNeeded'.
> You have uncommitted files:
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   M gradlew
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

为什么詹金斯更改该文件我该如何防止?

我认为 Jenkins 工作的以下设置可能是相关的:

  • Checkout/merge to local branch (optional)设置为主。如果没有此设置,发布插件会抱怨不在分支上

  • Clean after checkout当前已选中,但选中/取消选中它没有任何区别

  • Make gradlew executable已检查,至少对我来说听起来像是一个可能的原因,但取消选中它会使构建失败,因为 gradlew 不可执行

4

1 回答 1

7

很老的问题,但为了记录到这里来的任何人,詹金斯在这里没有错,你应该提交 gradlew 并设置可执行位:

# git update-index --chmod=+x gradlew
# git commit

然后,您将不再需要 jenkins 设置来将其设置为可执行,这是导致您的问题的解决方法。

于 2015-11-12T13:41:09.063 回答