作業イメージ:
ローカル上でソースコードをGitHubにpushすると、CIrcleCIがそれをトリガーに
ECRにdockerfileをpushして、その後、ECSを更新する。
[IAM]
CircleCI用のアカウントを作成する。
以下の権限を追加する
[ECS]
①クラスター名:
circleci-orbs-clusterという名称で、クラスターの作成名にする(任意で問題ない)
サービス名:
circleci-orbs-serviceというサービス名にする。
タスク定義:
circleci-orbs-taskという定義名にする
[ECR]
今回は、circleci-orbs-sampleという名称でECRにpushする
[GitHub]
レポジトリーの中身になる。
1)ディレクトリ構成について
.circleci
|----config.yml <-------------CircleCIの設定ファイル
dockerfile <-------------------nginxのdocker file
index.html <-------------------nginxのコンテンツファイル
nginx.conf <-------------------nginxのコンフィグ類
2)config.ymlについて
以下、config.ymlに記載した①②③について説明します。
①
ジョブ、コマンド、Executor などの構成要素をまとめた共有可能なパッケージということで
要は、以前のCIrcleCIでコマンド実行に関する記述をしていたのをOrbというパッケージを利用することで
いい感じに実行してくれる物
②
region : AWSのリージョン名になる(CircleCIの環境変数に記載している)
account-url: ECRのアカウントURL名になる(CircleCIの環境変数に記載している)
例:以下の箇所がECRのアカウントURLを示す
repo: ECRのリポジトリ名を示す(CircleCIの環境変数に記載している)
tag: サンプル素材のconfig.ymlを真似しただけ。
dockerfile: dockerfileの所在をcircleci側で認識させるために記載する
path: dockerfileの所在をcircleci側で認識させるために記載する
上記を記載しないで、CIrcleCIで実行させると、Dockerの所在が分からないというエラーが出たので記載する。
③
family: ECSのタスク定義名になる(CircleCIの環境変数に記載している)
cluster-name: ECSのクラスタ名になる(CircleCIの環境変数に記載している)
service-name: ECSのサービス名になる(CircleCIの環境変数に記載している)
container-image-name-updates: サンプル素材のconfig.ymlを真似しただけ。
[CircleCI]
Project Settings > Environment Variables
上記のconfig.ymlで記載した①②③は、以下の環境変数になる。
実際に、ローカルにあるソースコードを編集などを行いgithubにpushすると
それをトリガーにCircleCI側で ECR/ECSで更新が行われる。
(成功すれば以下のような表示になる。)
CircleCIでのデプロイが完了後について:
ECRも以下のリポジトリが更新されていることが確認できる。
0 件のコメント:
コメントを投稿