freeleaps-ops/first-class-pipeline/src/com/freeleaps/devops/CommitMessageLinter.groovy

34 lines
1.4 KiB
Groovy
Raw Normal View History

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) {
def rules = ''
steps.log.info "<Commit Message Linter> Check if there has custom commit lint rules specified..."
if (configurations.commitLintRules != null && !configurations.commitLintRules.isEmpty()) {
steps.log.info "<Commit Message Linter> Custom commit lint rules found, using custom rules files: ${configurations.commitLintRules}"
rules = configurations.commitLintRules
} else {
steps.dir(steps.env.workspace) {
steps.log.info "<Commit Message Linter> No custom commit lint rules found, using built-in rules at: ${defaultRule}"
steps.writeFile file: '.commitlintrc.js', text: steps.libraryResource(defaultRule)
}
rules = '.commitlintrc.js'
}
steps.log.info "<Commit Message Linter> Linting commit messages from HEAD..."
steps.dir(steps.env.workspace) {
// commit lint cli requires a git repository to lint commit messages, so we need make sure the workspace is a trusted git repository
steps.sh "git config --global --add safe.directory ${steps.env.WORKSPACE}/${steps.env.workspace}"
steps.sh "commitlint --verbose -g ${rules} -f HEAD^"
}
}
}