Развертывание из 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>