【问题标题】:How to add settings.xml to build process of Jenkins to docker image如何将 settings.xml 添加到 Jenkins 的构建过程到 docker 映像
【发布时间】:2019-07-21 19:26:25
【问题描述】:

我的存储库中有Jenkinsfile

pipeline {
    agent {label 'slavedev'}

    stages {
        stage('Build') {
            agent {
                docker {
                   image 'myimage:latest'
                   }
            }
            steps {
                sh 'mvn -version'

            }
        }
    }
}

Dockerfile 中的myimage:

ROM maven:latest

COPY settings.xml /root/.m2/

当我尝试通过docker run -it myimage:latest /bin/bash 手动启动此图像时,我看到了:

root@9a963055c12f:/tmp# ls -lta /root/.m2/
total 12
-rw-r--r-- 1 root root  129 Jul 21 18:53 copy_reference_file.log
drwxr-xr-x 1 root root   82 Jul 21 18:53 .
-rw-r--r-- 1 root root  327 Jul 21 18:53 settings-docker.xml
drwxr-xr-x 2 root root    6 Jul 21 18:53 repository
drwx------ 1 root root   17 Jul 21 17:58 ..
-rw-rw-r-- 1 root root 2897 Jul 21 17:57 settings.xml

您看,我们在.m2 中有settings.xml。 但是,当我尝试通过下载源代码来执行 Jenkins-job 时,我看到:

     [exec] [DEBUG] Reading global settings from /usr/share/maven/conf/settings.xml
     [exec] [DEBUG] Reading user settings from ?/.m2/settings.xml

而且,我不知道 Docker 容器中有什么。我只看到我的来源列表。

drwxrwxr-x 5 jenkins jenkins    41 Jul 21 17:52 src
-rw-rw-r-- 1 jenkins jenkins  3212 Jul 21 17:52 build.xml
-rw-rw-r-- 1 jenkins jenkins 32014 Jul 21 17:52 pom.xml

并且在本地工作的作业在容器中不起作用。真的,我什么都试过了,请帮忙!我什么都玩了,两晚没睡,但我真的找不到,如何运行这个!
setting.xml 带有私有存储库和此存储库凭据的文件。

【问题讨论】:

    标签: xml maven docker jenkins jenkins-pipeline


    【解决方案1】:

    您可以通过选项-s指定settings.xml

    sh 'mvn -s /root/.m2/settings.xml -version'
    

    您从构建日志中检查 jenkins 使用哪个用户运行容器。如果不是使用root 用户运行,Maven 将不会使用来自/root/.m2 的 settings.xml。

    【讨论】:

      猜你喜欢
      • 2020-01-31
      • 2022-09-30
      • 1970-01-01
      • 2019-11-15
      • 1970-01-01
      • 1970-01-01
      • 2018-09-23
      • 2020-01-21
      • 1970-01-01
      相关资源
      最近更新 更多