回答:
Jenkinsパイプラインリンターとそのコマンドに関するドキュメントを次に示します。コミットする前に検証する必要がありますか?そうでない場合、パイプラインを実行する前にリンティングコマンドを実行するのは本当に簡単で、パスしない場合は失敗します。
以下からのコマンドラインパイプラインリンター:
Jenkinsは、実際に実行する前に、コマンドラインから宣言パイプラインを検証または「リント」できます。これは、Jenkins CLIコマンドを使用するか、適切なパラメーターを使用してHTTP POSTリクエストを行うことで実行できます。SSHインターフェースを使用してリンターを実行することをお勧めします。安全なコマンドラインアクセスのためにJenkinsを適切に構成する方法の詳細については、Jenkins CLIのドキュメントを参照してください。
CLIを介してSSHでリントする
# 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
例
パイプラインリンターの動作の2つの例を以下に示します。この最初の例は
Jenkinsfile
、agent
宣言の一部が欠落しているinvalidを渡した場合のlinterの出力を示しています 。ジェンキンスファイル
pipeline { agent stages { stage ('Initialize') { steps { echo 'Placeholder.' } } } }
無効なJenkinsfileのリンター出力
# 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 } ^
この2番目の例では、
Jenkinsfile
が更新され、欠落any
しているが含まれていますagent
。リンターは、パイプラインが有効であることを報告します。ジェンキンスファイル
pipeline { agent any stages { stage ('Initialize') { steps { echo 'Placeholder.' } } } }
有効なJenkinsfileのリンター出力
ssh -p 8675 localhost declarative-linter < ./Jenkinsfile Jenkinsfile successfully validated.
java -jar jenkins-cli.jar [-s JENKINS_URL] [global options...] command [command options...] [arguments...]