GithubAction や awsを用いたCICDツールをいろいろやっていくリポジトリ
継続的インテグレーション CI / 継続的デリバリー CD
画像の引用元 : https://www.servicenow.com/jp/products/devops/what-is-cicd.html
CI CDでアプリ開発のステージを一部自動化することで、顧客にアプリケーションを頻繁に提供できる (引用 : redhad)
結果 市場のニーズに常に対応でき、競争力を保つことができる
- CI
- アプリケーションに変更を加えた際の イメージのビルド や 単体テスト を自動化
- 開発したソースコードやImageに 脆弱性がないか診断 や プログラムのお作法に問題は無いか
- CD
- 開発したアプリケーションを実行環境 (開発・検証・本番)へ デプロイ(アプリケーションの配置) する
※本番環境へのデプロイは検証環境でエビデンスを取って、チームでレビューしてから実施すると思われます
デプロイとリリースの違いが気になる方へ 結局デプロイとリリースってどう違うの
実演用endpoint
http://cicdha-webAp-eQSCGIFzwy98-1124916881.ap-northeast-1.elb.amazonaws.comgithubAction で AWS で設定しているCodeDeployを動かしているので、実態はAWSにあると思われる

CI/CD実行 : githubActionで定義 デプロイ設定 : aws codedeploy (cloudformationで管理)
- ローカル作業pcでGithubリポジトリをclone
- アプリに変更を加える
- 変更をGithub リポジトリ に反映
Imageの作成とアプリケーションへの反映は自動で実施される ※検証環境でのデプロイを想定した流れ
ローカル環境でイメージファイルを作成して、アプリケーションを起動します
CI : イメージのビルド、リポジトリへのPush CD : 本番環境へのデプロイ
- イメージ構築環境でGithubリポジトリをclone
- アプリに変更を加える
- 変更されたDockerImageを作成
- ImageをAWS ECR へPush
- 新規Imageのアプリケーション定義を作成
- タスク・コンテナ等のアプリケーション実行リソースにデプロイする
- 本来は、以下のようになっており、実演した内容よりもっと手間がかかる
- ローカルではなくクラウド環境や、自社のオンプレで動いている
- リポジトリも社内DockerリポジトリやAWS ECRなど
- 単体テスト・脆弱性診断・コード診断
CICD前
1. イメージ構築環境でGithubリポジトリをclone
2. アプリに変更を加える
3. 変更されたDockerImageを作成
4. ImageをAWS ECR へPush
5. 新規Imageのアプリケーション定義を作成
6. タスク・コンテナ等のアプリケーション実行リソースにデプロイする
CICD後
1. ローカル作業pcでGithubリポジトリをclone
2. アプリに変更を加える
3. 変更をGithub リポジトリ に反映
素早い変更の統合(インテグレーション) と デプロイ を実施することで、市場のニーズに常に対応でき、競争力を保つことができる
