Jenkinsfilesをオンラインで検証できるツールはありますか?


13

現時点では、Jenkinsfileを編集していて、Jenkinsが問題を報告しない限り、実行させます。このアプローチには多くの時間がかかります。Jenkinsfileをコミットする前に構文を検証することを好みます。この問題を解決するツールはありますか?

gitlab URI、すなわちがあり/ci/lint、gitlabファイルを提出し、チェックボタンをクリックし、UIは、構文が正しいかどうかを示しますすることが可能になるという。

回答:


13

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つの例を以下に示します。この最初の例はJenkinsfileagent宣言の一部が欠落している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 &#125;
   ^

この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...]
030


回答を投稿していただきありがとうございます。オンラインツールもありますか?UIにナビゲートし、jenkinsfileを投稿し、構文の問題があるかどうかを確認できれば素晴らしいと思います。質問を更新しました。
030

@ 030オンラインリンターツールがあるとは思いませんが、引き受けるのは楽しいプロジェクトのように聞こえます:)ジェンキンスファイル。pierre-beitz.eu/2017/01/17/...
PrestonM

このリンクからいくつかのスニペットをこの回答に追加してください。リンクが廃止されると、情報は失われます。
030
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.