--- marp: true theme: default class: lead paginate: true footer: "Jenkins CI/CD ハンズオン" # Jenkins CI/CD ハンズオン - CI/CDの基礎を理解する - Jenkinsでの自動化ワークフローを体験 - GiteaとMattermostを活用した簡単なCI/CDパイプライン構築 --- # アジェンダ 1. Jenkinsの概要 2. 「Hello World」ジョブの作成 3. サンプルアプリケーションのビルドとテスト 5. Gitea Webhookを使った自動トリガー 6. Mattermost通知の設定 --- # Jenkinsの概要 - **Jenkinsの役割**:CI/CDツールとしての役割 - **基本用語**:ジョブ、パイプライン、ビルド、ワークスペース、ノード - **Webインターフェース**:メインダッシュボードや基本設定の場所を確認 --- # Step 1: 「Hello World」ジョブの作成 1. **ジョブの作成**: - 「新規ジョブ作成」 → 「フリースタイルプロジェクト」 - ジョブ名を「Hello World」に設定 2. **ビルド設定**: - Build Steps → ビルド手順の追加 → 「シェルの実行」 - コマンド: `echo "Hello, World!"` 3. **実行と確認**: - 「ビルド実行」ボタンをクリック - Buildsに追加された履歴を開き、コンソール出力で結果を確認 --- # 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. **Giteaリポジトリの設定**: - 「ソースコード管理」→「Git」を選択 - リポジトリURLを入力、資格情報を追加 - 「ビルドするブランチ」を「main」に変更 3. **ビルド設定**: - Build Steps →「シェルの実行」→ `python3 -m unittest test_app.py` 4. **実行と確認**: - ジョブを実行し、テスト結果を確認 --- # Step 3: Gitea Webhookでの自動トリガー 1. **ビルド・トリガの設定**: - 「ビルド・トリガ」→「GitHub hook trigger for GITScm polling」を有効化 2. **Giteaの設定**: - Giteaリポジトリの 設定 → Webhook → Webhook追加 → Gitea - URL: `http://<使っているjenkinsのURL>/github-webhook/` - Content typeは`application/json` 3. **確認**: - Giteaリポジトリに変更をプッシュし、Jenkinsでジョブが自動的に実行されることを確認 --- # Step 4: Mattermost通知の設定 1. **Mattermost Webhookの設定**: - Mattermostの統合機能で「内向きのウェブフック」を選択 - 新しいWebhookを作成し、Webhook URLを取得 - 通知先のチャンネルを指定 2. **JenkinsのMattermost通知設定**: - Jenkinsのプラグイン管理から「Mattermost Notification」をインストール - ジョブの「ビルド後の処理」で「Mattermost Notifications」を追加し、Webhook URLや通知内容を設定 - EndpointがWebhook URLでProject Channelは通知送信先チャンネル名 3. **通知の確認**: - ビルド実行後、Mattermostに通知が届くことを確認 --- # まとめ - Jenkins、Gitea、Mattermostを使ったCI/CDの基本フローを体験 - 手動ジョブ作成、Giteaリポジトリ連携、自動テスト、デプロイ、通知 - CI/CDの自動化とそのメリットを理解 --- # お疲れ様でした! CI/CDにぜひ挑戦してみてください!