【问题标题】:Usage of maven-release-plugin in Jenkins with integrity (MKS) as Source Code Management在具有完整性(MKS)的 Jenkins 中使用 maven-release-plugin 作为源代码管理
【发布时间】:2014-02-14 16:45:45
【问题描述】:

请注意本题末尾的第二个问题!

我在使用 Jenkins、maven-release-plugin 和完整性(使用 MKS)作为源代码管理 (scm) 时遇到了一些问题。

好吧,我尝试通过 Jenkins 将我的项目从 MKS 发布到 Sonartype Nexus。如果我在 maven-release-plugin 中使用“部署”作为 maven 目标,一切都很好,并且发布部署正确,但它在 Nexus 中保存为快照。

为了避免这个快照问题,我决定使用带有 release:perform 的 maven-release-plugin。它应该将版本号更改为没有快照的版本(例如:1.0.0),发布它并在发布完成后再次将快照添加到版本号。版本也增加了(如 1.0.1-SNAPSHOT)。

但如果我使用“release:prepare”或“release:perform”作为 maven 目标,输出会告诉我:

[ERROR] No SCM URL was provided to perform the release from                 
[INFO] ------------------------------------------------------------------------     
[INFO] BUILD FAILURE     
[INFO] ------------------------------------------------------------------------     
[INFO] Total time: 24.405s     
[INFO] Finished at: Fri Feb 14 11:56:40 CET 2014     
[INFO] Final Memory: 10M/245M     
[INFO] ------------------------------------------------------------------------     
Waiting for Jenkins to finish collecting data     
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.0:perform    (default-cli) on project javatests-test04: No SCM URL was provided to perform the release from -> [Help 1]     
[ERROR]      
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.     
[ERROR] Re-run Maven using the -X switch to enable full debug logging.     
[ERROR]      
[ERROR] For more information about the errors and possible solutions, please read the following articles:  
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

在我现在搜索了很长时间但没有找到我需要的答案后,我想出了打开这个新问题的想法。

我尝试过这样的事情:

向 pom.xml 添加信息,但不确定 maven 是否意识到这一点(不知道对我来说正确的 URL 是什么,或者我什至有一个所以我没有更改它)

原创来自this site:

<scm>
   <connection>scm:git:git@github.com:user/project.git</connection>
   <url>scm:git:git@github.com:user/project.git</url>
   <developerConnection>scm:git:git@github.com:user/project.git</developerConnection>
</scm>

我的版本:

<scm>
   <connection>scm:integrity|myUser@myServer:7001|#p=d:/MKS/Tools/Tools.pj#s=Tests/Tests.pj#javatests-test04 </connection>
   <url>scm:git:git@github.com:user/project.git</url>
   <developerConnection>scm:integrity|myUser@myServer:7001|#p=d:/MKS/Tools/Tools.pj#s=Tests/Tests.pj#javatests-test04</developerConnection>
</scm>

我再次尝试更改了 maven 目标(与 -Dproject.scm.developerConnerction 相同):

release:perform -DconnectionUrl=scm:integrity:myUser@myMksServer:7001|#p=d:/MKS/Tools/Tools.pj#s=Tests/Tests.pj#javatests-test04

but it leads to a new error:     
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-release-plugin:2.0:prepare
(default-cli) on project javatests-test04: The provider given in the
SCM URL could not be found: No such provider: 'integrity'.

事实上,“部署”作为 maven 目标可以正常工作,我确信这不是错误的项目或 Sonartype Nexus 路径的错。

谁能帮助我和/或告诉我我的 Maven 目标应该是什么样的? 我在 pom 中有改变吗?在主 pom 中?我想要发布声明工作......

