2015-12-21 91 views
3

我试图配置詹金斯以下工作流程模式:使用詹金斯和Maven发布WAR文件artifactory的

  1. 构建WAR文件&发布到artifactory的
  2. 部署WAR从Artifactory的文件到DEV &发布到artifactory的 回购为开发
  3. 部署WAR从DEV到QA文件&发布到Artifactory的回购为QA
  4. {QA回归等}

我似乎错过了一些东西。应用程序的组件(jar文件等)似乎在目标发行版/快照目录中很好地部署到Artifactory。然而,尽管詹金斯清楚地标识了工件已成功构建,但最终的WAR工件似乎并未存储在Artifactory中。

我正在使用标准目标:干净安装。 我也试过(没有变化):干净的安装重新打包

我有安装Jenkins的标准Artifactory插件。

我已检查了第一詹金斯招聘以下配置来构建项目并将其发布到artifactory的:

PRE-BUILD & BUILD

  • 丢弃旧的构建(保持5)
  • 复制工件的权限
  • git(具有必要的凭据,可以正常工作)
  • 启用Artifactory发布管理t(所有模块的一个版本)
  • 构建使用POM和“干净”和“安装”选项。

生成后

  • 存档的工件(**/*。战争)
  • 部署文物artifactory的(发布和快照目录存在,似乎做工精细,从加载Artifactory的服务器正常,当我点击刷新)
  • 捕捉&发布构建信息
  • 包含环境变量(只配置了默认值)

还包括可编辑的电子邮件通知后制作步骤。

我可以使用这些相同的选项,他们会成功地将最终的WAR文件部署到Tomcat实例中,而不会出现问题。 Jenkins还根据配置保留WAR文件。但Artifactory似乎存储组件而不是最终的WAR文件。

我一直在玩配置选项,并且空白太久了。任何和所有的帮助表示赞赏。

编辑:这是从构建战争文件时用于“干净安装”目标POM文件snippit。

<build> 
    <defaultGoal>clean install</defaultGoal> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.18.1</version> 
      <configuration> 
       <includes> 
        <include>**/*Tests.java</include> 
        <include>**/*Test.java</include> 
        <include>**/Test*.java</include> 
       </includes> 
       <skipTests>true</skipTests> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>${maven.compiler.plugin.version}</version> 
      <configuration> 
       <source>${java.version}</source> 
       <target>${java.version}</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>${maven.war.plugin.version}</version> 
      <configuration> 
       <failOnMissingWebXml>false</failOnMissingWebXml> 
       <archive> 
        <addMavenDescriptor>false</addMavenDescriptor> 
        <manifestEntries> 
         <Implementation-Version>${project.version}</Implementation-Version> 
         <Implementation-Revision>${git.revision}</Implementation-Revision> 
         <X-Git-Commits-Count>${git.commitsCount}</X-Git-Commits-Count> 
        </manifestEntries> 
       </archive> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-release-plugin</artifactId> 
      <configuration> 
       <autoVersionSubmodules>true</autoVersionSubmodules> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
+0

你在使用Maven war插件构建战争吗?它是否有单独的战争Maven模块?你看到它的构建信息?你见过[项目示例](https://github.com/JFrogDev/project-examples/tree/master/maven-example)吗? –

+0

Maven集成插件和Maven项目插件都已安装,处于活动状态并且处于最新状态。 应用程序生成良好并生成单个war文件:appName.war。该战争文件被复制到Tomcat实例并正常运行,包括QA测试。但是,当发布到Artifactory时,它不会存储war文件,而是存储war文件的组件,如果我希望它执行代码快照而不是artifact快照,那将会很好。 –

+0

我怀疑这个问题与Maven项目有关,所以我询问有关Maven插件的使用(不是Jenkins插件)。它看起来像Artifactory Jenkins插件无法识别Web模块 –

回答

1

看来,战争文件是您的Maven项目的第二个人造物。

你可以看看这里,告诉我们它是否解决了你的问题? Maven deploy secondary file to repository

+0

试图将此作为解决方案,但未能解决我的问题。 –