diff options
-rw-r--r-- | .gommit.toml | 23 | ||||
-rw-r--r-- | .pipeline.yml | 12 | ||||
-rwxr-xr-x | bin/lint-commits.pl | 39 |
3 files changed, 73 insertions, 1 deletions
diff --git a/.gommit.toml b/.gommit.toml new file mode 100644 index 0000000..eaffd69 --- /dev/null +++ b/.gommit.toml @@ -0,0 +1,23 @@ +[config] +exclude-merge-commits=true +check-summary-length=true +summary-length=50 + +[matchers] +all='^(?:(?:Add|Remove|Update|Enable|Disable) |(?:role\.\w+|profile\.\w+): )[\w ]+\n(?:(?:\n\- .*)+\n)?(?:\nSigned-off-by: \w+ \w+ <.*@.*>)' + +[examples] +summary_variant_one=""" +[Add|Remove|Update|Enable|Disable] this and that +""" + +summary_variant_two=""" +[role.$role|profile.$profile]: this and that +""" + +body_message=""" +- an optional body line +- another optional body line + +Signed-off-by: Max Mandatory <required@example.com> +""" diff --git a/.pipeline.yml b/.pipeline.yml index 1c2352f..cdbafd4 100644 --- a/.pipeline.yml +++ b/.pipeline.yml @@ -3,7 +3,17 @@ skip_clone: true pipeline: - lint: + commit_lint: + image: registry.opensuse.org/home/crameleon/libertacasa/containers/containerfile/libertacasa/pipeline-gommit:latest + secrets: [ci_netrc_username, ci_netrc_password, ci_netrc_machine] + when: + event: [push] + commands: + - git clone --single-branch -b $CI_COMMIT_BRANCH $CI_REPO_LINK ../salt-libertacasa-commit-linting + - cd ../salt-libertacasa-commit-linting + - bin/lint-commits.pl production + + code_lint: image: registry.opensuse.org/home/crameleon/libertacasa/containers/containerfile/libertacasa/pipeline-lint:latest secrets: [ci_netrc_username, ci_netrc_password, ci_netrc_machine] when: diff --git a/bin/lint-commits.pl b/bin/lint-commits.pl new file mode 100755 index 0000000..0b17f94 --- /dev/null +++ b/bin/lint-commits.pl @@ -0,0 +1,39 @@ +#!/usr/bin/perl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +use v5.26; + +my ($branch_main) = @ARGV; + +if(!$branch_main){ + $branch_main = "master" +} + +`git ls-remote origin $branch_main` =~ /([a-f0-9]{40})/; + +my $refHead = `git rev-parse HEAD`; +my $refTail = $1; + +chomp($refHead); +chomp($refTail); + +if ($refHead eq $refTail) { + exit 0; +} + +system "gommit check range $refTail $refHead"; + +if ($? > 0) { + exit 1; +} |