我正在尝试使用 Jenkins 执行 Maven 发布。但我有一些问题。 这是我第一次进行 Maven 发布。 Jenkins 从 Git 存储库中拉取我的代码,并将所有 pom 文件更改为正确的版本。我可以在检查 Jenkins 工作区时看到这一点。然而,它似乎并没有将版本更改后的更改推送回 Git 存储库。 Git 使用名为 Gerrit 的代码审查工具,一旦执行 mvn 发布,我就必须批准该工具。
我已经在我的主 POM 中设置了 SCM
<scm><developerConnection>scm:git:ssh://<user>@<IP_Address>:<Port>/<Repo_Name>.git</developerConnection></scm>
我收到错误
无法在项目上执行目标 org.apache.maven.plugins:maven-release-plugin:2.0:prepare (default-cli)
有什么想法吗?
谢谢你的pastebin。
错误
Caused by: org.apache.maven.scm.ScmException: Detecting the current branch failed: fatal: ref HEAD is not a symbolic ref
通常可以通过在 Git 参数的 Checkout/merge to local branch (optional)
部分中将 master
设置为 master
(如果要释放 Advanced...
)来欺骗。
我们正在将代码库从 SVN 迁移到 BitBucket。我们曾经毫无问题地执行 Maven 发布(来自 Jenkins)。我的建议是不要将 maven-release 插件与 git 一起使用。这真是一场噩梦。我们最终手动执行了release:preparerelease:perform应该做的事情。
要求如下:
在迁移的代码库 pom.xml 文件上,我们:
将 SCM 部分更改为:
删除了子模块的 scm 部分。
在 Jenkins 上,我们创建了一个自由式项目:Perform_Maven_Release。
我们的代理是Windows。
SCM:Bitbucket 服务器,签出到特定本地分支:master。
构建步骤都是Windows批处理命令:
git结帐大师
从 pom 版本中删除 -SNAPSHOT:
mvn build-helper:parse-version 版本:set -DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}
将发布工件上传到 libs-release:
mvn --批量模式部署
更新pom文件,为下一个开发周期做准备:
mvn --batch-mode build-helper:parse-version versions:set -DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.nextMinorVersion}-SNAPSHOT
提交并推动:
删除“.git/COMMIT_EDITMSG”
git 添加 pom.xml 子文件夹/pom.xml
git commit -am “提交 pom.xml 文件以用于下一个开发周期。”
git 远程添加源 https://bitbucket.com/repo/repo.git
git push --set-upstream https://USER:PASSW@https://bitbucket.com/repo/repo.git master