LoginSignup
1
0

More than 3 years have passed since last update.

CodePipelineからCodeBuildに環境変数を追加するCloudFormationを定義してみた

Posted at

はじめに

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から設定情報を確認するのが手っ取り早いと思います。
誰かしらの手助けになればと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0