首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用缓存加速Gitlab CI的配置?

如何用缓存加速Gitlab CI的配置?
EN

Stack Overflow用户
提问于 2019-09-29 10:12:34
回答 1查看 2.4K关注 0票数 2

--这是我第一次使用gitlab,所以如果有一些关于配置的观察,很高兴听到它们

我在gitalb中为一个laravel项目配置了CI管道,在它中,我只使用PHPUnit运行测试套装:

代码语言:javascript
复制
image: php:7.2

cache:
  paths:
    - vendor/
    - node_modules/

before_script:
  - apt-get update -yqq
  - apt-get install git libzip-dev libcurl4-gnutls-dev libicu-dev libmcrypt-dev libvpx-dev libjpeg-dev libpng-dev libxpm-dev zlib1g-dev libfreetype6-dev libxml2-dev libexpat1-dev libbz2-dev libgmp3-dev libldap2-dev unixodbc-dev libpq-dev libsqlite3-dev libaspell-dev libsnmp-dev libpcre3-dev libtidy-dev -yqq
  - docker-php-ext-install mbstring pdo_mysql curl json intl gd xml zip bz2 opcache bcmath
  - pecl install xdebug
  - docker-php-ext-enable xdebug
  - curl -sS https://getcomposer.org/installer | php
  - php composer.phar check-platform-reqs
  - php composer.phar install
  - cp .env.testing .env
  - php artisan key:generate
  - php artisan config:clear

test:
  script:
    - php vendor/bin/phpunit --coverage-text --colors=never

当触发测试时,持续时间为12分钟、20秒、,有办法使用缓存来加快作业速度吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-29 20:26:42

建立自己的码头形象

在GitLab CI中,可以定义cache:以临时存储项目依赖项。在你的ci.yml中,你已经做到了。项目管道的大部分运行时间都浪费在了apt-get install上。由于要从apt-get install中缓存依赖项安装将很复杂,因此构建自己的坞库映像(其中包括来自apt-get的依赖项以进行测试)会更好。

步骤

编写一个dockerfile

  • build,,将您的对接者映像推到ci.yml

  • commit,中的somewhere

  • replace image: php:7.2,在GitLab

中推动您的更改并运行管道

Dockerfile

代码语言:javascript
复制
FROM php:7.2

RUN set -eux; \
    apt-get update -yqq; \
    apt-get install git libzip-dev libcurl4-gnutls-dev libicu-dev libmcrypt-dev libvpx-dev libjpeg-dev libpng-dev libxpm-dev zlib1g-dev libfreetype6-dev libxml2-dev libexpat1-dev libbz2-dev libgmp3-dev libldap2-dev unixodbc-dev libpq-dev libsqlite3-dev libaspell-dev libsnmp-dev libpcre3-dev libtidy-dev -yqq; \
    docker-php-ext-install mbstring pdo_mysql curl json intl gd xml zip bz2 opcache bcmath; \
    pecl install xdebug; \
    docker-php-ext-enable xdebug

建立,将图像推到某处

代码语言:javascript
复制
docker build --tag image-name:tag-name --file Dockerfile .
docker tag image-name:tag-name registry.example.com/organization/image-name:tag-name
# I assume you've already authenticated by your registry
docker push registry.example.com/organization/image-name:tag-name

更新.gitlab-ci.yml

代码语言:javascript
复制
image: registry.example.com/organization/image-name:tag-name

cache:
  paths:
    - vendor/
    - node_modules/

before_script:
  - curl -sS https://getcomposer.org/installer | php
  - php composer.phar check-platform-reqs
  - php composer.phar install
  - cp .env.testing .env
  - php artisan key:generate
  - php artisan config:clear

test:
  script:
    - php vendor/bin/phpunit --coverage-text --colors=never

最后一步

现在,提交更改并推送到您的GitLab服务器。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58154246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档