GitLab CI ускоряется
Я пытаюсь настроить процесс GitLab CI и нашел его очень запоздалым для начала. Задача может зависнуть в состоянии ожидания на несколько минут. Но главная проблема - очень медленное строительство. У нас есть собственный образ докера PHP (с некоторыми встроенными модулями) и приложение. Развертывание в CI может занять до 5-10 минут.
Как это возможно:
- минимизировать время ожидания? Купить корпоративный аккаунт?
- ускорить сборку и установку изображений?
- кеширование образа докера?
- объединить базовый образ из файла и наш php7?
Хотя есть некоторые ненужные проверки версии и времени, они не являются проблемой - они быстрые, но дают информацию о точной версии и времени выполнения.
.gitlab-ci.yml:
image: "registry.gitlab.com/project/debianphp7:latest"
services:
- mariadb:10.1
variables:
# CI_DEBUG_TRACE: "true" # hard Gitlab CI debug
MYSQL_HOST: mariadb
MYSQL_DATABASE: dbname
MYSQL_ROOT_PASSWORD: "password"
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
MYSQL_CMD: "mysql --user=root --password=$MYSQL_ROOT_PASSWORD --host=$MYSQL_HOST $MYSQL_DATABASE "
before_script:
- apt-get update && apt-get install mysql-client -y
- echo "Load database fixtures"
- mysql -V
- echo $MYSQL_CMD
- echo "SELECT 'OK', NOW(), VERSION();" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mariadb
- echo "SELECT 'OK', NOW(), VERSION();" | $MYSQL_CMD
- (find ./sql/*.sql -type f | while read f; do
echo "Loading " $f;
cat $f | $MYSQL_CMD;
done);
test:
script:
php -d short_open_tag=On src/execute_request_by_cron.php -- request=TestUnitTestRequest
Спасибо.
1 ответ
Что мне неясно, так это то, что вы используете бесплатную хостинговую версию на gitlab.com или собственную версию gitlab. Но в целом вы можете сделать следующие две вещи:
Во-первых, полностью бесплатное обновление: все, что не меняется в вашем коде, лучше всего перенести в предварительно созданный образ. например эту строку:
apt-get update && apt-get install mysql-client -y
Я хотел бы создать образ из вашего исходного изображения, на котором предварительно установлен клиент mysql. Все, что вам нужно, в любом случае бесплатно, GitHub, Docker Hub и...
Затем, предполагая, что вы используете gitlab.com, вы можете либо заплатить за выделенных бегунов, либо принести свои собственные, активировав частных бегунов.