jenkins mvn版本:准备不提交对pom.xml的更改

nzkunb0c  于 2022-12-22  发布在  Jenkins
关注(0)|答案(9)|浏览(203)

我尝试用Maven发布Jenkins插件(stashNotifier),但遇到了发布插件的问题。

mvn clean release:prepare

运行完成,没有错误,但是在我的本地git仓库中提交修改后的pom.xml失败,尽管它标记了我试图发布1.0.2版本的分支的HEAD,这是我的本地分支在准备发布之前的样子

* df60768 (HEAD, origin/develop, develop) upgraded parent pom to version 1.498
* 792766a added distribution management section to pom.xml and amended readme.md

这是它在

* df60768 (HEAD, tag: stashNotifier-1.0.2, origin/develop, develop) upgraded parent pom to version 1.498
* 792766a added distribution management section to pom.xml and amended readme.md

不幸的是,pom.xml已经包含了下一个开发版本,这反过来又导致了后续的release:perform来发布快照版本。
从maven的命令输出来看,它几乎像是省略了git commit命令:

[INFO] Checking in modified POMs...
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git add -- pom.xml
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git status
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Tagging release with the label stashNotifier-1.0.2...
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git tag -F /var/folders/dr/xxbtyycs1z9dl2_snlj87zrh0000gn/T/maven-scm-678409272.commit stashNotifier-1.0.2
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git push git@github.com:jenkinsci/stashnotifier-plugin.git stashNotifier-1.0.2
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git ls-files
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Transforming 'Stash Notifier'...
[INFO] Not removing release POMs
[INFO] Checking in modified POMs...
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git add -- pom.xml
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git status
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Release preparation complete.

我正在运行maven 3.0.5(没有--dry-run或-DpushChanges = false),下面是我的有效pom的相关(我认为)部分:

[...]

<scm>
   <connection>scm:git:git://github.com/jenkinsci/stashnotifier-plugin.git</connection>
   <developerConnection>scm:git:git@github.com:jenkinsci/stashnotifier-plugin.git</developerConnection>
   <url>https://github.com/jenkinsci/stashnotifier-plugin</url>
</scm>

[...]

<distributionManagement>
   <repository>
      <id>maven.jenkins-ci.org</id>
      <url>http://maven.jenkins-ci.org:8081/content/repositories/releases/</url>
   </repository>
   <snapshotRepository>
      <id>maven.jenkins-ci.org</id>
      <url>http://maven.jenkins-ci.org:8081/content/repositories/snapshots</url>
   </snapshotRepository>
   <site>
     <id>github-pages</id>
     <url>gitsite:git@github.com/jenkinsci/maven-site.git:plugin-parent/stashNotifier</url>
   </site>
</distributionManagement>

[...]

<properties>
   [...]
   <maven-release-plugin.version>2.2.2</maven-release-plugin.version>
   [...]
</properties>

[...]

<build>
   [...]
   <pluginManagement>
      <plugins>
         [...]
         <plugin>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.2.2</version>
         </plugin>
         [...]
   </pluginManagement>

   [...]

   <plugins>
      [...]
      <plugin>
         <artifactId>maven-release-plugin</artifactId>
         <version>2.2.2</version>
         <configuration>
            <goals>deploy</goals>
         </configuration>
      </plugin>
      [...]
   </plugins>
</build>

我哪里做错了?

bpsygsoo

bpsygsoo1#

我通过更新git scm提供者依赖项,而不是发布插件版本,解决了我这边的问题(运行maven 3.0.5):

<build>
  <plugins>
    <plugin>
      <artifactId>maven-release-plugin</artifactId>
      <version>2.4.2</version>
      <dependencies>
        <dependency>
          <groupId>org.apache.maven.scm</groupId>
          <artifactId>maven-scm-provider-gitexe</artifactId>
          <version>1.8.1</version>
        </dependency>
       </dependencies>
      </plugin>
    </plugins>
</build>

git scm 1.8.1版本可以正确地提交git(使用prepare和rollback目标进行测试)。
编辑:根据您的环境,可能需要不同版本的maven-release-plugin和maven-scm-provider-gitexe。更多讨论请参见评论。

ffvjumwh

ffvjumwh2#

我遇到了同样的问题,#richnou的解决方案适合我(升级SCM依赖关系)。此问题上存在创建的问题,请参阅下面的链接。这个问题与新版本的Git有关,其中“git status”返回插件无法解析的本地化消息。这是根本原因。这个问题在git scm中得到了修复(1.8.1版本)通过使用git的--porcelain选项(应该返回易于解析的输出),但是在此修复之后,出现了另一个问题-如果存储库根目录(SCM标记)不是工作目录,release:prepare仍然失败。此问题似乎已在快照版本的Git SCM中得到修复(尚未发布)。这可以通过将scm标记复制到子pom中来解决。
MRELEASE-812
SCM-709
maven-release-plugin-and-git-fix

