# #gitlab-ci #gitlab-pipelines
#gitlab-ci #gitlab-конвейеры
Вопрос:
Мне нужно пропустить задание GitLab CI в моем конвейере, если единственная часть изменений commit/merge request
связана с *.md, eslintrc.json or jsconfig.json
файлами.
Примеры:
- Если эти файлы изменились, но другие, такие как *.js, тоже изменились: задание должно выполняться.
- Если эти файлы вообще не изменены, но другие файлы *.js изменились: задание должно быть выполнено.
- Если README.md и eslintrc.json изменились, и больше ничего не изменилось: задание не должно выполняться.
Я пытался сделать это, но до сих пор не нашел except:changes
ничего rules:when:never
полезного. Как я могу это сделать?
Ответ №1:
Если я правильно вас except:changes
понял, в вашем файле CI должно быть соглашение.
Взгляните на этот пример. Задание выполняется в любом состоянии в случае, если *.md, eslintrc.json и jsconfig.json изменились. В этом случае трубопровод не будет работать. Проверьте этап «Кроме изменений» в приведенном ниже примере.
С другой стороны, вы можете настроить запуск конвейера на случай, если какие-либо файлы js изменились. Проверьте этап * только-изменения* в приведенном ниже примере.
stages: - except-changes - only-changes ignore-file-changes: stage: except-changes script: - echo "Skip running the pipeline if *.md, eslintrc.json and jsconfig.json has any kind of change." except: changes: - "**/*.md" - eslintrc.json - jsconfig.json - README.md pass-the-pipeline: stage: only-changes script: - echo "Run only *.js and Dockerfile files has any kind of change." only: changes: - Dockerfile - "**/*.js"
Комментарии:
1. В вашем примере, если README.md изменено, и файл *.js также изменился, задание не будет выполняться. из-за пункта «кроме». Я спрашиваю, как я мог бы заставить его работать, если это так.
2. Я просто думаю об этом, и на самом деле мне приходит в голову, что в случае, если мы просто запустим конвейер с файлами *.js, проблема будет решена.
README.md
файл и файл *.js меняются, конвейер запускается. Если какие-либо другие файлы, кроме файлов, которые мы установили в конвейере, были изменены, конвейер не будет запущен.3. *файл.js-это просто пример. Задание должно выполняться для всех остальных файлов в репозитории, за исключением тех 3, о которых я упомянул. И их сотни, поэтому я не могу перечислить их все. Отсюда и мой вопрос.