在gitlab中有一个URI,即
/ci/lint
,它使得可以提交gitlab文件,单击检查按钮,然后UI将指示语法是否正确。是否正确。#1 楼
这是有关Jenkins管道linter及其命令的一些文档。提交之前是否需要验证?如果不是这样,那么在管道运行之前运行linting命令真的很简单,如果不通过,则失败。从命令行管道Linter:
Jenkins可以在实际运行之前从
命令行验证或“清除”声明性管道它。可以使用
Jenkins CLI命令或通过使用适当的
参数发出HTTP POST请求来完成。我们建议使用SSH接口运行
linter。有关如何正确配置Jenkins以进行安全的命令行访问的详细信息,请参见Jenkins CLI文档。
通过CLI使用SSH通过SSH进行Linting
# 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
使用
curl
通过HTTP POST进行Linting # 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
示例
以下是两个正在运行的Pipeline Linter的示例。第一个
示例显示了传递无效的
Jenkinsfile
时,lint的输出,而agent
声明中缺少该部分。Jenkinsfile
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报告管道有效。Jenkinsfile
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] [全局选项...]命令[命令选项...] [参数...]
– 030
17年9月27日在8:34
devops.stackexchange.com/q/2164/210
– 030
17年9月27日在8:50
感谢您发布答案。还有在线工具吗?如果可以导航到用户界面,发布jenkinsfile并检查是否存在语法问题,那就太好了。我已经更新了问题。
– 030
17年9月27日在8:53
@ 030我怀疑是否有一个在线的linter工具,但这听起来像是一个有趣的项目:)要在本地使用linter,您需要使用您的凭据登录到Jenkins服务器,然后“询问” Jenkins以使您的棉绒jenkinsfile。 pierre-beitz.eu/2017/01/17/…
–普雷斯顿·马丁(Preston Martin)
17年9月28日在14:40
您可以从该链接中添加一些片段到此答案。如果不赞成使用该链接,则该信息将消失。
– 030
17-10-3在10:22