Answers:
这是有关Jenkins管道linter及其命令的一些文档。提交之前是否需要验证?如果没有,那么在管道运行之前运行linting命令真的很简单,如果不通过,则失败。
从命令行管道短绒:
詹金斯可以验证,或“ 棉绒从命令行实际运行它之前”,一个声明管道。可以使用Jenkins CLI命令或通过使用适当的参数发出HTTP POST请求来完成。我们建议使用SSH接口来运行linter。有关如何正确配置Jenkins以进行安全的命令行访问的详细信息,请参见Jenkins CLI文档。
通过SSH通过CLI进行lint
# ssh (Jenkins CLI) # JENKINS_SSHD_PORT=[sshd port on master] # JENKINS_HOSTNAME=[Jenkins master hostname] ssh -p $JENKINS_SSHD_PORT $JENKINS_HOSTNAME declarative-linter < Jenkinsfile
通过HTTP POST使用使用
curl
# curl (REST API) # Assuming "anonymous read access" has been enabled on your Jenkins instance. # JENKINS_URL=[root URL of Jenkins master] # JENKINS_CRUMB is needed if your Jenkins master has CRSF protection enabled as it should JENKINS_CRUMB=`curl "$JENKINS_URL/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,\":\",//crumb)"` curl -X POST -H $JENKINS_CRUMB -F "jenkinsfile=<Jenkinsfile" $JENKINS_URL/pipeline-model-converter/validate
例子
以下是两个正在运行的流水线实例。第一个示例显示了将linter传递给invalid时
Jenkinsfile
,lint的输出,该输出 缺失了agent
声明的一部分。詹金斯档案
pipeline { agent stages { stage ('Initialize') { steps { echo 'Placeholder.' } } } }
无效的Jenkinsfile的Linter输出
# pass a Jenkinsfile that does not contain an "agent" section ssh -p 8675 localhost declarative-linter < ./Jenkinsfile Errors encountered validating Jenkinsfile: WorkflowScript: 2: Not a valid section definition: "agent". Some extra configuration is required. @ line 2, column 3. agent ^ WorkflowScript: 1: Missing required section "agent" @ line 1, column 1. pipeline } ^
在第二个例子中,
Jenkinsfile
已更新,包括失踪any
的agent
。现在,lint报告管道有效。詹金斯档案
pipeline { agent any stages { stage ('Initialize') { steps { echo 'Placeholder.' } } } }
有效的Jenkinsfile的Linter输出
ssh -p 8675 localhost declarative-linter < ./Jenkinsfile Jenkinsfile successfully validated.
java -jar jenkins-cli.jar [-s JENKINS_URL] [global options...] command [command options...] [arguments...]