CI Artifacts: exclude paths
### Problem to solve Without ability to exclude folders from an artifact, the path to every folder must be explicitly referenced which is difficult to maintain. Example: During my CI build I want to cache my whole build folder but pass only a subset of it as an artifact. ### Intended users * Development Team Lead * Software Developer * DevOps Engineer * Systems Administrator ### Proposal * Allow user to define excluded paths in the `gitlab-ci.yml` file. Something like: ``` build_job: stage: build cache: key: build_cache paths: - build/ script: - mkdir -p build && cd build && cmake .. && make artifacts: paths: - build/ - some/**/directories exclude: - build/dont-include-this-folder/ - some/**/directories/*.txt ``` * When a path has both an `include` and `exclude` specified, both conditions must be satisfied for the file to be included in artifacts, making it inconsequential the order is which the conditions are check. * Globbing is supported (globs and double star globs) since GitLab Runner is using https://github.com/bmatcuk/doublestar library. * Printing of the amount of excluded files based on an exclusion rule is supported: ![runner_artifacts_exclude](/uploads/9f33512e93f6a8a4ac141f3988ca022a/runner_artifacts_exclude.png) ### Links / references ### Availability & Testing * Unit test changes * Feature requires new unit tests * Ensure existing behaviors are not compromised. * End-to-end test change * No end-to-end testing required * package-and-qa required - please trigger this job and it should pass in MR
issue