Gitlab CI передает переменную окружения в сборку Docker - PullRequest
0 голосов
/ 30 ноября 2018

Я хочу использовать https://gitlab.com/ric_harvey/nginx-php-fpm в качестве базового образа Gitlab CI с исполнителем докера.Но это изображение имеет много конфигураций, например.WEBROOT.Мне нужно, чтобы этот WEBROOT был установлен на мое собственное значение.Возможно ли запустить его в Gitlab CI?

Я уже пробовал (не будет работать):

  • переменные : определение в gitlab-ci.yml
  • настройка переменной WEBROOT в before_script в gitlab-ci.yml
  • добавление переменной среды WEBROOT в Gitlab UI -> проект -> CI / CD -> переменная среды

Кажется, все слишком поздно, мне нужно отредактировать команду запуска для Docker следующим образом:

docker run -e "WEBROOT=xxx" ...

.

image: richarvey/nginx-php-fpm:1.1.1

variables:
  WEBROOT: "/build/domotron/cloud/www" <- this wont work

before_script:
   ## Install ssh-agent if not already installed, it is required by Docker.
   - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'

   ## Run ssh-agent (inside the build environment)
   - eval $(ssh-agent -s)

   ## Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store
   ## We're using tr to fix line endings which makes ed25519 keys work
   ## without extra base64 encoding.
   ## https://gitlab.com/gitlab-examples/ssh-private-key/issues/1#note_48526556
   - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null

   ## Create the SSH directory and give it the right permissions
   - mkdir -p ~/.ssh
   - chmod 700 ~/.ssh

   ## Setup git
   - git config --global user.email "email"
   - git config --global user.name "User"

   ## Use ssh-keyscan to scan the keys of your private server.
   - ssh-keyscan gitlab.com >> ~/.ssh/known_hosts
   - chmod 644 ~/.ssh/known_hosts
stages:
  - test

Codeception:
  stage: test
  services:
    - name: selenium/standalone-chrome
      alias: chrome
  script:
    - curl -sS https://getcomposer.org/installer | php
    - php composer.phar install --no-interaction
    - php vendor/bin/codecept run

1 Ответ

0 голосов
/ 30 ноября 2018

Насколько вы не можете перегрузить entrypoint для вашего образа компоновщика: https://docs.gitlab.com/runner/executors/docker.html#the-image-keyword

Исполнитель Docker не перезаписывает ВХОД ТОЧКИ образа Docker.

Я предлагаю вам создать свой собственный образ на основе richarvey/nginx-php-fpm:1.1.1 и использовать его для сборки.

Вы можете сделать один шаг в своем конвейере, где вы готовите необходимые инструменты, такие как ваши собственные сборщики:

gitlab-ci.yaml

stages:
  - prepare
  - build
  - ...
prepare-build-dockers:
  stage: prepare
  image: docker:stable
  script:
    - export WEBROOT
    - build -t my-builder Dockerfiles

Dockerfiles / Dockerfile

FROM richarvey/nginx-php-fpm:1.1.1

Кстати, gitlab теперь поддерживает пользовательские реестры докеров,поэтому наличие собственных образов для сборки / тестирования / развертывания является хорошей практикой.

...