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