Jenkins 使用 docker 构建 maven 镜像无法访问 nexus
Jenkins use docker to build maven image cannot access to nexus
我正在使用 Jenkins 管道下载我的代码并在官方 Maven 容器中构建它
pipeline {
agent none
stages {
stage('Back-end build') {
agent {
docker {
image 'maven'
label 'master'
}
}
steps {
sh 'mvn -f de.vitasystems.qrcode.generator/pom.xml -s /usr/share/maven/ref/settings.xml clean package'
stash includes: 'target/*.war', name: 'app'
}
}
}
}
这样做之后,我意识到我需要 settings.xml 用于 nexus 存储库配置和设置 - security.xml 才能下载它。
然后我这样做了:
- 我创建了另一个使用 maven 的 Dockerfile(来自 maven)
并复制必要的文件 setting.xml 并用于
以前的管道。
- 它指的是正确的存储库,但无权下载文件
添加安全性-settings.xml 是为了能够从我的 nexus 下载数据(maven nexus 密码)但我无法引用或使用它。
如何在此容器中使用安全性-settings.xml?? Maven 文档说我将文件放在 $HOME/.m2 文件夹中,但它不起作用。
问候。
尝试使用配置文件提供者插件,他会将 settings.xml 从 master 复制到您的工作区
stage('Build')
{
steps {
configFileProvider(
[configFile(fileId: 'your-id-xxx', variable: 'MAVEN_SETTINGS')]) {
sh 'mvn -s $MAVEN_SETTINGS clean install -P integration-tests'
}
我已经找到了解决方案,只有在你使用 root 用户时才会使用设置-安全。
我制作了一个 Dockerfile 来创建一个新的 docker 图像,总结:
FROM maven
COPY settings.xml /root/.m2/settings.xml
COPY settings-security.xml root/.m2/settings-security.xml
ENTRYPOINT ["/usr/local/bin/mvn-entrypoint.sh"]
CMD ["mvn"]
此映像将包含安全配置,但为了能够在 jenkinsfile 中使用,您需要 运行 使用 root 用户的容器。
示例
agent {
docker {
image 'maven'
label 'master'
args '-u root'
}
我正在使用 Jenkins 管道下载我的代码并在官方 Maven 容器中构建它
pipeline {
agent none
stages {
stage('Back-end build') {
agent {
docker {
image 'maven'
label 'master'
}
}
steps {
sh 'mvn -f de.vitasystems.qrcode.generator/pom.xml -s /usr/share/maven/ref/settings.xml clean package'
stash includes: 'target/*.war', name: 'app'
}
}
}
}
这样做之后,我意识到我需要 settings.xml 用于 nexus 存储库配置和设置 - security.xml 才能下载它。 然后我这样做了:
- 我创建了另一个使用 maven 的 Dockerfile(来自 maven) 并复制必要的文件 setting.xml 并用于 以前的管道。
- 它指的是正确的存储库,但无权下载文件
添加安全性-settings.xml 是为了能够从我的 nexus 下载数据(maven nexus 密码)但我无法引用或使用它。
如何在此容器中使用安全性-settings.xml?? Maven 文档说我将文件放在 $HOME/.m2 文件夹中,但它不起作用。 问候。
尝试使用配置文件提供者插件,他会将 settings.xml 从 master 复制到您的工作区
stage('Build')
{
steps {
configFileProvider(
[configFile(fileId: 'your-id-xxx', variable: 'MAVEN_SETTINGS')]) {
sh 'mvn -s $MAVEN_SETTINGS clean install -P integration-tests'
}
我已经找到了解决方案,只有在你使用 root 用户时才会使用设置-安全。 我制作了一个 Dockerfile 来创建一个新的 docker 图像,总结:
FROM maven
COPY settings.xml /root/.m2/settings.xml
COPY settings-security.xml root/.m2/settings-security.xml
ENTRYPOINT ["/usr/local/bin/mvn-entrypoint.sh"]
CMD ["mvn"]
此映像将包含安全配置,但为了能够在 jenkinsfile 中使用,您需要 运行 使用 root 用户的容器。 示例
agent {
docker {
image 'maven'
label 'master'
args '-u root'
}