1概要

この記事では、https://jenkins.io/[Jenkins]を使用した連続配信の例を通して、パイプラインの使用方法を紹介します。

サンプルプロジェクト用に、シンプルでありながら非常に有用なパイプラインを構築します。

  • コンピレーション

  • 単純な静的解析(コンパイルと並行)

  • ユニットテスト

  • 統合テスト(単体テストと並行)

  • 展開


2 Jenkins

の設定

まず最初に、https://jenkins.io/download/[Jenkins]の最新安定版(この記事を書いている時点で2.73.3)をダウンロードする必要があります。

ファイルがあるフォルダに移動し、

java -jar jenkins.war

コマンドを使用して実行しましょう。初期のユーザー設定なしではJenkinsを使用できないことに注意してください。

初期管理者生成パスワードを使用してJenkinsのロックを解除した後、最初の管理者ユーザのプロファイル情報を入力し、必ずすべての推奨プラグインをインストールする必要があります。

リンク:/uploads/jenkins1-768×485.png%20768w[]

これで、Jenkinsの新しいインストールを使用する準備が整いました。

リンク:/uploads/jenkins2-1024×534.png%201024w[]

Jenkinsのすべての利用可能なバージョンはhttp://mirrors.jenkins.io/war-stable/2.73.1/[ここ]にあります。


3パイプライン

Jenkins 2には

Pipelines

という素晴らしい機能が付属しています。これは、プロジェクトのための継続的な統合環境を定義する必要がある場合に非常に拡張性があります。

  • Pipelineは、コードを使用してJenkinsのステップを定義し、ソフトウェアをデプロイするプロセスを自動化するもう1つの方法です。


ドメイン固有言語(DSL)

を2つの異なる構文で使用します

  • 宣言的パイプライン

  • スクリプトパイプライン

私たちの例では、Groovyで構築されたより命令型のプログラミングモデルに従った

Scripted Pipeline

を使用します。


Pipeline

プラグインのいくつかの特徴を見てみましょう。

  • パイプラインはテキストファイルに書き込まれ、コードとして扱われます。これの意味は

それらはバージョン管理に追加し、後で変更することができます。
** それらはJenkinsサーバの再起動後も残ります

  • オプションでパイプラインを一時停止することができます

  • 作業を並行して実行するなどの複雑な要件をサポートします。

  • Pipelineプラグインは他のものと拡張または統合することもできます。

プラグイン

つまり、Pipelineプロジェクトを設定するということは、達成したいプロセスのいくつかのステップを順番に適用するスクリプトを書くことを意味します。

  • パイプラインの使用を開始するには、簡単で複雑な自動化を構成することができるhttps://wiki.jenkins.io/display/JENKINS/Pipelineプラグイン[Pipeline]プラグインをインストールする必要があります。


https://wiki.jenkins.io/display/JENKINS/Pipeline

Stage View Plugin[パイプラインステージビュー]もオプションで1つ用意できますので、ビルドを実行すると、設定したすべてのステージが表示されます。


4簡単な例

この例では、小さなSpring Bootアプリケーションを使用します。次に、プロジェクトを複製し、それをビルドして複数のテストを実行してからアプリケーションを実行するパイプラインを作成します。




Checkstyle






Static

Analysis

Collector


をインストールしましょう。


https://wiki.jenkins.io/display/JENKINS/JUnit

Plugin[

JUnit

]

プラグインは、それぞれ

Checkstyle

結果の収集、テストレポートの統合分析グラフの作成、および正常に実行されたテストと失敗したテストの説明に役立ちます。

まず、ここでCheckstyleの理由を理解しましょう。これは、プログラマーが広く認められた標準に従って、より優れたJavaコードを作成するのに役立つ開発ツールです。

Static Analysis Collectorは、さまざまな分析出力を収集して結果を組み合わせた傾向グラフに出力するアドオンです。さらに、このプラグインはヘルスレポートを提供し、これらのグループ化された結果に基づいて安定性を構築します。

最後に、

JUnit

プラグインは、ビルド中に生成されたXMLテストレポートを消費し、プロジェクトのテストに関連した詳細で意味のある情報を出力する発行元を提供します。

アプリケーションの

pom.xmlにも

Checkstyle__を設定します。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <version>2.17</version>
</plugin>


5パイプラインスクリプトの作成

まず、新しいJenkinsの仕事を作成する必要があります。このスクリーンショットで説明されているように、OKボタンを押す前にタイプとして

Pipeline

を選択してください。

リンク:/uploads/jenkins3-1024×526.png%201024w[]

次の画面では、

description



triggers

、いくつかの__詳細なプロジェクトオプションなど、Jenkinsの仕事のさまざまなステップの詳細を入力できます。

リンク:/uploads/jenkins4-1024×258.png%201024w[]

[パイプライン]タブをクリックして、この種の仕事の最も重要な部分に飛び込みましょう。

次に、定義として

Pipeline script



