我希望能够在Jenkins管道上执行linting,看起来Groovy linting是不够的。
我该怎么做?
答案 0 :(得分:4)
看起来有两个选项用于linting管道脚本,一个通过领导者的cli或http POST调用:
使用SSH通过CLI进行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
答案 1 :(得分:4)
如果您想使用HTTP,而不必使用CRUMB。只需使用-u参数添加您的用户名和密码。将 <用户名> 和 <密码> 替换为用户的用户名和密码。还要检查jenkins服务器的网址是否正确。
curl --user <username>:<password> -X POST -F "jenkinsfile=<Jenkinsfile" http://localhost:8080/pipeline-model-converter/validate
答案 2 :(得分:3)
除了kongkoro的答案之外,还有一个工具可以使Jenkins文件发挥作用。
https://www.npmjs.com/package/jflint
# install
$ npm install -g
# usage
# JENKINS_URL=[root URL of Jenkins master]
$ jflint -j $JENKINS_URL Jenkinsfile
jflint的作用与the official document中的curl相同,jflint也只适用于声明性管道。但它更容易使用。
答案 3 :(得分:3)
如果由于某种原因您不能使用Jenkins服务器的linter,则可以使用npm-groovy-lint(与声明性或脚本化Jenkinsfile一起使用,以及groovy共享库)
https://github.com/nvuillam/npm-groovy-lint
npm install -g npm-groovy-lint
npm-groovy-lint // in the root directory of the Jenkinsfile
答案 4 :(得分:0)
如果您要整理可以脚本或声明性的Jenkins管道。
那么最好的解决方案是使用'microsoft.management/managementgroups/write',
'microsoft.management/managementgroups/delete',
'microsoft.management/managementgroups/subscriptions/write'
进行掉毛。
我尽了最大的努力,但这确实是最好,最方便的使用方式。
要求为-Java
下载cli jar
jenkins-cli.jar
棉绒詹金斯管道脚本-脚本或声明性
$ curl -O https://<jenkins-server>/jnlpJars/jenkins-cli.jar
始终最好使用jenkins服务器网址,因为它会检查是否已安装必要的插件等,以使管道正常运行。
答案 5 :(得分:0)
使用Jenkins SSH interface来运行linter的方法:
在Configure Global Security页中启用SSH服务并分配端口(例如2222
)。
在Jenkins(JENKINS_URL/user/USER/configure
)的用户个人资料中添加您的公共SSH密钥。
通过SSH到Jenkins确认SSH访问并运行:
ssh -l admin -p 2222 localhost help
在Jenkins框上使用以下命令来验证本地Jenkinsfile
:
ssh -l admin -p 2222 localhost declarative-linter < ./Jenkinsfile
有关更多详细信息,请阅读Pipeline Development Tools。
此外,为简化起见,您可以将以下部分添加到~/.ssh/config
中:
Host jenkins-cli
HostName localhost
User admin
Port 2222
ProxyJump jenkins-host.example.com
然后运行:ssh jenkins-cli declarative-linter < ./Jenkinsfile
。
您还可以考虑创建以下外壳程序别名(例如,启动文件中的别名):
alias jenkins-lint="ssh jenkins-cli declarative-linter < ./Jenkinsfile"
然后运行:jenkins-lint
。
使用以下Jenkinsfile
命令验证curl
:
curl --user username:password -X POST -F "jenkinsfile=<Jenkinsfile" http://jenkins-url:8080/pipeline-model-converter/validate
有关详细信息,请阅读How to validate a Jenkinsfile页。
使用VS Code IDE编辑器,您可以安装Jenkins Pipeline Linter Connector plugin并按照说明进行相应配置,以便它可以通过POST请求将Jenkinsfile
发布到Jenkins服务器。