我有一个Jenkins管道脚本,该脚本具有执行由这样的拉取请求触发的2个linters(PyLint和Flake8)的步骤。
pipeline {
agent any
stages {
stage('PR Lint') {
when { branch "PR-*" }
steps {
parallel(
flake8: {
sh "mkdir flake8"
sh "git diff -U0 | tox -r -e flake8 -- --diff - --exit-zero --tee --output-file=flake8/flake8.txt"
archiveArtifacts allowEmptyArchive: true, artifacts: '**/flake8/*.txt'
step([
$class: 'ViolationsToGitHubRecorder',
config: violation_to_github_config
])
},
pylint: {
script{
if( readFile('tox.ini').contains('[testenv:pylint]')){
sh "mkdir pylint"
sh "tox -e pylint -- --errors-only --output-format=parseable > pylint/pylint.txt || true"
archiveArtifacts allowEmptyArchive: true, artifacts: '**/pylint/*.txt'
step([
$class: 'ViolationsToGitHubRecorder',
config: violation_to_github_config
])
}
}
})
我想给开发人员一个选择,可以根据任何本地配置跳过PyLint的执行。如您所见,我当前有一行if(readFile('tox.ini').contains('[testenv:pylint]'))
,但是配置中的此更改将在合并时推送到存储库中,我不希望这样。
有解决方法吗?
答案 0 :(得分:0)
我将添加另一个文件,该文件位于.gitignore
上,因此将不会检入。然后,您可以简单地扩展现有的if
来检查文件是否存在,或扩展您的when
指令。例如:
when {
anyOf {
branch "PR-*"
expression { !fileExists("local") }
}
}