Как вывести список измененных файлов? - PullRequest
0 голосов
/ 20 октября 2018

Я использую для запуска сценариев, определенных в .gitlab-ci.yml всякий раз, когда поднимается PR.

Я хочу получить список измененных файлов со времени последней фиксации.

Вариант использования - запуск специфических для файлов интеграционных тестов в больших кодовых базах.

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Типичный пример использования, который некоторые люди сочтут полезным.Запустите задание при запросе на слияние.В частности, запустите lint для всех файлов, которые изменяются в целевой ветви.

Как предполагает один из ответов, мы можем получить имя целевой ветви через CI_MERGE_REQUEST_TARGET_BRANCH_NAME переменную ( список предопределенных переменных ).Мы можем использовать git diff --name-only origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME, чтобы получить список файлов, которые были изменены.Затем передайте их линтеру через xargs.Пример конфигурации может выглядеть следующим образом.

code_quality:
  only:
    - merge_requests
  script:
    - git diff --name-only origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME | xargs <LINT_COMMAND_FOR_FILE>
0 голосов
/ 20 октября 2018

Если вам не нужно знать пути, но вам просто нужно запускать определенное задание только при изменении определенного файла, тогда используйте конфигурацию only / changes .gitlab-ci.yml,например,

docker build:
  script: docker build -t my-image:$CI_COMMIT_REF_SLUG .
  only:
    changes:
      - Dockerfile
      - docker/scripts/*

В качестве альтернативы, если вам нужно получить пути для измененных сценариев, вы можете использовать CI_COMMIT_BEFORE_SHA и CI_COMMIT_SHA переменные среды Например,

> git diff --name-only $CI_COMMIT_BEFORE_SHA $CI_COMMIT_SHA
src/countries/gb/homemcr.js
src/countries/gb/kinodigital.js
...