分かったうえではじめる ”CI/CD”
ハッカソン前に絶対やっておくべきハンズオン講座
Yuta Matsumura
松村 優大 (MLBお兄さん)
Chief Technical Architect (C#, PHP, Azure)
Microsoft MVP (Developer Technologies)
#fukuten #devblogradio の中の人
@tsubakimoto_s
Currently working for
これから話すこと
アプリケーション開発における 自動化 について話します。
自動化は色々あるけど、今回は CI/CD にフォーカスします。
CI/CD
Continuous Integration : 継続的インテグレーション
Continuous Delivery : 継続的デリバリ
これから話すこと
アプリケーション開発における 自動化 について話します。
自動化は色々あるけど、今回は CI/CD にフォーカスします。
CI/CD
Continuous Integration : 継続的インテグレーション
Continuous Delivery : 継続的デリバリ
これから話すこと
アプリケーション開発において・・・
• CI/CD がなぜ必要なのか
• CI/CD がどういう場面で効果的か
• CI/CD がすると何が嬉しいのか
• CI/CD をどうやってやるのか
明日から実践しましょう!
CI/CD がなぜ必要なのか
一般的なアプリケーション開発工程
要件定義 設計 開発 テスト リリース
ハッカソンを思い出してください・・・
1日目:アプリを企画・設計・実装する
▼
2日目:アプリを実装・テストする
▼
3日目:アプリを実装・テスト・公開する
ハッカソンを思い出してください・・・
1日目:アプリを企画・設計・実装する(余裕)
▼
2日目:アプリを実装・テストする(少し焦る)
▼
3日目:アプリを実装・テスト・公開する(とても焦る)
ハッカソンを思い出してください・・・
1日目:アプリを企画・設計・実装する(余裕)
▼ ビルドやデプロイに時間がかかる・つまづく
2日目:アプリを実装・テストする(少し焦る)
▼ ビルドやデプロイに時間がかかる・つまづく
3日目:アプリを実装・テスト・公開する(とても焦る)
ビルド :アプリを動作できる状態にする作業
デプロイ:アプリを公開するための作業
ビルドやデプロイはアプリケーションを公開するために
必要な作業です。そのような重要な作業は属人化しやすく、
開発スピードを阻害しかねません。
公開時の作業は定型作業であり、担当する人のスキルに依存
しないほうが良いです。そのため仕組み化することが望まし
いです。
アプリケーション開発における定型作業の例
• ビルド
• テスト
• コード解析
• コンテナーイメージ化
• デプロイ
• ブランチやタグの管理
• 通知 など
CI/CD
自動化がすると何が嬉しいのか
定型作業のミスや手間を減らし(失くし)、アプリケーショ
ンの品質保証に寄与する。
また、作業者が本来やるべき作業に集中する時間を作ること
ができます。
▶開発者なら開発作業に集中する
CI/CD は最初から用意しよう
1. GitHub にリポジトリを作成する
2. 最初のコミットを行う (Hello World なアプリ)
3. CI/CD を構成・実行する
4 ~ n. 開発する ▶ 常に CI/CD が実行される
CI/CD の主な範囲
CI/CD をどうやってやるのか
CI/CD に必要なもの
• Git を使用していること
• コード化していること
• パイプラインが構成されていること
• 結果が分かること
• 繰り返し実行できること
CI/CD ツール
Azure DevOps
https://docs.microsoft.com/ja-jp/azure/devops/pipelines/
https://docs.microsoft.com/ja-jp/azure/developer/github/
パイプラインの流れ(シンプル)
トリガー 環境構成 ビルド&デプロイ
• プッシュ時
• プルリクエスト作成時
• など
• 環境変数
• SDKインストール
• など
• リリースまで一気に
パイプラインの流れ(マルチステージ)
トリガー 環境構成 ビルド
成果物の
受渡
デプロイ
Artifact
パイプラインの流れ(マルチステージ)
トリガー 環境構成 ビルド
成果物の
受渡
デプロイ
“承認 (Approve)” を設定
https://docs.microsoft.com/ja-jp/azure/architecture/solution-ideas/articles/azure-
devops-continuous-integration-and-continuous-deployment-for-azure-web-apps
https://docs.microsoft.com/ja-jp/azure/architecture/solution-ideas/articles/devsecops-in-github
GitHub Actions
• https://github.co.jp/features/actions
• 一般ユーザー 2,000分/月(パブリックリポジトリは無料)
分かったうえではじめるCI/CD

分かったうえではじめるCI/CD