marp | theme | class | |
---|---|---|---|
true |
default |
|
- フリーランス, ZEN Architects 所属
- Microsoft MVP for Azure
- Azure における Infrastructure as Code や GitHub を用いた CI/CD 自動化が得意
- GitHub公認トレーナー
Twitter: @dz_ GitHub: @dzeyelid Zenn: dzeyelid
- Continuous Integration/Continuous Delivery(Deployment)
- DevOps の考え方を取り入れるときにキーとなる自動化
- CI: 主に ビルド、テスト など
- CD: 主に デプロイ
関連するサービス | 説明 |
---|---|
GitHub Actions | 自動化の手順を記述したワークフローを実行できる |
GitHub Marketplace | GitHub Actions で利用できるアクションを探すことができる |
GitHub Packages | 様々な言語に対応したパッケージレジストリ |
GitHub Container Registry | コンテナイメージのレジストリ (GitHub Packages の一部) |
ワークフローに処理を定義しておき、定義したトリガを契機に実行させる。
- アクション
- トリガ
- ランナー
- シークレット
- Environment
OSSで構成された処理のコンポーネント
- 自作
- JavaScript で記述、または コンテナとして構成
- 参考: カスタム アクションについて - GitHub Docs
- Marketplace
- Verified creator や登録されたアクションを検索できる
- OSSで公開されているリポジトリ
- シェルスクリプトの実行
- bash, PowerShell
ワークフローを実行する契機を定義する
- プルリクエストを作成、編集、クローズされたとき
- プッシュされたとき
- issue が作成、更新、クローズされたとき
- REST API や手動による実行
くわしくは、
- Github-hosted と Self-hosted
- GitHub-hosted
- Ubuntu, Windows, macOS
- 参考: GitHub ホステッド ランナーの概要 - GitHub Docs
- Self-hosted
機能 | 説明 |
---|---|
シークレット | - 機密情報はシークレットに格納し、ワークフローから参照できる - ログ上でも目隠しされる - スコープは、リポジトリ、Environment、Oraganization 単位 |
Environment | 承認者(reviewers)によるワークフロー実行の待機をさせたり、環境ごとのシークレットを設定できる |
- Branch Protection rule(ブランチ保護ルール)の Require status checks to pass before merging を有効化することで、プルリクエストに対するワークフローの実行ステータスが成功した場合のみマージできるよう制限できる
- コードの品質保持やセキュリティ対策を行える
- 参考: About protected branches - GitHub Docs
- コンテナイメージを格納、配布できるレジストリ
- GitHub の認証を用いてアクセスできる
着目点 | Webアプリケーションの場合 | エッジAIの場合 |
---|---|---|
デプロイするもの | アプリケーション | アプリケーション、AIモデル |
デプロイ先 | サーバー | エッジ |
- 最近の Webアプリケーション開発では、クラウドプラットフォームの恩恵でデプロイが容易に
- エッジの場合、デプロイの仕組みを構成するのが大変?
- デプロイの仕組みに、Azure IoT Edge を利用
- AIモデルの生成は Azure Custom Vision を採用
- CI/CD のワークフローは GitHub Actions を利用
- IoT Edge で利用するコンテナイメージは GitHub Container Registry を利用
- コンテナの技術を利用し、エッジのアプリケーション管理ができる
- アプリケーションのデプロイや状態の共有ができる
- 任意の画像を学習し、分類やオブジェクトの検出ができる
- GUI による操作ができる
- 複数の形式でモデルのエクスポートができる
- デモでは Dockerfile 形式でエクスポートを行う
- Azure Custom Vision で学習する(イテレーションが作成される)
- イテレーションIDを更新したプルリクエストを作成する
- CI - Custom Vision モデルのエクスポート(Dockerfile)、ダウンロードする
- 初回のモデルのダウンロード、一度ワークフローは失敗する (意図的、解説)
- CI - Dockerfile(Custom Visionのモデル含む)をビルド、イメージをプッシュする
- CD - IoT Edge で管理しているデバイスにデプロイする