wrrgggsh

wrrgggsh3#

首先,richnou和vasekt的回答解决了我的问题,我想我会发布这个答案,只是因为比已经提到的更新版本,我认为这将给予一个很好的额外的例子,包括他们。
我在Git 3.3.x上运行maven发行版插件2.3.2时没有指定maven scm依赖项版本,这导致了快照问题。对我来说,我只是升级到了当时maven发行版插件和scm依赖项的最新版本,如下所示:

<plugin>
   <artifactId>maven-release-plugin</artifactId>
   <version>2.5.3</version>
   <dependencies>
      <dependency>
         <groupId>org.apache.maven.scm</groupId>
         <artifactId>maven-scm-provider-gitexe</artifactId>
         <version>1.9.5</version>
      </dependency>
   </dependencies>
</plugin>

这对我来说工作得很好,发布版本正确地上传到发布回购协议,快照也按预期工作。

5m1hhzi4

5m1hhzi44#

你读这篇文章可能是因为上面的解决方案对你不起作用。我遇到了同样的问题,我尝试了这里提到的所有方法。我的版本是:maven-release-plugin 2.5git 1.7.9
对我有效的解决方案是maven-release-plugin降级到版本2.3.2

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <autoVersionSubmodules>true</autoVersionSubmodules>
            </configuration>
        </plugin>
    </plugins>
</build>
a0x5cqrl

a0x5cqrl5#

maven-release-plugin升级到2.5.2有帮助(升级到2.5没有帮助;它对一些人有效,但不是所有人,可能取决于系统上其他较新的软件)。我相信它会自动拉入新的提供商。

7uzetpgm

7uzetpgm6#

我刚刚遇到了同样的问题,从其他的回答和评论中,我认为这很可能是发布插件本身的bug。
在我的例子中,我在一个新的、几乎是空的项目中使用了git插件的2.4版本,结构如下:

my-repo.git/
  module-parent/     # running the release from here
  (module-child-1/)  # except I hadn't created it yet
  (module-child-2/)  # except I hadn't created it yet

(The在解决问题之前,可以在此处查看此项目的源代码:my project with the same problem .)
看看release notes for maven-release-plugin:2.4.1,似乎MRELEASE-830有机会解决这个问题。
我不确定这是否真的 * 是 * 问题所在,但是把我的项目升级到插件的2.4.1版本为我解决了这个问题。希望它也能为你解决这个问题!

z3yyvxxp

z3yyvxxp7#

我在使用cygwin+maven+git时遇到了同样的问题,它没有显示错误,但没有尝试提交pom更改,只是在git status后停止:

[INFO] Checking in modified POMs...
[INFO] Executing: cmd.exe /X /C "git add -- pom.xml"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git status"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Tagging release with the label portal-automation-0.3.9...
[INFO] Executing: cmd.exe /X /C "git tag -F C:\cygwin64\tmp\maven-scm-1212196933.commit portal-automation-0.3.9"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git push git@barrel.mitre.org:org-mitre-caasd/portal-automation.git portal-automation-0.3.9"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git ls-files"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Transforming 'portal-automation'...
[INFO] Not removing release POMs
[INFO] Checking in modified POMs...
[INFO] Executing: cmd.exe /X /C "git add -- pom.xml"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git status"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Release preparation complete.

正如你所看到的,没有错误,只是在检查状态后没有提交。然而,当我从windows命令提示符运行时:

...
[INFO] Executing: cmd.exe /X /C "git add -- pom.xml"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git status"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git commit --verbose -F C:\Users\ltheisen\AppData\Local\Temp\maven-scm-2030091036.commit pom.xml"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git symbolic-ref HEAD"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git push git@barrel.mitre.org:org-mitre-caasd/portal-automation.git master:master"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Release preparation complete.

你可以看到它在检查状态后提交了。不确定这是否也是你的问题,但它对我很有效。

  • 请注意,这意味着您需要安装msysgit*
r7xajy2e

r7xajy2e8#

我在本地使用Git 1.8.x时遇到了类似的问题:
maven-scm插件

$ git add
$ git status

但是没有

$ git commit

使用另一台机器与Git 1.7.x帮助我解决了这个问题。
注意:我尝试使用maven-scm-插件1.8.1或1.9,maven-版本-插件2.4.1或2.4.2。

wrrgggsh

wrrgggsh9#

类似的问题,但我有这个问题,使用Jenkins发布插件和Gitlab:

  • 第一次成功。
  • 第二次就不行了。

我们发现pom.xml的SCM配置中有一个打字错误,所以第一次创建了有打字错误的项目,第二次,Maven访问了过时的项目并抱怨,没有提交更改。

相关问题