2011-02-09 4 views
3

ハドソンサーバーを介して継続的にビルドする小さなJavaプロジェクトセットアップがあります。ビルド後のアーティファクトをポストビルドステップとしてArtifactoryサーバーに公開したいので、自然に、これを容易にするためにHudson-Artifactoryプラグインを使用しています。ローカルパブリッシュはうまくいくように見えます.2つのアーティファクト(.jarファイルの両方)と解決されたivy.xmlファイルを期待どおりにパブリッシュします。しかし、Hudsonサーバーでビルドをリクエストすると、私の2つのアーティファクトのうち1つだけが公開されます。HudsonプラグインがArtifactoryにすべての成果物を公開していません

ビルドには、次の成果物を作成します。

ftpSvc.jar 
ftpSvc-lib.jar 

マイivy.xmlファイルには、次のようになります。

<?xml version="1.0" encoding="ISO-8859-1"?> 
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"> 

    <info organisation="esf" 
      status="integration" 
      module="ftpSvc" 
      revision="SNAPSHOT" /> 

    <publications> 
     <artifact name="ftpSvc" ext="jar"/> 
     <artifact name="ftpSvc-lib" ext="jar" type="lib" /> 
    </publications> 

    <!--list the dependencies of this project--> 
    <dependencies> 
     <dependency org="commons-net" name="commons-net" rev="1.3.0" /> 
    </dependencies> 
</ivy-module> 

2つのアーチファクトが明確に<publications>セクションでアウトと呼ばれています。 - ここで起こって派手な何も

<target name="publish_local" description="publish artifacts locally"> 
    <echo>organisation: ${ivy.organisation}</echo> 
    <echo>module: ${ivy.module}</echo> 
    <echo>status: ${ivy.status}</echo> 
    <echo>revision: ${ivy.revision}</echo> 
    <echo>local dir: ${ivy.default.ivy.user.dir}</echo> 

    <ivy:publish 
     resolver="local" 
     update="true" 
     verwrite="true" 
     srcivypattern="${bundle.jar.dir}/ivy.xml" 
     artifactspattern="${bundle.jar.dir}/[artifact].[ext]" /> 
</target> 

artifactspatternグラブbuildディレクトリからすべての定義された成果物:私のbuild.xmlファイルでのビルドターゲットは、次のようになります。最後に、私のivysettings.xmlファイル内のリゾルバチェーンは次のようになります(サーバー名は無実を保護するために変更):前述したように

<resolvers> 
    <chain name="main"> 
     <ibiblio name="main" m2compatible="true" root="http://my.server.employer.com:8080/artifactory/repo" /> 

     <filesystem name="local"> 
      <ivy pattern="${ivy.default.ivy.user.dir}/local/[organisation]/[module]/[revision]/ivy-[revision].xml" /> 
      <artifact pattern="${ivy.default.ivy.user.dir}/local/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
     </filesystem> 
    </chain> 
</resolvers> 

それは、微細な作品を公開するローカル全てではなく日常的なものだと。予想通り

publish_local: 
    [echo] organisation: esf 
    [echo] module: ftpSvc 
    [echo] status: integration 
    [echo] revision: SNAPSHOT 
    [echo] local dir: C:\Users\myusername\.ivy2 
[ivy:publish] :: publishing :: esf#ftpSvc 
[ivy:publish] published ftpSvc to C:\Users\myusername\.ivy2/local/esf/ftpSvc/SNAPSHOT/ftpSvc-SNAPSHOT.jar 
[ivy:publish] published ftpSvc-lib to C:\Users\myusername\.ivy2/local/esf/ftpSvc/SNAPSHOT/ftpSvc-lib-SNAPSHOT.jar 
[ivy:publish] published ivy to C:\Users\myusername\.ivy2/local/esf/ftpSvc/SNAPSHOT/ivy-SNAPSHOT.xml 

