как настроить контейнер Jenkins запустить контейнер Maven для использования прокси - PullRequest
1 голос
/ 05 апреля 2020

все, как я пытаюсь использовать Jenkins для сборки-*- 1008 * -app-with-maven (https://jenkins.io/doc/tutorials/build-a-java-app-with-maven/). У меня проблема, моя среда доступа к сети должна использовать частный прокси. Мой Jenkins запускается в контейнере, и когда я использую приведенный ниже конвейер, контейнер Jenkins будет извлекать образ maven и запуск maven в контейнере, но поскольку в среде есть прокси, контейнер maven не настроен для использования прокси, поэтому maven не может загрузить зависимостей.

Кто-нибудь может мне помочь с тем, как разрешить контейнеру maven использовать прокси? спасибо

pipeline {
    agent {
        docker {
            image 'maven:3-alpine' 
            args '-v /root/.m2:/root/.m2' 
        }
    }
    stages {
        stage('Build') { 
            steps {
                sh 'mvn -B -DskipTests clean package' 
            }
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

Во-первых: чтобы использовать корпоративный прокси с Maven, вам необходимо настроить его в settings.xml (см. Настройка прокси в документации Maven).

Во-вторых: в конвейер работает в контейнере, вы можете сделать это разными способами. Вот некоторые из них:

  1. Учитывая, что вы отображаете /root/.m2:/root/.m2, вы можете просто поместить settings.xml в /root/.m2. Это предполагает, что вы выполняете Jenkins как root, что я настоятельно рекомендую в производственной среде по соображениям безопасности.

    Если вы выполняете Jenkins как другой пользователь, вам необходимо соответствующим образом адаптировать отображение тома.

  2. Отобразите файл settings.xml как том в вашем контейнере и скажите Maven, чтобы он использовался, например:

pipeline {
  agent {
    docker {
      image 'maven:3-alpine' 
      args '-v /root/.m2:/root/.m2 -v /path/to/settings.xml:/my/settings.xml:ro' 
    }
  }
  stages {
    stage('Build') { 
      steps {
        sh 'mvn -s /my/settings.xml -B -DskipTests clean package' 
      }
    }
  }
}
Сохраните файл settings.xml в качестве учетных данных в Jenkins и используйте его с withCredentials, что может иметь смысл, если ваши настройки. xml содержит пароли:
  ...
  steps {
    withCredentials([
      file(credentialsId: 'maven-settings', variable: 'MAVEN_SETTINGS')
    ]) {
      sh 'mvn -s $MAVEN_SETTINGS -B -DskipTests clean package'
    }
  }
  ...
Вместо использования официального изображения Maven maven:3-alpine создайте пользовательское изображение, содержащее файл settings.xml, и используйте его в своем конвейере.
0 голосов
/ 05 апреля 2020

Вы пытались использовать withEnv для установки proxy_host переменной среды?

Также взгляните на:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...