0

Мы запускаем Дженкинса внутри контейнера докера, используя докер-композицию.Как вводить внешние переменные среды в конфигурацию jenkins и задания на работу с трубопроводом?

Конечная цель состоит в том, чтобы иметь возможность запускать производственные и тестовые среды, которые настраиваются переменными окружения, заданными командой docker-compose.

Определим несколько переменных окружения в файле докер-compose.yml, такие как:

environment: 
     - gitlabrepourl=http://url-of-our-git-repo/repo-name 
     - hosturl=http://jenkins-host-url 

окружающей среды переменные находятся внутри контейнера при запуске оболочки Bash, но у нас есть проблемы, используя их в Дженкинс конфигурации и в нашем сценарии конвейера.

Некоторые примеры:

  • При создании задания трубопровода и выбрать "сценарий трубопроводов от SCM" -> мерзавец -> Repository URL = $ {gitlabrepourl}. Задача конвейера способна клонировать репозиторий, чтобы получить файл Jenkins, но при запуске «checkout scm» он терпит неудачу, потому что $ {gitlabrepourl} не разрешен. (Возможно, ошибка Jenkins?)
  • При попытке использовать переменные окружения в конфигурациях системы Jenkins они не разрешаются во всех местах. например при попытке использовать $ {hosturl} как нашу конфигурацию «Jenkins URL», она не разрешена. или при попытке использовать $ {gitlabrepourl} в нашей конфигурации URL-адреса хоста Gitlab, он не проходит проверку соединения.

Резюме:

  1. Как мы можем использовать переменные окружения в конфигурации Дженкинс, и как мы можем знать, какие поля поддержки, используя переменные окружения?
  2. Как ввести переменные среды, присутствующие в контейнере докера, в сценарий конвейера?
  3. Любой способ, который может помочь нам достичь любой из наших целей, будет высоко оценен.

Спасибо.

ответ

0

Вы можете вводить переменные из некоторого файла, например enter image description here .dockerproperties - файл в вас SCM репо , и если в этом файле есть строка Переменная1 = тест вы можете использовать его в формате $ {Переменная1} Кроме того, если вы хотите использовать некоторую информацию от мерзавца, как тег, или передать идентификатор, вы должны установить плагин https://wiki.jenkins-ci.org/display/JENKINS/Git+Parameter+Plugin

+0

Переменные окружения INJECT не работал для меня по какой-то причине , Я определил его в файле Jenkinsfile по свойствам. –

0

Существует, вероятно, лучший способ, но это, как я сделал это для грузчика:

я создал a .env файл с следующее:

CONFLUENCE_VERSION=6.1.1 
MYSQL_CONNECTOR_VERSION=5.1.41 

Docker-compose автоматически вытащит их в качестве переменных окружения.

Затем я передал их в качестве аргументов в разделе сборки docker-compose.yml:

version: '2' 
services: 
    app: 
    build: 
     context: . 
     args: 
     - CONFLUENCE_VERSION=${CONFLUENCE_VERSION} 
     - MYSQL_CONNECTOR_VERSION=${MYSQL_CONNECTOR_VERSION} 

Read CONFLUENCE_VERSION из .env в Jenkinsfile:

CONF_VER = sh(returnStdout: true, script: 'grep -e "CONFLUENCE_VERSION" .env | awk -F\'=\' \'{print $2}\'').trim() 
Смежные вопросы