Я пытаюсь загрузить артефакт в нексус, используя конвейер Jenkins, в котором общий конвейер заканчивается на последнем этапе. где артефакт не загружается в репозиторий нексуса.
Скажем, пример: http://localhost:8081/nexus/content/repositories/releases это мой существующий репозиторий, и я пытаюсь загрузить в него артефакт. Но когда я запускаю сборку конвейера Jenkins, я вижу, что URL-адрес достигает: http://localhost:8081/nexus/content/repositories/repository/releases. Я совершенно не понимаю, откуда берется «репозиторий» в указанном выше URL.
Я столько раз пытался отредактировать URL-адрес, но все равно получаю ту же проблему
Загрузка артефакта blt-server.war началась ....
GroupId: нуль
ArtifactId: blt-server
Классификатор:
Тип: война
Версия: 0.0.1-SNAPSHOT
Файл: blt-server.war
Репозиторий: релизы
Скачивание: http://localhost:8081/nexus/content/repositories/repository/releases/maven-metadata.xml
Выполнено на 10% (5,5 МБ / 55 МБ).
Выполнено на 20% (11 МБ / 55 МБ).
30% выполнено (17 МБ / 55 МБ).
Выполнено на 40% (22 МБ / 55 МБ).
Выполнено на 50% (28 МБ / 55 МБ).
Выполнено на 60% (33 МБ / 55 МБ).
70% выполнено (39 МБ / 55 МБ).
Выполнено на 80% (44 МБ / 55 МБ).
Завершено на 90% (50 МБ / 55 МБ).
Выполнено на 100% (55 МБ / 55 МБ).
Не удалось развернуть артефакты: не удалось найти артефакт: blt-server: war: 0.0.1-20190906.152523-1 в выпусках (http://localhost:8081/nexus/content/repositories/repository/Release)
Не удалось загрузить файл blt-server.war.
Я ожидаю, что URL-адрес должен быть таким: http://localhost:8081/nexus/content/repositories/releases при загрузке файла войны, но это не так.
Вот мой сценарий конвейера:
pipeline {
agent {
label "master"
}
tools {
maven "Maven-3.5.2"
}
environment {
NEXUS_VERSION = "nexus3"
NEXUS_PROTOCOL = "http"
NEXUS_URL = "localhost:8081/nexus/content/repositories"
NEXUS_REPOSITORIES = "releases"
NEXUS_CREDENTIAL_ID = "SonatypeREMNexus3"
CREDENTIALSID= "********confidential***"
}
stages {
stage("clone bitbucket") {
steps {
checkout(
[
$class: 'GitSCM',
branches: [[name: 'master']],
doGenerateSubmoduleConfigurations: false,
extensions: [
[$class: 'RelativeTargetDirectory', relativeTargetDir: 'build']
],
submoduleCfg: [],
userRemoteConfigs: [
[
credentialsId: '********confidential***',
url: 'ssh://[email protected]:7999/blt/blt-server.git'
]
]
]
)
}
}
stage('Build & Test') {
steps {
script {
withMaven(
options: [artifactsPublisher(disabled: true)],
jdk: 'JAVA-1.8.0_152',
maven: 'Maven-3.5.2') {
sh "mvn clean package -f build/pom.xml"
}
}
}
}
stage("publish to nexus") {
steps {
script {
pom = readMavenPom file: "build/pom.xml";
filesByGlob = findFiles(glob: "build/target/*.${pom.packaging}");
echo "${filesByGlob[0].name} ${filesByGlob[0].path} ${filesByGlob[0].directory} ${filesByGlob[0].length} ${filesByGlob[0].lastModified}"
artifactPath = filesByGlob[0].path;
artifactExists = fileExists artifactPath;
if(artifactExists) {
echo "*** File: ${artifactPath}, group: ${pom.groupId}, packaging: ${pom.packaging}, version: ${pom.version}"
nexusArtifactUploader(
nexusVersion: NEXUS_VERSION,
protocol: NEXUS_PROTOCOL,
nexusUrl: NEXUS_URL,
groupId: pom.groupId,
version: pom.version,
repository: NEXUS_REPOSITORIES,
credentialsId: NEXUS_CREDENTIAL_ID,
artifacts: [
[artifactId: pom.artifactId,
classifier: '',
file: artifactPath,
type: pom.packaging],
[artifactId: pom.artifactId,
classifier: '',
file: "build/pom.xml",
type: "pom"]
]
);
} else {
error "*** File: ${artifactPath}, could not be found";
}
}
}
}
}
}
pom.xml
, либо в~/.m2/settings.xml
в вашем агенте сборки. Если в вашем проекте не используетсяpom.xml
, URL-адрес репозитория может даже быть частью командыmvn deploy
в качестве параметра-Durl
или, если вы используетеnexusArtifactUploader
, его можно указать какnexusUrl
. Много возможностей! - person Dibakar Aditya   schedule 08.09.2019