2025-02-04 02:23:25 +00:00
|
|
|
package com.freeleaps.devops
|
|
|
|
|
|
|
|
|
|
class CommitMessageLinter {
|
|
|
|
|
def steps
|
|
|
|
|
private defaultRule = 'com/freeleaps/devops/builtins/commitlint/default.js'
|
|
|
|
|
|
|
|
|
|
CommitMessageLinter(steps) {
|
|
|
|
|
this.steps = steps
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def lint(configurations) {
|
2025-02-04 03:11:46 +00:00
|
|
|
def rules = ''
|
2025-02-04 04:03:30 +00:00
|
|
|
steps.log.info("Commit Message Linter","Check if there has custom commit lint rules specified...")
|
2025-02-04 02:23:25 +00:00
|
|
|
|
|
|
|
|
if (configurations.commitLintRules != null && !configurations.commitLintRules.isEmpty()) {
|
2025-02-04 04:03:30 +00:00
|
|
|
steps.log.info("Commit Message Linter","Custom commit lint rules found, using custom rules files: ${configurations.commitLintRules}")
|
2025-02-04 02:23:25 +00:00
|
|
|
rules = configurations.commitLintRules
|
|
|
|
|
} else {
|
2025-02-07 07:18:40 +00:00
|
|
|
steps.dir(steps.env.workroot) {
|
2025-02-04 04:03:30 +00:00
|
|
|
steps.log.info("Commit Message Linter","No custom commit lint rules found, using built-in rules at: ${defaultRule}")
|
2025-02-04 03:11:46 +00:00
|
|
|
steps.writeFile file: '.commitlintrc.js', text: steps.libraryResource(defaultRule)
|
2025-02-04 04:03:30 +00:00
|
|
|
steps.log.info("Commit Message Linter","Built-in commit lint rules requires @commitlint/config-angular, ready to install it...")
|
2025-02-04 03:32:42 +00:00
|
|
|
steps.sh "npm install -g @commitlint/config-angular"
|
2025-02-04 03:11:46 +00:00
|
|
|
}
|
2025-02-04 02:23:25 +00:00
|
|
|
rules = '.commitlintrc.js'
|
|
|
|
|
}
|
|
|
|
|
|
2025-02-04 04:03:30 +00:00
|
|
|
steps.log.info("Commit Message Linter","Linting commit messages from HEAD...")
|
2025-02-04 02:23:25 +00:00
|
|
|
|
2025-02-07 07:18:40 +00:00
|
|
|
steps.dir(steps.env.workroot) {
|
2025-02-04 03:15:00 +00:00
|
|
|
// commit lint cli requires a git repository to lint commit messages, so we need make sure the workspace is a trusted git repository
|
2025-02-07 07:18:40 +00:00
|
|
|
steps.sh "git config --global --add safe.directory ${steps.env.workroot}"
|
2025-03-06 09:42:35 +00:00
|
|
|
steps.sh """
|
|
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
|
|
commitlint --verbose -g ${rules} -f HEAD^
|
|
|
|
|
"""
|
2025-02-04 02:29:49 +00:00
|
|
|
}
|
2025-02-04 02:23:25 +00:00
|
|
|
}
|
|
|
|
|
}
|