AWS CodeBuildとは、クラウド内の完全マネージド型のビルドサービスです。CodeBuildでは、ソースコードのコンパイル、テストの実行、デプロイ可能なパッケージの生成を行うことができます。
<aside> 💡 CodeBuildのメリット
・完全マネージド型 ビルドサーバーのセットアップ、パッチ適用、更新、管理を全てAWSが行ってくれます。ピーク時のビルドリクエストに合わせて自動的にスケーリングしてくれます。
・オンデマンド ビルドのニーズに合わせてオンデマンドでスケーリングされます。料金は、使用したビルド分数に対してのみ発生します。
・すぐに使える 一般的なプログラミング言語でのビルド環境を提供し、最初のビルドを開始するには、ビルドスクリプトを指定するだけです。
</aside>
マスタ情報連携バッチやもろもろのデータの差分取得バッチなどのバッチを定期的に実行しています。(見た感じ、他にもたくさんビルドプロジェクトはあるっぽいですが、割愛します...)
流れとしては、こんな感じ(のハズ)です...
2のbuildspec.ymlは、当案件ではこんな感じでした。
version: 0.2
env:
variables:
# 本番、ステージングは違うシークレットIDをCodeBuildジョブの現物に指定する
SECRETS_MANGER_SECRET_ID: "サンプル"
phases:
pre_build:
commands:
# "FATAL: Listen error: unable to monitor directories for changes." 対策。
# これの設定するためCodeBuildジョブは 特権付与=True として動かす必要がある
- sysctl -w fs.inotify.max_user_watches=524288
# SecretsManagerからシークレットまるごと持ってきて、加工して、環境変数に取り込む
- ${APP_ROOT}/bin/secretsmanager_to_envvar.sh "${SECRETS_MANGER_SECRET_ID}" | sort >> ${APP_ROOT}/bin/envvar.sh
- . ${APP_ROOT}/bin/envvar.sh
build:
commands:
- cd ${APP_ROOT}
- rake batch:サンプル
<aside> 💡 version : buildspecのVersion(必須) env : 環境変数 phases : CodeBuildでは書くフェーズごとに実行する内容を分けることが可能 pre_build : ビルド前に実行するコマンド build : ビルド中に実行するコマンド
</aside>
*buildspec.ymlに記載する項目の詳細は、こちらをご参照ください(https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/build-spec-ref.html#build-spec-ref-syntax)。