CodePipelineからCodeBuildに環境変数を追加するCloudFormationを定義してみた
はじめに
CodeBuildを共通化してCodePipelineにて環境変数を渡すだけで環境を分離したCI/CDを実現している方も多いと思います。
CodePipeline自体をCloudFormationでコード管理しており、CodePipelineからCodeBuildに環境変数を追加する際にどのようにテンプレートで表せばよいか格闘した記事です。
CodeBuild定義テンプレート
CloudFormationにおけるCodePipelineの定義はこちらに記載されてます。
CodeBuildの環境変数を定義する箇所は「Configuration」のプロパティであることはわかっていたが、記載方法が全くない!!
AWS CLIからCodePipelineの設定確認
という訳で、AWS CloudShellからAWS CLIを叩いてPipelineの情報を取ってきて調べた。
「configuration」プロパティに環境変数の情報があったので、これでテンプレも書けそうだ。
{
"name": "Build",
"actions": [
{
"name": "Build",
"actionTypeId": {
"category": "Build",
"owner": "AWS",
"provider": "CodeBuild",
"version": "1"
},
"runOrder": 1,
"configuration": {
"EnvironmentVariables": "[{\"name\":\"TEST\",\"value\":\"test\",\"type\":\"PLAINTEXT\"}]",
"ProjectName": "test-build"
},
"outputArtifacts": [
{
"name": "OutputArtifact"
}
],
"inputArtifacts": [
{
"name": "SourceArtifact"
}
],
"region": "ap-northeast-1"
}
]
},
テンプレート
EnvironmentVariablesの値が文字列であることに注意!!
初めに見た時に「なんだリストで書けばいいのか」と勘違いして失敗しました・・・
テンプレートはCodeBuildの箇所だけ抜粋してます。
Stages:
- Name: Build
Actions:
- Name: Build
ActionTypeId:
Category: Build
Owner: AWS
Version: 1
Provider: CodeBuild
Configuration:
EnvironmentVariables: '[{"name":"TEST","value":"test","type":"PLAINTEXT"}]'
ProjectName: !Ref CodeBuildProject
RunOrder: 1
InputArtifacts:
- Name: SourceArtifact
OutputArtifacts:
- Name: OutputArtifact
意外とドキュメントを読んでもわからないこともあるので、仮でリソースを作成してみてAWS CLIから設定情報を確認するのが手っ取り早いと思います。
誰かしらの手助けになればと思います。
Author And Source
この問題について(CodePipelineからCodeBuildに環境変数を追加するCloudFormationを定義してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/Tacchinardi/items/613fb35549a672f847a6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .