我正在尝试在 GitLab CI 管道中使用语义发布。我的准备阶段工作正常,但是当我使用除 之外的任何东西时,发布阶段总是失败mvn jar:jar deploy:deploy
,但是当我使用这些命令时,它会部署一个3kb 大的 jar 而不是 10mb 的 jar。所以我只能假设它没有收集依赖项。有WARNING
一条关于没有文件被标记为包含并且 jar 为空的消息。所以我尝试在调用deploy之前打包项目。那没起效。
管道无故失败。它只是表明那条线是罪魁祸首。
我尝试过的命令:
mvn clean install
mvn clean package deploy
mvn jar:jar deploy:deploy
mvn clean deploy:deploy
.. you get the idea.
这是有效的准备部分:
verifyConditions:
- "@semantic-release/changelog"
- "@semantic-release/gitlab"
- "@semantic-release/git"
verifyRelease:
- path: "@semantic-release/exec"
cmd: echo -e "VERSION=${nextRelease.version}\nNEW_RELEASE=true" > RELEASE.env
prepare:
- path: "@semantic-release/exec"
cmd: if [ ! -d ".m2" ]; then mkdir .m2; cd .m2; touch settings.xml; echo $MVN_SETTINGS | base64 -d > 'settings.xml'; cd ..; fi; mvn versions:set -DnewVersion=${nextRelease.version} -B -gs .m2/settings.xml;
- "@semantic-release/changelog"
这是仅适用于 jar:jar deploy:deploy 但不创建正确 jar 的发布部分。
publish:
- "@semantic-release/gitlab"
- path: "@semantic-release/exec"
cmd: if [ ! -d ".m2" ]; then mkdir .m2; cd .m2; touch settings.xml; echo $MVN_SETTINGS | base64 -d > 'settings.xml'; cd ..; fi; mvn versions:set -DnewVersion=${nextRelease.version} -DremoveSnapshot=true clean deploy -B -gs .m2/settings.xml;
我对此非常陌生,我不明白为什么:
1)尝试clean deploy
导致此失败并且jar:jar deploy:deploy
不会 2)我如何获得语义发布来创建一个包含所有依赖项的 jar 以上传到我们的存储库。
我应该注意到 Maven Shade 插件和 Maven Deploy 插件都存在于我的 pom.xml 中。
这是一个较旧的运行,但它们都是这样格式化的,并没有告诉你为什么它失败了。只是它做到了:
stderr: '/bin/sh: line 1: 425 Killed mvn clean deploy -B -gs .m2/settings.xml\n',
failed: true,
signal: null,
cmd: '/bin/sh -c mvn $MAVEN_CLI_OPTS versions:set -DremoveSnapshot; mvn clean deploy -B -gs .m2/settings.xml',
timedOut: false,
killed: false,
pluginName: '@semantic-release/exec' }ERROR: Job failed: command terminated with exit code 1