目的
Jenkinsで任意のGitリポジトリからCloneしてCloudFormationのYAMLファイルを取得し、シェルのジョブを実行しスタックを作成する。
Jenkinの設定
設定済みの項目は以下の通り。
- ビルドのパラメータ化を文字列で設定
- ソースコード管理で任意のGitリポジトリを指定、認証情報入力済み
- AWS CLIの設定
- シェルの実行にCloudFormationの実行シェルスクリプトを記載
こちらの方の記事がわかりやすかったです。
上記状態でジョブを実行したところエラー。
An error occurred (ValidationError) when calling the CreateStack operation: 1 validation error detected: Value 'test.cf' at 'stackName' failed to satisfy constraint: Member must satisfy regular expression pattern: [a-zA-Z][-a-zA-Z0-9]* Build step 'Execute shell' marked build as failure Finished: FAILURE
一度AWSのGUIからCloudFormationでテストしてみる。
スタックの名前にドットは入力できない。ということで、名前変更して再び実行
修正前
sudo -u ec2-user aws cloudformation create-stack --stack-name raisetech-cf --template-body file://$WORKSPACE/test.cf.yml
修正後
sudo -u ec2-user aws cloudformation create-stack --stack-name raisetech-cf --template-body file://$WORKSPACE/test-cf.yml
Jenkinsのコンソール出力ログ
"StackId": "arn:aws:cloudformation:ap-northeast-1:●●●●●:stack/raisetech-cf/●●●●●●●●" } Finished: SUCCESS
無事スタックの作成ができました。