Jenkinsには、継続的インテグレーション/継続的デリバリー(CI/CD)をサポートする組み込み機能があることをご存知ですか?プロジェクトにJenkins CI CDパイプラインを実装することで、ソフトウェア開発プロセスを大幅に改善できます。
Jenkinsは、現在までで最も人気のあるDevOps自動化ツールの1つです。そして、Jenkins CI CDパイプラインを始めたいと考えているなら、正しい場所に来たところです。
読み続け、このチュートリアルでは、GitHubと共にJenkins CI CDパイプラインを設定する方法を学びます。
前提条件
このチュートリアルでは、以下の要件を満たすことを前提としています。
すでにJenkinsがインストールされている必要があります。このチュートリアルの例では、Windows 10 20H2コンピューター上でJenkins v2.319.1を使用しています。
- あなたのJenkinsウェブコンソールはインターネット経由でアクセス可能でなければなりません。
- A Github account to which you’ll connect with the Jenkins CI CD pipeline.
- Git SCM。このチュートリアルでは、Windows用の最新の(2.34.1)64ビットバージョンのGitを使用しています。
GitHubリポジトリの準備
このチュートリアルでは、Jenkins CI CDパイプラインをGitHubリポジトリに統合します。空のプロジェクトを作成する代わりに、既存のリポジトリをフォークする方が迅速に開始できます。
1. まず、ブラウザを開き、GitHubアカウントにログインします。
2. 次に、例のリポジトリURL(Microsoft Connect 2016のMyShuttle2アプリケーション)に移動します。リポジトリページに移動したら、ページの右上にあるForkボタンをクリックします。

フォークプロセスが完了するのを待ちます。最終的に、GitHubアカウントに“username/MyShuttle2”という名前のリポジトリが作成され、フルアクセス権が与えられます。
3. そして、リポジトリにJenkinsfileという名前の新しいファイルを追加します。 JenkinsfileはJenkinsパイプラインの定義を含むテキストファイルです。このファイルはソースコードリポジトリ内にある必要があります。
リポジトリページでファイルの追加 —> 新しいファイルの作成をクリックします。

4. Jenkinsfileという名前の新しいファイルを入力します。次に、以下のコードをコピーしてJenkinsfileに貼り付けます。
- pipelineという用語は、継続的なデリバリーのためにコードで書かれた一連の命令です。
- A stage block contains a series of steps in a pipeline, visualizing the Jenkins pipeline process.
- A step is a single task that executes a specific process at a defined time. A pipeline contains a series of steps.
このJenkinsfileは、パイプラインスクリプトの基本的な例です。本番では、パイプラインスクリプトはより複雑で、1つまたはすべての段階で複数のアクションを含みます。
コードを書いた後、ファイルは以下のスクリーンショットのようになります。

5. ページの一番下までスクロールして、新しいファイルをコミットをクリックします。

これで、リポジトリにJenkinsfileが作成されました。

6. 最後に、リポジトリのURLをコピーします。これを行うには、コードをクリックしてコピーボタンをクリックします。Jenkins CI CDパイプラインの作成中に、このURLが必要になります。

Jenkins CI CDパイプラインの作成
機能の開発には多くのコード変更が関与します。各コード変更の間には、実行するタスクのセットがあります。これらのタスクには、変更のコミット、コンパイル、テスト、パッケージ化などが含まれる場合があります。
Jenkinsなどの自動化サービスは、これらの手順を迅速かつエラーなしで行うのに役立ちます。
1. ブラウザを開き、JenkinsのURLに移動してログインします。
2. Jenkinsのダッシュボードで、左側のメニューから新しいアイテムオプションをクリックします。

3. 新しいパイプラインの名前を入力します。このチュートリアルでは、demoPipelineと名前を付け、パイプラインテンプレートを選択します。完了するには、OKをクリックします。

4. 設定ページの一般タブの下にあるGitHubプロジェクトボックスをチェックします。次に、先ほどコピーしたリポジトリのURLをプロジェクトURLボックスに貼り付けます。

5. ビルドトリガーセクションまでスクロールし、以下のスクリーンショットのようにGitHubのフックトリガーによるGITScmポーリングボックスをチェックします。

6. 次に、さらにスクロールしてパイプラインセクションに移動し、次の値を選択/指定します:
- 定義: SCMからのパイプラインスクリプト
- SCM: Git
- リポジトリのURL: あなたのリポジトリのURL

7. ページの一番下までスクロールし、スクリプトパスの値がJenkinsfileであることを確認します。この値は、GitHubリポジトリを準備する際に作成したJenkinsfileを参照しています。最後に、保存をクリックします。

GitHubでのWebhookの設定
Jenkinsが新しいジョブを実行するためには、まずGitHubリポジトリにWebhookを作成する必要があります。このWebhookは、リポジトリで新しいプッシュが発生するとすぐにJenkinsに通知します。
以下の手順に従ってWebhookを作成してください。
1. 設定ページに移動し、GitHubリポジトリのWebhooksタブをクリックします。 Webhooksページで、Webhookを追加をクリックします。

2. あなたのJenkins URLを指定し、/github-webhook/in the Payload URL fieldに追加してください。 例えば、HTTP://jenkinsURLhere/github-webhook/です。
また、Content typeの値をapplication/jsonに変更してください。

3. Which events would you like to trigger this webhookの選択で、Let me select individual eventsオプションをクリックしてください。

4. スクロールしてPushesとPull requestsのチェックボックスを確認してください。 これらのオプションを選択すると、GitHubはこれらの特定のイベント中にJenkinsにペイロードを送信します。

5. 下部にあるAdd webhookボタンをクリックして、webhookを検証してください。 webhookの検証が成功した場合、以下のスクリーンショットと同様のページ上部に通知が表示されます。

Jenkins CI CD Pipeline Jobを実行してトリガーする
パイプラインを作成して構成したので、そのパイプラインが機能しているかどうかをどのように知ることができますか? Jenkinsは、Pipeline Stage Viewプラグインを提供して、パイプラインの状態を表示するのに役立ちます。
1. パイプラインの状態を開くには、Jenkinsでパイプラインを開き、Statusをクリックしてください。 下のスクリーンショットで見られるように、Stage ViewのステータスはNo data availableと表示されます。 なぜなら、パイプラインをトリガーするイベントが発生していないからです。

2. 初期ビルドデータを生成するには、今すぐビルドをクリックしてビルドプロセスの完了を待ちます。以下のように、ステージビューには今、このビルドに変更がないことを示すエントリが1つあります。

3. 今度は、リポジトリにダミーファイルをコミットしてパイプラインをテストします。GitHubリポジトリに戻り、ファイルの追加 —> 新しいファイルの作成をクリックします。
新しいファイルの名前としてdummyを入力し、コンテンツを追加することを確認してください。

最後に、ページの下部にある新しいファイルをコミットをクリックします。
4. Jenkinsパイプラインのステータスページに戻り、以下に示すように、1つのコミットが含まれる新しいビルドエントリが表示されるはずです。

結論
このチュートリアルを通じて、Jenkins CI CDパイプラインを設定してソフトウェア開発ライフサイクルを自動化する方法を学びました。また、Jenkinsを使用してソフトウェアプロジェクトのCIのためのアクションチェーンを維持する方法も学びました。
あなたはJenkins CI CDパイプラインをプロジェクトに適用する戦略だと思いますか?それとも、すでに採用している他のCI/CDソリューションがあると考えていますか?