如何从命令行中提取Jenkins管道?

时间:2017-06-22 14:59:48

标签: jenkins jenkins-pipeline

我希望能够在Jenkins管道上执行linting,看起来Groovy linting是不够的。

我该怎么做?

6 个答案:

答案 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

https://jenkins.io/doc/book/pipeline/development/#linter

答案 1 :(得分:4)

没有碎屑的HTTP。

如果您想使用HTTP,而不必使用CRUMB。只需使用-u参数添加您的用户名和密码。将 <用户名> <密码> 替换为用户的用户名和密码。还要检查jenkins服务器的网址是否正确。

 curl --user <username>:<password> -X POST -F "jenkinsfile=<Jenkinsfile" http://localhost:8080/pipeline-model-converter/validate

src

答案 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服务器网址,因为它会检查是否已安装必要的插件等,以使管道正常运行。

Jenkins-CLI

答案 5 :(得分:0)

SSH

使用Jenkins SSH interface来运行linter的方法:

  1. Configure Global Security页中启用SSH服务并分配端口(例如2222)。

  2. 在Jenkins(JENKINS_URL/user/USER/configure)的用户个人资料中添加您的公共SSH密钥。

  3. 通过SSH到Jenkins确认SSH访问并运行:

    ssh -l admin -p 2222 localhost help
    
  4. 在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

POST

使用以下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插件

使用VS Code IDE编辑器,您可以安装Jenkins Pipeline Linter Connector plugin并按照说明进行相应配置,以便它可以通过POST请求将Jenkinsfile发布到Jenkins服务器。