を選択し、__Use Groovy Sandboxをチェックします。

これがUnix環境用の作業スクリプトです。

node {
    stage 'Clone the project'
    git 'https://github.com/eugenp/tutorials.git'

    dir('spring-jenkins-pipeline') {
        stage("Compilation and Analysis") {
            parallel 'Compilation': {
                sh "./mvnw clean install -DskipTests"
            }, 'Static Analysis': {
                stage("Checkstyle") {
                    sh "./mvnw checkstyle:checkstyle"

                    step([$class: 'CheckStylePublisher',
                      canRunOnFailed: true,
                      defaultEncoding: '',
                      healthy: '100',
                      pattern: '** ** /target/checkstyle-result.xml',
                      unHealthy: '90',
                      useStableBuildAsReference: true
                   ])
                }
            }
        }

        stage("Tests and Deployment") {
            parallel 'Unit tests': {
                stage("Runing unit tests") {
                    try {
                        sh "./mvnw test -Punit"
                    } catch(err) {
                        step([$class: 'JUnitResultArchiver', testResults:
                          '** ** /target/surefire-reports/TEST-** UnitTest.xml'])
                        throw err
                    }
                   step([$class: 'JUnitResultArchiver', testResults:
                     '** ** /target/surefire-reports/TEST-** UnitTest.xml'])
                }
            }, 'Integration tests': {
                stage("Runing integration tests") {
                    try {
                        sh "./mvnw test -Pintegration"
                    } catch(err) {
                        step([$class: 'JUnitResultArchiver', testResults:
                          '** ** /target/surefire-reports/TEST-'
                            + '** IntegrationTest.xml'])
                        throw err
                    }
                    step([$class: 'JUnitResultArchiver', testResults:
                      '** ** /target/surefire-reports/TEST-'
                        + '** IntegrationTest.xml'])
                }
            }

            stage("Staging") {
                sh "pid=\$(lsof -i:8989 -t); kill -TERM \$pid "
                  + "|| kill -KILL \$pid"
                withEnv(['JENKINS__NODE__COOKIE=dontkill']) {
                    sh 'nohup ./mvnw spring-boot:run -Dserver.port=8989 &'
                }
            }
        }
    }
}

まず、GitHubからリポジトリを複製し、次にディレクトリを私たちのプロジェクトに変更します。これを__spring-jenkins-pipelineと呼びます。

次に、プロジェクトをコンパイルして、並行してチェックスタイル分析を適用します。

次の手順では、単体テストと統合テストを並行して実行してから、アプリをデプロイします。

  • 並列処理は、パイプラインを最適化し、ジョブの実行速度を上げるために使用されます。** Jenkinsでは、長時間かかる独立したアクションを同時に実行することをお勧めします。

たとえば、実際のプロジェクトでは、通常、もっと時間がかかることがある単体テストおよび統合テストが多数あります。

いずれかのテストが失敗した場合、BUILDもFAILEDとマークされ、配置は行われません。

また、パイプラインが最後に到達したときにアプリケーションがすぐにシャットダウンされないように、

JENKINS

NODE

COOKIE

を使用しています。

より一般的なスクリプトが他の異なるシステムで動作するのを見るためには、https://github.com/eugenp/tutorials/blob/master/spring-jenkins-pipeline/scripted-pipeline-unix-nonunix[GitHub repository]を調べてください。


6. 分析レポート

仕事を作成したら、スクリプトを保存し、Jenkinsダッシュボードのプロジェクトホームで[今すぐ購入]をクリックします。

これがビルドの概要です。

リンク:/uploads/jenkins5-1024×516.png%201024w[]

もう少し下に進むと、パイプラインのステージビューが各ステージの結果とともに表示されます。

リンク:/uploads/jenkins6-768×276.png%20768w[]

各出力は、ステージセルの上にマウスを移動して

Logs

ボタンをクリックすると、そのステップで出力されたログメッセージを確認できます。

コード分​​析の詳細も見つかります。右側のメニューの[ビルド履歴]から目的のビルドをクリックし、[チェックスタイルの警告]をクリックします。

こちらをクリックすると、60の優先度の高い警告が表示されます。

リンク:/uploads/jenkins7-1024×530.png%201024w[]

[詳細]タブには、警告を強調し、開発者が警告の原因を理解できるようにするための情報が表示されます。

同様に、[Test Result]リンクをクリックすると、完全なテストレポートにアクセスできます。

com.baeldung

パッケージの結果を見てみましょう。

リンク:/uploads/jenkins8-1024×303.png%201024w[]

ここでは、各テストファイルとその期間とステータスを確認できます。


7. 結論

この記事では、

Pipeline

ジョブを介して、Jenkinsで静的コード分析とテストレポートを実行して表示するための単純な連続配信環境をセットアップしました。

いつものように、この記事のソースコードはhttps://github.com/eugenp/tutorials/tree/master/spring-jenkins-pipeline[over on GitHub]にあります。