Изучаю непрерывное интегрирование. Пытаюсь разобраться в базовых процессах и никак у меня в голове не сложится картина.
Дано:
1. Сервер где установлен GitLab, там лежит проект на PHP. Файл index.php с содержанием
<?php phpinfo();
.
2. Виртуальная машина с CentOS 7.
2.1. На ней установил docer.
bash
docker -v
Docker version 19.03.7, build 7141c199a2
2.2 Установил GitLab runner в виде отдельного контейнера по
инструкции.
bash
docker run -d --name gitlab-runner --restart always \
-v /docker/gitlab-runner/volumes/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
2.3 Зарегистрировал runner в GitLab.
bash
docker run --rm -t -i -v /docker/gitlab-runner/volumes/config:/etc/gitlab-runner gitlab/gitlab-runner register
Получился такой конфиг.
config.toml
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "xxxRunner"
url = "http://_xxx_/gitlab/"
token = "_xxx_"
executor = "docker"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.docker]
tls_verify = false
image = "alpine:latest"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
2.4 Стартую runner. В GitLab вижу его активным.
3. В проекте создал тестовый .gitlab-ci.yml файл:
.gitlab-ci.yml
job1:
script:
- php -v
job2:
script:
- php -v
После пуша и запуска pipelines, job падает с ошибкой. Наверно, потому что в контейнере runner нет php.
job
Running with gitlab-runner 12.8.0 (1b659122)
on _xxx_Runner 50b311ce
Using Docker executor with image alpine:latest ...
Pulling docker image alpine:latest ...
Using docker image sha256:e7d92cdc71feacf90708cb59182d0df1b911f8ae022d29e8e95d75ca6a99776a for alpine:latest ...
Running on runner-50b311ce-project-8-concurrent-0 via 2333629aca2f...
Fetching changes...
Reinitialized existing Git repository in /builds/gitlab/_xxx_/_xxx_/.git/
From _xxx_
2c41219..48aa22e master -> origin/master
Checking out 48aa22eb as master...
Skipping Git submodules setup
/bin/sh: eval: line 56: php: not found
$ php -v
ERROR: Job failed: exit code 127
На этой стадии застрял, не пойму что дальше.
Что нужно:
Контейнер с apache+php7 (не знаю какой выбрать). Внутри контейнера проект на php.
После пуша, нужно чтобы проект выкачался из гита, образ и контейнер пересобрались с обновлениями из master ветки.
Вопросы:
Правильно ли устанавливать gitlab runner в контейнер?
Правильная ли конфигурация gitlab runner?
Команды из .gitlab-ci.yml выполняются внутри контейнера раннера или хоста докера?
Если команды выполняются внутри runner контейнера, как мне выкачать проект из гита и положить его на хосте?
Как мне проект передать в другой контейнер с php, через volumes?
Подскажите, пожалуйста, простой рецепт, как настроить деплой на php проекте.