1

我试图设置GitLab CI进程,并发现它非常slooooow开始。任务可以在暂停状态下挂断几分钟。但主要问题是建设非常缓慢。我们有一个自定义的PHP docker镜像(内置了一些模块)和应用程序。部署到CI可能需要5-10分钟。GitLab CI加速

怎么可能:

  • 减少暂停时间?购买企业帐户?
  • 加快图像的建立和安装?
  • cache docker image?
  • 从文件和我们的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 

THX。

回答

2

我不清楚的是,如果您在gitlab.com上使用免费托管版本,或者使用gitlab的自托管版本。但总的来说,你可以做以下两件事:

首先完全免费升级: 所有不改变你的代码的东西最好转移到预先构建的图像。例如这条线:

apt-get update && apt-get install mysql-client -y

我会创造从您的源图像的图像,它具有MySQL客户端预装。所有你需要的东西都是免费的,GitHub,Docker Hub和...

然后假设你正在使用gitlab.com,你可以支付专用跑步者或通过激活私人跑步者来支付自己的费用。

+0

现在我正在使用免费的托管版本。我想要构建和测试整个工作流程。然后做出决定是否值得在其上进行迁移。 感谢您的建议。我会尽量简化过程。我还可以做些什么? –

+0

好吧,然后尝试建立更好的码头图像,预安装一切。我一直在使用一个自己托管的版本,显然你没有任何类型的等待时间,如果CI runner和GitLab在本地网络上,构建速度会更快。 – mohamnag

+0

如果您拥有自己的跑步者私人机器,那么码头图像将被缓存,您将有更快的时间开始测试。 – mohamnag