両方.jarファイルと解決ivy.xmlファイルを公開します:私は、Eclipseによってビルド時にここでコンソール出力でのぞくです。私のハドソンサーバーで、私は以下のようなものを構成しArtifactory構成設定は(再び、いくつかの詳細は、私の本当のスーパーヒーローのアイデンティティを不明瞭に変更されている)持っている:

Artifactoryサーバ:http://my.server.employer.com:8080/artifactory
ターゲットリポジトリ:target-repository
アイビーパターン: [organisation]/[module]/[revision]ivy-[revision].xml
アーティファクトパターン:"[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"

あなたが見ることができるように、アイビーやアーティファクトパターンは私のivysettings.xmlファイルから私の地元のリゾルバのパターンとしてまったく同じです。したがって、Hudsonサーバーでビルドを実行すると、Artifactoryサーバーに同じ成果物が公開されることが予想されます。

はのは、私のハドソンサーバー上の最新のビルドからのコンソール出力を見てみましょう:

publish_local: 
    [echo] organisation: esf 
    [echo] module: ftpSvc 
    [echo] status: integration 
    [echo] revision: SNAPSHOT 
    [echo] local dir: /usr/share/tomcat6/.ivy2 
[ivy:publish] :: publishing :: esf#ftpSvc 
Collecting Module information for module: ftpSvc 
Module location: /usr/share/tomcat6/.hudson/jobs/ftpSvc-ivy/workspace/trunk/out/jars/ftpSvc.jar 
[ivy:publish] published ftpSvc to /usr/share/tomcat6/.ivy2/local/esf/ftpSvc/SNAPSHOT/ftpSvc-SNAPSHOT.jar 
Collecting Module information for module: ftpSvc 
Module location: /usr/share/tomcat6/.hudson/jobs/ftpSvc-ivy/workspace/trunk/out/jars/ftpSvc-lib.jar 
[ivy:publish] published ftpSvc-lib to /usr/share/tomcat6/.ivy2/local/esf/ftpSvc/SNAPSHOT/ftpSvc-lib-SNAPSHOT.jar 
Collecting Module information for module: ftpSvc 
Module location: /tmp/ivy2450884590736960955.xml 
[ivy:publish] published ivy to /usr/share/tomcat6/.ivy2/local/esf/ftpSvc/SNAPSHOT/ivy-SNAPSHOT.xml 
Build finished triggered 
Deploying artifact: http://my.server.employer.com:8080/artifactory/target-repository/esf/ftpSvc/SNAPSHOT/ftpSvc-SNAPSHOT.jar 
Deploying artifact: http://my.server.employer.com:8080/artifactory/target-repository/esf/ftpSvc/SNAPSHOT/ftpSvc-SNAPSHOT.xml 
Deploying build info to: http://my.server.employer.com.com:8080/artifactory/api/build 

ダビャ」ティーEffは!?もう一度、ローカルパブリッシュはうまく動作し、JARファイルとivy.xmlファイルの両方をHudsonサーバーのローカル/ esf/ftpSvc/SNAPSHOT /ディレクトリに公開します。一方、Artifactoryプラグインは、すべてが完全に間違っています。 2つのjarのうちの1つを公開するだけでなく、ivy.xmlファイルの名前を誤って変更します。

ハドソン/アイビー/アーティファクトの専門家がいますが、ここで何が起こっているのかを明らかにすることができますか?私はまったく同じ動作をしている複数のプロジェクトを持っています。この問題を解決するためのあらゆる支援があれば幸いです。

答えて

0

ねえ、私はそのプラグインを使用していないが、私はちょうど何が起こるかを確認するために、名前ftpSvc-libからダッシュを削除、および/またはそのartifact要素からtype="lib"を削除しようとするだろう。

0

私は同じ問題を抱えていましたが、JFrog Jiraのバグを埋めました。このバグは今日解決されたとマークされていますが、Jiraのコメントでわかるように、私はまだこの解決策について混乱しています。

https://issues.jfrog.org/jira/browse/IAP-26?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

誰もがアイデアを持っている場合は、任意の入力は素晴らしいことだ...

関連する問題