コンテンツにスキップ

ci_pipeline

本ページでは、ci_pipelineを実行するにあたっての注意事項やポイントを記載します。

適用しているpattern

ci_pipelineで使用しているpatternモジュールは、以下となります。

terraform applyを実行する前に

GitLabが利用でき、リポジトリにソースコードが登録されていること

ci_pipelineを実行するには、GitLabを利用できる必要があります。

example-chatのソースコードを、ご用意いただいたGitLabリポジトリに登録しておいてください。

また、GitLabによるCIを実行するためにはリポジトリに.gitlab-ci.ymlを含める必要があります。

ℹ️ example-chatには.gitlab-ci.ymlが含まれているため、そのまま利用できます。

GitLabのregistration tokenを取得する

ci_pipelineを適用するとGitLab Runnerが構築され、GitLabにRunnerとして登録されます。

この条件として、GitLabのregistration tokenが必要になります。

利用するGitLabのリポジトリの、Runnersを表示してください。
registration tokenは、RunnersSet up a specific Runner manuallyで確認できます。

Runnersは、SettingsCI / CDから表示できます。

取得したregistration tokenを、terraform planterraform apply時にpatternモジュールの変数に設定してください。

terraform applyを実行した後に

ci_pipelineにより構築されたGitLab Runnerが確認できること

ci_pipeline適用後は、構築されたGitLab RunnerがSpecific Runners内に出現していることを確認してください。

パイプラインに環境変数を設定すること

CIジョブを起動し、Amazon Elastic Container Registry(以下ECR)リポジトリにDockerイメージをPushするためには環境変数の設定が必要になります。

SettingsCI / CDVariablesより、以下の環境変数と値を設定してください。

環境変数名 設定値
ECR_REGISTRY [AWSアカウントID].dkr.ecr.[リージョン].amazonaws.com 777221001925.dkr.ecr.ap-northeast-1.amazonaws.com
EPONA_AWS_DEFAULT_REGION リージョン ap-northeast-1
EPONA_FRONTEND_ARCHIVE_FILE_NAME S31にアップロードするフロントエンド・ソースのzipファイル名 source.zip
EPONA_FRONTEND_PUSH_TO_S3_BUCKET_NAME フロントエンド・ソースのアップロード先となるS3バケット名 epona-static-resource
EPONA_REACT_APP_BACKEND_BASE_URL フロントエンドがバックエンドにリクエストするときに使用するベースURL https://chat-example-backend.staging.epona-devops.com

パイプラインを実行する

ここではCDパイプラインを構築した後で、CIパイプラインを実行する手順について説明します。

タスク定義の修正

example-chatの中には、Amazon Elastic Container Serviceにアップロードするタスク定義が含まれています。

  • backend/deploy/taskdef.json
  • notifier/deploy/taskdef.json

これらのタスク定義の中には、以下のようにタスクロールとタスク実行ロールが設定されています。

  "taskRoleArn": "arn:aws:iam::232105380006:role/EponaBackendContainerServiceTaskRole",
  "executionRoleArn": "arn:aws:iam::232105380006:role/EponaBackendContainerServiceTaskExecutionRole",

ロールのARNにはRuntime環境用のAWSアカウントIDが含まれています。 これらの値は、実際の環境に合わせて書き換えてmasterブランチにコミットしてください。

ジョブの起動条件を満たす

example-chatのCIパイプラインには、AWSに各種リソースをデプロイするための以下のジョブが定義されています。

ジョブ 説明 起動条件
deploy-frontend-to-s3 frontendのビルド成果物をS3にアップする frontend/以下を修正する
deploy-nginx-backend-to-ecr backend用のnginxイメージをECRにプッシュする docker/nginx/以下を修正する
deploy-nginx-notifier-to-ecr notifier用のnginxイメージをECRにプッシュする docker/nginx/以下を修正する
deploy-backend-to-ecr backendのイメージをECRにプッシュする backend/以下を修正する
deploy-notifier-to-ecr notifierのイメージをECRにプッシュする notifier/以下を修正する
deploy-backend-deployment-settings backendのデプロイ設定をS3にアップする backend/以下を修正するかつ、masterへのpush
deploy-notifier-deployment-settings notifierのデプロイ設定をS3にアップする notifier/以下を修正するかつ、masterへのpush

「起動条件」にあるように、これらのジョブはデプロイ対象のリソースが修正された場合のみ実行されるようになっています。

これらのジョブが実行されるように、以下の条件を満たすファイルを修正してmasterブランチにコミットしてください。

  • frontend/ 以下のファイル
  • backend/ 以下のファイル
  • notifier/ 以下のファイル
  • docker/nginx/ 以下のファイル

ファイルの種類や変更内容は、アプリケーションの動作を破壊するものでなければ何でも構いません。 README.mdに1行足したり、Dockerfileにコメントを1行足すなどの修正を入れてください。

修正をmasterブランチにコミットしたら、リモートにpushしてください。 CIパイプラインが起動して、各種リソースがAWSにデプロイされます。


※ このドキュメントはクリエイティブコモンズ(Creative Commons) 4.0 の「表示—継承」に準拠しています。

※ このドキュメントに記載されている会社名、製品名は、各社の登録商標または商標です。

© 2021 TIS Inc.