GitLab CI: объединить или заменить кеш? - PullRequest
0 голосов
/ 25 февраля 2019

Я использую GitLab CI.

У меня есть 2 задания на этапе сборки, которые по-разному строят мое приложение.2 задания загружают кеш для ветки.Я использую скомпилированные исходные коды для запуска некоторых тестов на стадии тестирования.

build:
  stage: build
  script:
    - ./gradlew build --build-cache --quiet
  cache:
    key: ${CI_COMMIT_REF_SLUG}
    paths:
     - "*/build"

build_with_different_conf:
  stage: build
  script:
    - ./gradlew buildDiff --build-cache --quiet
  cache:
    key: ${CI_COMMIT_REF_SLUG}
    paths:
     - "*/build"

Test:
  stage: test
  script:
    - ./gradlew test --build-cache

В моем примере задание build_with_different_conf занимает больше времени для завершения.

Мой вопрос: последнее окончаниезадание на сборку загрузить кеш и заменить кеш из первого задания на сборку или это объединение файлов с предшествующим заданием?

Спасибо.

1 Ответ

0 голосов
/ 27 февраля 2019

Насколько я понимаю, вы используете глобальный кеш для зависимостей gradle.Чем вы хотите иметь какую-то работу, в кеш заданий.

Я бы сделал это более или менее так.

stages:
  - build
  - test

cache:
  paths:
    - <your_gradle_cache>

build_classes:
  stage: build
  script:
    - ./gradlew build --build-cache --quiet
  artifacts:
    expire_in: 1d
    paths:
      - <your_build_dir>

build_war:
  stage: build
  dependencies:
    - build_classes
  script:
    - ./gradlew buildDiff --build-cache --quiet
  artifacts:
    expire_in: 1w
    paths:
      - <path_to_your_war>

test_classes:
  stage: test
  dependencies:
    - build_war
  script:
    - ./gradlew test --build-cache

test_war:
  stage: test
  dependencies:
    - build_war
  script:
    - test # some kind of test to assure your war is in good condition

В этой конфигурации:

build_classes --[.classes]--> build_war -> [.war]
 |                 |
[.classes]       [.war]
 |                 |
 V                 V
test_classes    test_war

PS.Не забывайте, что вы можете использовать shell (или любую другую ОС вашего бегуна) для отладки, узнайте больше об этом.Вы можете поставить ls -la повсюду.

...