--- marp: true theme: default class: lead paginate: true footer: "Jenkins CI/CD ハンズオン" # Jenkins CI/CD ハンズオン - CI/CDの基礎を理解する - Jenkinsでの自動化ワークフローを体験 - 簡単なアプリケーションのビルドとテスト --- # アジェンダ 1. Jenkinsの概要 2. 「Hello World」ジョブの作成 3. サンプルアプリケーションのビルドとテスト 4. 簡単なデプロイ処理 5. GitHub Webhookを使った自動トリガー 6. (オプション) Slack通知の設定 --- # Jenkinsの概要 - **Jenkinsの役割**:CI/CDツールとしての役割 - **基本用語**:ジョブ、パイプライン、ビルド、ワークスペース、ノード - **Webインターフェース**:メインダッシュボードや基本設定の場所を確認 --- # Step 1: 「Hello World」ジョブの作成 1. **ジョブの作成**: - 「新しいジョブ作成」 → 「フリースタイルプロジェクト」 - ジョブ名を「Hello World」に設定 2. **ビルド設定**: - 「ビルド」セクション → 「シェルの実行」 - コマンド: `echo "Hello, World!"` 3. **実行と確認**: - 「ビルド」ボタンをクリック - コンソール出力で結果を確認 --- # Step 2: サンプルアプリケーションのビルドとテスト ### 準備 - **サンプルリポジトリ**: - 簡単なPythonアプリケーション(`app.py` と `test_app.py`) ```python # app.py def add(a, b): return a + b ``` ```python # test_app.py import unittest from app import add class TestApp(unittest.TestCase): def test_add(self): self.assertEqual(add(1, 2), 3) if __name__ == "__main__": unittest.main() ``` --- # Step 2 (続き): ビルドとテストの自動化 1. **新規ジョブ作成**: - 「新しいジョブ作成」 → 「フリースタイルプロジェクト」 - ジョブ名:「Pythonアプリビルドとテスト」 2. **Gitリポジトリの設定**: - 「ソースコード管理」→「Git」を選択 - リポジトリURLを入力 3. **ビルド設定**: - 「シェルの実行」→ `python3 -m unittest test_app.py` 4. **実行と確認**: - ジョブを実行し、テスト結果を確認 --- # Step 3: デプロイ処理の追加 1. **アーティファクト保存**: - 「ビルド後の処理」 → 「アーカイブするアーティファクト」 - 保存するファイル:`*.zip` 2. **シェルコマンド追加**: - 「シェルの実行」→ `zip -r app.zip .` 3. **実行と確認**: - ジョブ実行後、ZIPファイルが生成され、アーティファクトとして保存されていることを確認 --- # Step 4: GitHub Webhookでの自動トリガー 1. **ビルドトリガーの設定**: - 「ビルドトリガー」→「GitHub hook trigger for GITScm polling」 2. **GitHubの設定**: - GitHubリポジトリの「Settings > Webhooks」→ Webhook追加 - URL例: `http://localhost:8081/github-webhook/` - Content typeは`application/json` 3. **確認**: - GitHubに変更をプッシュし、Jenkinsでジョブが自動的に実行されることを確認 --- # Step 5 (オプション): Slack通知の設定 1. **Slackプラグイン設定**: - JenkinsにSlack Notification Pluginをインストール - SlackのワークスペースでWebhookを設定し、トークンを取得 2. **Slack通知の追加**: - 「ビルド後の処理」→「Slack通知」 - 成功時・失敗時の通知を設定 3. **通知の確認**: - ビルド実行後、Slackに通知が届くことを確認 --- # まとめ - JenkinsでCI/CDの基本フローを体験 - 手動ジョブ作成、Gitリポジトリ連携、自動テスト、デプロイ、通知 - CI/CDの自動化とそのメリットを理解 --- # お疲れ様でした! - Jenkinsの基本操作を学べましたか? - 継続的インテグレーションとデリバリーの流れを理解できましたか? Jenkinsを使ったCI/CDにぜひ挑戦してみてください!