Это мой конвейер:
stage('Deploy') {
environment {
MAVEN_HOME = '/usr/share/maven'
JAVA_HOME= '/usr/local/openjdk-8'
}
steps {
rtMavenResolver (
id: 'resolver-unique-id',
serverId: 'my-server-config',
releaseRepo: 'my-repo',
snapshotRepo: 'my-repo'
)
rtMavenDeployer (
id: 'deployer-unique-id',
serverId: 'my-server-config',
releaseRepo: 'my-repo',
snapshotRepo: 'my-repo'
)
rtMavenRun (
pom: 'pom.xml',
goals: 'help:effective-settings',
//goals: 'deploy',
resolverId: 'resolver-unique-id',
deployerId: 'deployer-unique-id'
)
// This works
rtPublishBuildInfo (
serverId: 'my-server-config'
)
У меня настроены кредиты и URL на jenkins (my-server-config). Я знаю, что он настроен правильно, потому что rtPublishBuildInfo () работает и публикуется в артефакте. Пользователь, которым он пользуется, является полным администратором, поэтому никаких проблем с разрешением не должно быть.
Это выполняется в подчиненном контейнере, поэтому мне пришлось вручную настроить среду, чтобы указать местоположения maven и java home, чтобы плагин мог найтиЭто. На нем запущен официальный образ mavenn
Когда я пытаюсь выполнить цель развертывания (подтверждено, что она работает локально с теми же кредитами пользователей), я вижу эту ошибку:
[main] WARNING org.codehaus.plexus.PlexusContainer - Could not transfer metadata com.mycompany.app:my-app:1.0-SNAPSHOT/maven-metadata.xml from/to snapshots (https://my-tenant.jfrog.io/my-tenant/my-repo): Not authorized
Я попытался запустить цель help:effective-settings
ипроверил вывод Дженкинса. Похоже, это не использует мои кредиты? Как этот плагин вообще работает с привязкой к кредитам jenkins, которую я установил в конфиге? Как он передает эти кредиты в mvn?
Effective user-specific configuration settings:
<?xml version="1.0" encoding="UTF-8"?>
<!-- ====================================================================== -->
<!-- -->
<!-- Generated by Maven Help Plugin on 2019-10-18T19:04:34Z -->
<!-- See: http://maven.apache.org/plugins/maven-help-plugin/ -->
<!-- -->
<!-- ====================================================================== -->
<!-- ====================================================================== -->
<!-- -->
<!-- Effective Settings for 'root' on 'mypackagepackage-2zbtg-hsxqv' -->
<!-- -->
<!-- ====================================================================== -->
<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
<localRepository>/root/.m2/repository</localRepository>
<pluginGroups>
<pluginGroup>org.apache.maven.plugins</pluginGroup>
<pluginGroup>org.codehaus.mojo</pluginGroup>
</pluginGroups>
</settings>
Редактировать: теперь я думаю, что плагин полностью сломан, я попытался явно передать ему файл глобальных настроек с правильными кредитами и его все еще ошибка:
rtMavenRun (
pom: 'pom.xml',
//global-settings here is a jenkins secret file with the entire contents of a global settings.xml
goals: '--settings ${global-settings} deploy',
resolverId: 'resolver-unique-id',
deployerId: 'deployer-unique-id'
)
Я вижу эту ошибку:
[main] ERROR org.apache.maven.cli.MavenCli - Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project my-app: Execution default-deploy of goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy failed.: NullPointerException -> [Help 1]
РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ: ОК, поэтому, хотя это работает локально, я попытался установить обновленную версию плагина развертывания в моем pom:
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
И теперь я получаю еще одну ошибку от плагина (это все еще работает локально без проблем):
Caused by: java.io.IOException: Failed to deploy file. Status code: 409 Response message: Artifactory returned the following errors:
The target deployment path 'com/mycompany/app/my-app/1.0-20191018.195756-35/my-app-1.0-20191018.195756-35.pom' does not match the POM's expected path prefix 'com/mycompany/app/my-app/1.0-SNAPSHOT'. Please verify your POM content for correctness and make sure the source path is a valid Maven repository root path. Status code: 40
РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ: Продолжая мою эпическую борьбус этим дерьмовым плагином jfrog я отключил проверки непротиворечивости в локальном репозитории, и он может развернуться, но теперь я понимаю эту ошибку. Это превращает мой pom и превращает 1.0-SNAPSHOT
в 1.0-20191018.195756-35
, почему он это делает и как заставить его не портить мой файл pom?
РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ: Я должен быть идиотом, или документация не очень ясна (возможно, оба). Я использовал цель развертывания, потому что ... я хотел развернуть. Но, видимо, вы не делаете этого с плагином - это имеет смысл для меня сейчас. вы clean
и install
пакета, но оставляете его плагину для его развертывания, чтобы он поместил его в нужное место и прикрепил информацию о сборке. использование install
в качестве цели работает