【问题讨论】:

    标签: maven jenkins maven-release-plugin integrity mks-integrity


    【解决方案1】:

    我找到了一个对我有用的解决方法: 该插件会生成一些环境变量。其中大部分是自动给出和创建的,其中一个(IS_M2RELEASEBUILD)可在选项点“maven release build”的高级设置中编辑

    我的解决方案:

    1.) 检查构建环境中的“Maven release build”,以便稍后访问一些值。

    2.) 创建一个“条件步骤(单个)”作为前置步骤和后置步骤

    2.1) 两者都应该有一个带有标记的布尔条件:${ENV,var="IS_M2RELEASEBUILD"}

    2.2) 两者都应该将“调用 Maven 目标”作为构建步骤。

    前置步骤的目标:*versions:set -DnewVersion=${MVN_RELEASE_VERSION}*

    发布步骤的目标:*versions:set -DnewVersion=${MVN_DEV_VERSION}*

    此变量的值与您在开始发布构建时输入的值相同。

    3.) 作为“正常”构建步骤,我简单地用“编译”调用 maven 目标

    4.) 添加构建后操作:完整性 - CM Checkin 以及您的 MKS 项目的路径以及此处可能需要的其他选项。

    5.) 完成! (不要忘记在 pom.xml 中设置 Distribution 选项,告诉 Jenkins 和 Maven 应该将发布结果保存在哪里)

    【讨论】:

      【解决方案2】:

      编辑:我找到了解决方法!用解决方案查看答案!

      好的,我已经朝着正确的方向迈出了第一步! 只需要在我的项目的 pom.xml 中添加对当前使用的 maven-release-plugin 的引用:

      <build>
          <plugins>
              <plugin>
                  <artifactId>maven-release-plugin</artifactId>
                  <version>2.4.1</version>
                  <configuration>
                      <checkModificationExcludes>
                          <checkModificationExclude>**/*pom.xml*</checkModificationExclude>
                          <checkModificationExclude>**/*.log</checkModificationExclude>
                          <checkModificationExclude>**/*.jar</checkModificationExclude>
                          <checkModificationExclude>**/target/**</checkModificationExclude>
                      </checkModificationExcludes>
                  </configuration>
              </plugin>
          </plugins>
      </build>
      

      但是: 现在我还有一些其他问题: 控制台告诉我登录 MKS 失败。被调用用户具有读写权限,项目路径和 Jenkins 服务器设置正确。我还确保 MKS 文件夹位于我的路径环境变量中。仅供参考:当然,我使用的是具有真实密码和真实服务器的真实用户,而不是“myUser”、“myPassword”或“myServer” 我很确定我为我的 scm(开发人员)连接设置使用了正确的配置,因为在发布之前,我成功地将项目内容从 MKS 下载到我的服务器!这里没有错误...

      Usage of "scm:validate" tells me:
      [INFO] --- maven-scm-plugin:1.9:validate (default-cli) @ javatests-test04 ---
      
      [INFO] MKS Integrity API Version: 4.10
      [INFO] connectionUrl scm connection string is valid.
      [INFO] MKS Integrity API Version: 4.10
      [INFO] project.scm.connection scm connection string is valid.
      [INFO] MKS Integrity API Version: 4.10
      [INFO] project.scm.developerConnection scm connection string is valid.
      

      连接失败的原因可能是什么?

      控制台:

      [...some more console output...]
      Executing Maven:  -B -f (pathToProject)\workspace\pom.xml -DdevelopmentVersion=0.0.5-SNAPSHOT -DreleaseVersion=0.0.4 -Dusername=myUser -Dresume=false compile release:prepare -Dpassword=**********
      
      [INFO] Scanning for projects...
      [INFO]                                                                         
      [INFO] ------------------------------------------------------------------------
      [INFO] Building my test project 0.0.4-SNAPSHOT
      [INFO] ------------------------------------------------------------------------
      [INFO] 
      [INFO] --- maven-release-plugin:2.4.1:prepare (default-cli) @ javatests-test04 ---
      [some other debug infos]
      [DEBUG] -- end configuration --
      [DEBUG] User/Password information supplied: myUser/myPasswort
      [DEBUG] Host/Port information supplied: myServer:7001
      [INFO] MKS Integrity API Version: 4.10
      [DEBUG] Configuration Path: #p=d:/MKS/Tools/Tools.pj#s=Tests/Tests.pj#javatests-test04
      [INFO] Verifying that there are no local modifications...
      [INFO]   ignoring changes on: **\release.properties, **\pom.xml.next, **\*pom.xml*, **\*.jar, **\pom.xml.releaseBackup, **\pom.xml.backup, **\pom.xml.branch, **\target\**, **\pom.xml.tag, **\*.log
      [DEBUG] User/Password information supplied: myUser/myPasswort
      [DEBUG] Host/Port information supplied: myServer:7001
      [INFO] MKS Integrity API Version: 4.10
      [DEBUG] Configuration Path: #p=d:/MKS/Tools/Tools.pj#s=Tests/Tests.pj#javatests-test04
      [INFO] Attempting to connect with the MKS Integrity Server
      [INFO] Creating session for myUser/***********
      [INFO] Attempting to establish connection using myUser@myServer:7001
      com.mks.connect.BlimpException: Attempt to launch MKS Integrity Client Timed out. To solve this please try the following:
      - Verify that the user you are logged in as has read and write permissions to the Integrity Client install directory.
      - Make sure the Integrity Client install directory is the very first entry in the path.
          at com.mks.connect.ClientCmdRunnerImpl.icInitialize(Native Method)
          at com.mks.connect.ClientCmdRunnerImpl.checkIntegrityClientForLaunch(ClientCmdRunnerImpl.java:71)
          at com.mks.connect.ClientCmdRunnerImpl.executePreCondition(ClientCmdRunnerImpl.java:95)
          at com.mks.connect.AbstractCmdRunner.executeCommand(AbstractCmdRunner.java:235)
          at com.mks.connect.AbstractCmdRunner.execute(AbstractCmdRunner.java:394)
          at org.apache.maven.scm.provider.integrity.APISession.connect(APISession.java:134)
          at org.apache.maven.scm.provider.integrity.command.login.IntegrityLoginCommand.executeLoginCommand(IntegrityLoginCommand.java:66)
          at org.apache.maven.scm.command.login.AbstractLoginCommand.executeCommand(AbstractLoginCommand.java:45)
          at org.apache.maven.scm.command.AbstractCommand.execute(AbstractCommand.java:59)
          at org.apache.maven.scm.provider.integrity.IntegrityScmProvider.login(IntegrityScmProvider.java:182)
          at org.apache.maven.scm.provider.AbstractScmProvider.login(AbstractScmProvider.java:742)
          at org.apache.maven.scm.provider.AbstractScmProvider.status(AbstractScmProvider.java:784)
          at org.apache.maven.shared.release.phase.ScmCheckModificationsPhase.execute(ScmCheckModificationsPhase.java:126)
          at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:234)
          at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:169)
          at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:146)
          at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:107)
          at org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:277)
          at org.apache.maven.plugins.release.PrepareReleaseMojo.execute(PrepareReleaseMojo.java:232)
          at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
          at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
          at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
          at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
          at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
          at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
          at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
          at org.jvnet.hudson.maven3.launcher.Maven3Launcher.main(Maven3Launcher.java:117)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke(Method.java:606)
          at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:329)
          at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:239)
          at org.jvnet.hudson.maven3.agent.Maven3Main.launch(Maven3Main.java:178)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke(Method.java:606)
          at hudson.maven.Maven3Builder.call(Maven3Builder.java:134)
          at hudson.maven.Maven3Builder.call(Maven3Builder.java:69)
          at hudson.remoting.UserRequest.perform(UserRequest.java:118)
          at hudson.remoting.UserRequest.perform(UserRequest.java:48)
          at hudson.remoting.Request$2.run(Request.java:328)
          at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
          at java.util.concurrent.FutureTask.run(FutureTask.java:262)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
          at java.lang.Thread.run(Thread.java:744)
      [ERROR] MKS API Exception: Attempt to launch MKS Integrity Client Timed out. To solve this please try the following:
      - Verify that the user you are logged in as has read and write permissions to the Integrity Client install directory.
      - Make sure the Integrity Client install directory is the very first entry in the path.
      [INFO]  exited with return code -1
      [INFO] ------------------------------------------------------------------------
      [INFO] BUILD FAILURE
      [INFO] ------------------------------------------------------------------------
      [INFO] Total time: 39.694s
      [INFO] Finished at: Mon Feb 17 16:49:07 CET 2014
      [INFO] Final Memory: 17M/310M
      [INFO] ------------------------------------------------------------------------
      Waiting for Jenkins to finish collecting data
      [ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.4.1:prepare (default-cli) on project javatests-test04: An error occurred during the status check process: Can't login.
      [ERROR] Exit Code: -1
      [ERROR] -> [Help 1]
      org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.4.1:prepare (default-cli) on project javatests-test04: An error occurred during the status check process: Can't login.
      Exit Code: -1
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
          at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
          at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
          at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
          at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
          at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
          at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
          at org.jvnet.hudson.maven3.launcher.Maven3Launcher.main(Maven3Launcher.java:117)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke(Method.java:606)
          at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:329)
          at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:239)
          at org.jvnet.hudson.maven3.agent.Maven3Main.launch(Maven3Main.java:178)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke(Method.java:606)
          at hudson.maven.Maven3Builder.call(Maven3Builder.java:134)
          at hudson.maven.Maven3Builder.call(Maven3Builder.java:69)
          at hudson.remoting.UserRequest.perform(UserRequest.java:118)
          at hudson.remoting.UserRequest.perform(UserRequest.java:48)
          at hudson.remoting.Request$2.run(Request.java:328)
          at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
          at java.util.concurrent.FutureTask.run(FutureTask.java:262)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
          at java.lang.Thread.run(Thread.java:744)
      Caused by: org.apache.maven.plugin.MojoExecutionException: An error occurred during the status check process: Can't login.
      Exit Code: -1
          at org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:281)
          at org.apache.maven.plugins.release.PrepareReleaseMojo.execute(PrepareReleaseMojo.java:232)
          at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
          ... 30 more
      Caused by: org.apache.maven.shared.release.ReleaseExecutionException: An error occurred during the status check process: Can't login.
      Exit Code: -1
          at org.apache.maven.shared.release.phase.ScmCheckModificationsPhase.execute(ScmCheckModificationsPhase.java:131)
          at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:234)
          at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:169)
          at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:146)
          at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:107)
          at org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:277)
          ... 33 more
      Caused by: org.apache.maven.scm.ScmException: Can't login.
      Exit Code: -1
          at org.apache.maven.scm.provider.AbstractScmProvider.login(AbstractScmProvider.java:746)
          at org.apache.maven.scm.provider.AbstractScmProvider.status(AbstractScmProvider.java:784)
          at org.apache.maven.shared.release.phase.ScmCheckModificationsPhase.execute(ScmCheckModificationsPhase.java:126)
          ... 38 more
      [ERROR] 
      [ERROR] Re-run Maven using the -X switch to enable full debug logging.
      [JENKINS] Archiving pathToWorkspace\workspace\pom.xml to pathToRepository/javatests-test04/0.0.4-SNAPSHOT/javatests-test04-0.0.4-SNAPSHOT.pom
      [ERROR] 
      [ERROR] For more information about the errors and possible solutions, please read the following articles:
      [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
      channel stopped
      Finished: FAILURE
      

      感谢您的帮助! :)

      【讨论】:

        猜你喜欢
        • 2016-02-16
        • 2012-08-28
        • 2013-07-05
        • 1970-01-01
        • 2021-04-25
        • 1970-01-01
        • 1970-01-01
        • 2014-03-10
        • 1970-01-01
        相关资源
        最近更新 更多