Как ускорить процесс сборки Gitlab CI (не работает) - PullRequest
0 голосов
/ 16 июня 2019

Я искал в Интернете, чтобы выяснить, как ускорить время сборки CI, я реализовал эти методы, но каждый раз, когда я нажимаю код на gitlab, он перестраивает изображение с нуля (докер) без использования кеша, даже если ничего не изменилось.

EDIT Вот как выглядит мой файл .gitlab-ci.yml:

# ### Define variables
#
variables:
 OBJECTS_DIRECTORY: 'obj'    
 NUGET_PACKAGES_DIRECTORY: '.nuget'
 SOURCE_CODE_PATH: 'src/'
 REACT_PATH: ClientApp
 DOCKER_DRIVER: overlay2           

# ### Define stage list
stages:
 - build
 - push
 - test
 - deploy

cache:
 # Per-stage and per-branch caching.
  key: "$CI_JOB_STAGE-$CI_COMMIT_REF_SLUG" 
  paths:
    - '$SOURCE_CODE_PATH$REACT_PATH/node_modules/'

build:
  image: docker:18.09
  stage: build
  services:
    - docker:18.09-dind
  before_script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - docker pull $CI_REGISTRY_IMAGE:latest || true
  script:
    - >
      docker build
      --pull
      --cache-from $CI_REGISTRY_IMAGE:latest -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
    - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA

push latest:
  image: docker:18.09
  stage: push
  services:
    - docker:18.09-dind
  variables:
    GIT_STRATEGY: none
  only:
    - master
  before_script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  script:
    - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
    - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:latest
    - docker push $CI_REGISTRY_IMAGE:latest

Вот как выглядит мой Dockerfile:

FROM microsoft/dotnet:2.2-sdk AS build-env
WORKDIR /source

RUN curl -sL https://deb.nodesource.com/setup_11.x |  bash - \
    && apt-get install -y nodejs


COPY ./src/*.csproj .
RUN dotnet restore

COPY ./src/ ./

RUN dotnet publish "./Spa.csproj" --output "./dist" --configuration Release --no-restore

FROM microsoft/dotnet:2.2-aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /source/dist .

RUN apt-get update \
    && apt-get install -y apt-transport-https lsb-release ca-certificates \
    && curl -S https://packages.sury.org/php/apt.gpg --output /etc/apt/trusted.gpg.d/php.gpg \
    && echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list \
    && apt-get update

RUN apt-get install -y php7.2-cli

COPY deployment.ini /app
ADD ./src/appsettings.Sample.json /app/appsettings.json

EXPOSE 80
ENTRYPOINT ["dotnet", "Spa.dll", "--environment=Production"]

Все выглядит правильно, поэтому я понятия не имею, почему он не использует кеш на этапе сборки

...