Skip to content
Snippets Groups Projects
Unverified Commit dfdd9fc7 authored by Alexander Fisher's avatar Alexander Fisher
Browse files

Add support for GitLab Code Quality reports

This commit adds support for enabling [GitLab Code Quality](https://docs.gitlab.com/ee/ci/testing/code_quality.html)
reports. I've not enabled it by default (in `config_defaults.yml`), but
this is something that perhaps we could do at a later date following any
user feedback.

Meanwhile, the following module `.sync.yml` content can be used to turn
it on.

```yaml
.gitlab-ci.yml:
  custom:
    ruby_versions:
      '2.7.2':
        code_quality: true
```
parent 3f1215d4
No related branches found
No related tags found
No related merge requests found
...@@ -82,7 +82,7 @@ Gitlab CI uses a .gitlab-ci.yml file in the root of your repository tell Gitlab ...@@ -82,7 +82,7 @@ Gitlab CI uses a .gitlab-ci.yml file in the root of your repository tell Gitlab
| cache | If this setting exists, it expects a single sub-key called `paths`. `paths` is an array of paths that will be cached for each subsequent job. Defaults to `['vendor/bundle']`| | cache | If this setting exists, it expects a single sub-key called `paths`. `paths` is an array of paths that will be cached for each subsequent job. Defaults to `['vendor/bundle']`|
| tags | If this setting exists, it expects an array of tags that will be added to each job. Not set by default.| | tags | If this setting exists, it expects an array of tags that will be added to each job. Not set by default.|
| bundler\_args |Define any arguments you want to pass through to bundler. The default is `--without system_tests --path vendor/bundle --jobs $(nproc)` which avoids installing unnecessary gems while installing them to the `vendor/bundler.| | bundler\_args |Define any arguments you want to pass through to bundler. The default is `--without system_tests --path vendor/bundle --jobs $(nproc)` which avoids installing unnecessary gems while installing them to the `vendor/bundler.|
| ruby_versions |Define a list of ruby_versions to test against. Each version can have a series of sub-keys that are options. `checks` is the rake command(s) to run during the job. `puppet_version` sets the PUPPET_GEM_VERSION environment variable. `allow_failure` is an array of `checks` where you want to allow failures. `tags` is an array of Gitlab CI Runner tags. | | ruby_versions |Define a list of ruby_versions to test against. Each version can have a series of sub-keys that are options. `checks` is the rake command(s) to run during the job. `puppet_version` sets the PUPPET_GEM_VERSION environment variable. `allow_failure` is an array of `checks` where you want to allow failures. `tags` is an array of Gitlab CI Runner tags. `code_quality` is a boolean that when enabled adds [Code Quality](https://docs.gitlab.com/ee/ci/testing/code_quality.html) reports to jobs that run puppet-lint (version [3.2.0](https://github.com/puppetlabs/puppet-lint/blob/main/CHANGELOG.md#v320---2023-02-28) onwards). |
| ruby_versions\\{job}\\**except/only**|Basic `except`/`only` is an hash of `checks` with array of references of conditions for the `checks`:<br><br><pre>ruby_versions:<br>&nbsp;&nbsp;2.4.9:<br>&nbsp;&nbsp;&nbsp;&nbsp;except:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unit:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- tags<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- main</pre><br><br>Advanced `except`/`only` is an hash of `checks` with hash using 4 keywords `'variables', 'refs', 'changes', 'kubernetes'` each with it's own array of references or conditions for the `checks`:<br><br><pre>ruby_versions:<br>&nbsp;&nbsp;2.4.9:<br>&nbsp;&nbsp;&nbsp;&nbsp;except:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unit:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;refs:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- tags<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- main<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;variables:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- $CI_COMMIT_MESSAGE =~ /\[skip[ _-]tests?\]/i</pre> https://docs.gitlab.com/ce/ci/yaml/README.html#onlyexcept-advanced | | ruby_versions\\{job}\\**except/only**|Basic `except`/`only` is an hash of `checks` with array of references of conditions for the `checks`:<br><br><pre>ruby_versions:<br>&nbsp;&nbsp;2.4.9:<br>&nbsp;&nbsp;&nbsp;&nbsp;except:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unit:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- tags<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- main</pre><br><br>Advanced `except`/`only` is an hash of `checks` with hash using 4 keywords `'variables', 'refs', 'changes', 'kubernetes'` each with it's own array of references or conditions for the `checks`:<br><br><pre>ruby_versions:<br>&nbsp;&nbsp;2.4.9:<br>&nbsp;&nbsp;&nbsp;&nbsp;except:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unit:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;refs:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- tags<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- main<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;variables:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- $CI_COMMIT_MESSAGE =~ /\[skip[ _-]tests?\]/i</pre> https://docs.gitlab.com/ce/ci/yaml/README.html#onlyexcept-advanced |
| custom_jobs |Define custom Gitlab CI jobs that will be executed. It is recommended that you use this option if you need customized Gitlab CI jobs. Please see the [.gitlab-ci.yml](https://docs.gitlab.com/ce/ci/yaml/README.html) docs for specifics.| | custom_jobs |Define custom Gitlab CI jobs that will be executed. It is recommended that you use this option if you need customized Gitlab CI jobs. Please see the [.gitlab-ci.yml](https://docs.gitlab.com/ce/ci/yaml/README.html) docs for specifics.|
| rubygems_mirror | Use a custom rubygems mirror url | | rubygems_mirror | Use a custom rubygems mirror url |
......
...@@ -112,11 +112,20 @@ default: ...@@ -112,11 +112,20 @@ default:
<% if options['rubygems_version'] -%> <% if options['rubygems_version'] -%>
RUBYGEMS_VERSION: '<%= options['rubygems_version'] -%>' RUBYGEMS_VERSION: '<%= options['rubygems_version'] -%>'
<% end -%> <% end -%>
<% if options['code_quality'] and check =~ %r{\blint\b}-%>
CODECLIMATE_REPORT_FILE: 'gl-code-quality-report.json'
<% end -%>
<% if configs.has_key?('global_variables') -%> <% if configs.has_key?('global_variables') -%>
<% configs['global_variables'].each do |key, value| -%> <% configs['global_variables'].each do |key, value| -%>
<%= key %>: '<%= value %>' <%= key %>: '<%= value %>'
<% end -%> <% end -%>
<% end -%> <% end -%>
<% if options['code_quality'] and check =~ %r{\blint\b}-%>
artifacts:
reports:
codequality: gl-code-quality-report.json
expire_in: 1 week
<% end -%>
<% if options['allow_failure'] -%> <% if options['allow_failure'] -%>
<% if options['allow_failure'].include?(check) -%> <% if options['allow_failure'].include?(check) -%>
allow_failure: true allow_failure: true
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment