ハドソンサーバーを介して継続的にビルドする小さな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ファイルの名前を誤って変更します。
ハドソン/アイビー/アーティファクトの専門家がいますが、ここで何が起こっているのかを明らかにすることができますか?私はまったく同じ動作をしている複数のプロジェクトを持っています。この問題を解決するためのあらゆる支援があれば幸いです。