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, вы можете либо заплатить за выделенных бегунов, либо принести свои собственные, активировав частных бегунов.

Другие вопросы по тегам