2021年1月11日月曜日

CircleCI x ECS

作業イメージ:

ローカル上でソースコードをGitHubにpushすると、CIrcleCIがそれをトリガーに

ECRdockerfilepushして、その後、ECSを更新する。

























[IAM]


CircleCI用のアカウントを作成する。








以下の権限を追加する











[ECS]


①クラスター名:

circleci-orbs-clusterという名称で、クラスターの作成名にする(任意で問題ない)














サービス名:

circleci-orbs-serviceというサービス名にする。












タスク定義:

circleci-orbs-taskという定義名にする












[ECR]

今回は、circleci-orbs-sampleという名称でECRpushする















[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でのデプロイが完了後について:

ECSをみるとタスク定義名の数字(circleci-orbs-task:XX)が更新されていることを確認できる。















ECRも以下のリポジトリが更新されていることが確認できる。



























0 件のコメント:

コメントを投稿

php log(ECS ログ出力)

# PHPエラーログの設定 ENV PHP_INI_DIR /usr/local/etc/php RUN { \ echo 'log_errors = On' ; \ echo 'error_log = /proc/self/...