Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins使用docker构建maven映像无法访问nexus_Maven_Security_Docker_Jenkins_Nexus - Fatal编程技术网

Jenkins使用docker构建maven映像无法访问nexus

Jenkins使用docker构建maven映像无法访问nexus,maven,security,docker,jenkins,nexus,Maven,Security,Docker,Jenkins,Nexus,我正在使用Jenkins管道下载我的代码,并将其构建在官方的maven容器中 pipeline { agent none stages { stage('Back-end build') { agent { docker { image 'maven' label 'master'

我正在使用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' 
                }
            }
        }
    }
这样做之后,我意识到我需要nexus repository配置的settings.xml和settings-security.xml,以便下载它。 然后我做了这个:

  • 我已经创建了另一个Dockerfile,它使用maven文件(来自maven) 并复制必要的文件setting.xml和用于 以前的管道
  • 它引用的是正确的存储库,但无权下载文件
  • 需要添加security-settings.xml才能从我的nexus(maven nexus密码)下载数据,但我无法引用或使用它

    如何在此容器中使用security-settings.xml??Maven文档说我把文件放在$HOME/.m2文件夹中,但它不工作。
    注意。

    尝试使用配置文件提供程序插件,他会将settings.xml从主程序复制到您的工作区中

    stage('Build')
                {
                    steps {
                    configFileProvider(
                            [configFile(fileId: 'your-id-xxx', variable: 'MAVEN_SETTINGS')]) {
                        sh 'mvn -s $MAVEN_SETTINGS clean install -P integration-tests'
                    }
    

    我已经找到了解决方案,只有与root用户在一起时,才会使用设置安全性。 我制作了一个docker文件来创建一个新的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"]
    
    此映像将封装安全配置,但为了能够在Jenkins文件中使用,您需要使用root用户运行容器。 范例

    agent {
         docker { 
            image 'maven'
            label 'master'
            args '-u root'
                }
    

    谢谢你提供的信息,但我找到了解决方案,我现在就解释。