Плагин Hudson не публикует все артефакты в Artifactory - PullRequest
3 голосов
/ 10 февраля 2011

У меня есть небольшая настройка Java-проекта для непрерывной сборки через сервер Hudson.Я хотел бы опубликовать артефакты сборки на сервере Artifactory в качестве шага после сборки, поэтому, естественно, я использую плагин Hudson-Artifactory для облегчения этого.Локальная публикация работает нормально - она ​​публикует два артефакта (оба файла .jar) и разрешенный файл ivy.xml, как и ожидалось.Однако когда я запрашиваю сборку на сервере Hudson, публикуется только один из двух моих артефактов.

Сборка создает следующие артефакты:

ftpSvc.jar
ftpSvc-lib.jar

Мой файл ivy.xml выглядит следующим образомthis:

<?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>

Два артефакта явно вызываются в разделе <publications>.Цель сборки в моем файле build.xml выглядит следующим образом:

<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 извлекает все определенные артефакты из каталога сборки - здесь ничего сложного не происходит.Наконец, цепочка распознавателя в моем файле 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>

Это все довольно обычные вещи, и, как упоминалось выше, локальная публикация работает нормально.Вот пример вывода консоли при сборке через Eclipse:

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 публикуются, как и ожидалось.На моем сервере Hudson я настроил параметры конфигурации 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.

Давайте посмотрим на вывод консоли из последней сборки на моем сервере Hudson.:

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

Дубья 'Ти Эфф !?Опять же, локальная публикация работает нормально, публикуя как jars, так и файл ivy.xml в локальном каталоге / esf / ftpSvc / SNAPSHOT / на сервере Hudson.С другой стороны, плагин Artifactory делает все совершенно неправильно.Он не только не публикует один из двух jar-файлов, но и неправильно переименовывает файл ivy.xml.

Есть ли какие-нибудь эксперты по Hudson / Ivy / Artifactory, которые могут пролить свет на то, что здесь происходит?У меня есть несколько проектов, которые демонстрируют точно такое же поведение.Любая помощь в решении этой проблемы будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 17 февраля 2011

Я получил ту же проблему, заполнил ошибку на JFrog Jira, ошибка была помечена как исправленная сегодня, но, как вы можете видеть в моих комментариях к Jira, я все еще не понимаю это решение.

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

Если у кого-то есть идея, любой вклад будет отличным ...

0 голосов
/ 17 февраля 2011

Эй, я не использовал этот плагин, но я бы попытался удалить черту из имени ftpSvc-lib и / или удалить type="lib" из его элемента artifact, просто чтобы посмотреть, что происходит.

...