Развертывание из Maven в JFrog Artifactory СО свойствами

У меня есть задание Jenkins, которое имеет входные переменные REPOSITORY и BRANCH и использует плагин Invoke Maven для целей верхнего уровня. Это делает maven чистым развертыванием в артефакте jfrog.

Но есть проблема: я не знаю, как отправить свойства развернутым артефактам. Я имею в виду свойства, подобные этим, которые мы имеем в JFROG ARTIFACTORY:

Я знаю, что есть плагин Maven3-Artifactory Integration, который выполняет развертывание со свойствами, но в моем случае он не работает, потому что моя работа должна быть общей для разных артефактных серверов.

Я также нашел параметр Свойства в Invoke целей Maven верхнего уровня. но ничего не делает (список свойств развернутых артефактов еще пуст)

Как я могу отправить свойства в JFROG ARTIFACTORY с помощью maven Invoke плагин Maven target верхнего уровня? Заранее спасибо.

2 ответа

Решение

Учитывая, что у вас есть требование динамического управления целевым репозиторием для развертывания, у вас есть несколько вариантов:

1) Используйте поддержку конвейера плагина Artifactory Jenkins. Конвейерная DSL позволяет вам динамически управлять репозиториями, которые вы используете для разрешения / развертывания Maven, например:

def rtMaven = Artifactory.newMavenBuild() 
rtMaven.resolver server: server, releaseRepo: 'libs-release', snapshotRepo: 'libs-snapshot' 
rtMaven.deployer server: server, releaseRepo: 'libs-release-local', snapshotRepo: 'libs-snapshot-local'

И добавьте свойства:

rtMaven.deployer.addProperty("status", "in-qa").addProperty("compatibility", "1", "2", "3")

2) Используйте плагин Artifactory Maven, который позволяет вам определять разрешение / развертывание и свойства из pom.xml. Вы также можете использовать переменные среды или системные свойства для их динамического определения. Например:

<build>
    <plugins>
        ...
        <plugin>
            <groupId>org.jfrog.buildinfo</groupId>
            <artifactId>artifactory-maven-plugin</artifactId>
            <version>2.6.1</version>
            <inherited>false</inherited>
            <executions>
                <execution>
                    <id>build-info</id>
                    <goals>
                        <goal>publish</goal>
                    </goals>
                    <configuration>
                        <deployProperties>
                            <build.name>{{BUILD_NAME}}</build.name>
                        </deployProperties>
                        <publisher>
                            <contextUrl>https://artifactory.mycompany.com</contextUrl>
                            <username>deployer</username>
                            <password>******</password>
                            <repoKey>{{RELEASE_REPO}}</repoKey>
                            <snapshotRepoKey>{{SNAPSHOT_REPO}}</snapshotRepoKey>
                        </publisher>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

3) Как уже ответил @viniciusartur, вы можете использовать параметры матрицы в URL хранилища для определения свойств

Вы можете назначить JFrog Artifactory Properties при развертывании, используя Matrix Properties.

Вам просто нужно добавить ';property1=value1;property2=value2' в URL вашего дистрибутива, например так:

<distributionManagement>
    <repository>
        <id>myrepo</id>
        <url>http://localhost:8080/artifactory/libs-release-local;property1=value1;property2=value2</url>
    </repository>
</distributionManagement>
Другие вопросы по тегам