Использование переменных по умолчанию gitlab-ci в docker -compose.yaml - PullRequest
0 голосов
/ 07 апреля 2020

Я хочу пометить изображение docker переменной по умолчанию git для имени ветви CI_COMMIT_BRANCH

Но когда я запускаю код, значение CI_COMMIT_BRANCH становится пустой строкой и, следовательно, docker изображение помечено как _service1 без имени ветви.

.gitlab-ci.yml

Tag Images:
  stage: push images
  script:
    - sudo docker-compose build

docker -compose.yaml

version: '2.1'
services:
  service1:
    build: ./service1
    image: service1:${CI_COMMIT_BRANCH}_service1

Ответы [ 3 ]

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

Глядя на предопределенные_вариабы , я не думаю, что CI_COMMIT_BRANCH - это правильная переменная для использования в вашем сценарии, так как имя ветви фиксации - «Присутствует только при построении ветвей». (Что, я предполагаю, является причиной тега изображения _service1 docker)

Возможно, вы могли бы использовать CI_COMMIT_REF_NAME вместо этого?

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

Решил это, добавив переменную в .env файл динамически

.gitlab-ci.yml

Tag Images:
  stage: push images
  before_script:
    - echo 'BRANCH_NAME='$CI_COMMIT_BRANCH >> .env #This command will create .env if not exists 
  script:
    - sudo docker-compose build

docker -compose.yaml

version: '2.1'
services:
  service1:
    build: ./service1
    image: service1:${BRANCH_NAME}_service1
0 голосов
/ 07 апреля 2020

Передача переменных в docker-compose

Вы можете:

  • передавать переменную с помощью -e

См. Руководство Задать среду переменные

  • или создайте env файл, содержащий объявленные переменные и передайте его имя с --env-file

См. manual

Экспорт переменных в .gitlab-ci.yml

Также вы можете попробовать export переменную в before_script блоке `gitlab-ci.yml ':

before_script:
  - export IMAGE_NAME=service1:${CI_COMMIT_BRANCH}_service1

docker-compose.yml:

version: '2.1'
services:
  service1:
    build: ./service1
    image: ${IMAGE_NAME}
...