CodeBuildのbuildspec.ymlを別の名前にしたいときの手順
TL;DR
CodeBuildを使っていると、ビルドの成果物が違うからビルドスペックのファイル(buildspec.yml
というもの)の単位で成果物を分けたいということがあります。調べてみると、ドキュメントに1にやり方が載っていたのでやってみました。方向性としては、AWS CLIで変更操作をする手順です。2
(2017-10-13 22:00 追記。 今さっき見てみたら、Consoleでファイル名を指定できるようになっていました。ちょろっと直すならConsoleでいいですね。)
概要
nantoka-build
というプロジェクトのビルドスペックのファイルをnantoka-kantoka-buildspec.yml
に変えたいとします。windowsの例ですが、mac でも linuxでも概ね同じでしょう。
プロジェクトの名前を確認する
Consoleから確認することもできますが、CLIと同じものが見えているか確認する意味も込めてやってみましょう。
>aws codebuild list-projects
{
"projects": [
"nantoka-build",
"kantoka-build-project",
"test-test-project"
]
}
>
各環境とかリージョンとかで色々あると思いますが、Console
https://ap-northeast-1.console.aws.amazon.com/codebuild/home?region=ap-northeast-1#/projects
で、見えるプロジェクトとおなじビルドプロジェクトが見えていればOKです。nantoka-build
以外のプロジェクトも、存在するなら見えていることでしょう。
プロジェクト名を指定して、プロジェクト構造のJSONファイルを取得する
更新の操作はプロジェクト構造のJSONファイルをアップロードする形になります。アップロードするファイルを作るため、現状のファイルをダウンロードします。(たぶんこのJSONは、CloudFormationのテンプレートなのではないかなと思います。)
>aws codebuild batch-get-projects --names nantoka-build
{
"projectsNotFound": [],
"projects": [
{
"name": "nantoka-build",
"serviceRole": "arn:aws:iam::1234123412341234:role/service-role/nantokarole",
"tags": [],
"artifacts": {
"packaging": "NONE",
"type": "CODEPIPELINE",
"name": "nantoka-artifact"
},
"lastModified": 1512341234.783,
"timeoutInMinutes": 60,
"created": 1512341234.68,
"environment": {
"computeType": "BUILD_GENERAL1_SMALL",
"privilegedMode": false,
"image": "aws/codebuild/java:openjdk-8",
"type": "LINUX_CONTAINER",
"environmentVariables": []
},
"source": {
"type": "CODEPIPELINE"
},
"encryptionKey": "arn:aws:kms:ap-northeast-1:1234123412341234:alias/aws/s3",
"arn": "arn:aws:codebuild:ap-northeast-1:1234123412341234:project/nantokanantoka"
}
]
}
>
(arnなどは内容を適当にいじっています。表示される項目はあなたのプロジェクトの内容と同じはずです。)
プロジェクト構造のJSONファイルを修正する
コマンドプロンプトに出力されたJSONをファイルに落として修正を入れます。
- JSONのルートの
"projects"
の配下を取り出す。 -
"buildspec": "nantoka-kantoka-buildspec.yml"
という1行を入れる。JSONなのでカンマ忘れずに。 -
"lastModified" "created" "arn"
は消す。JSONの構造が違うというエラーになるので。無くても多分実害ないと想像する次第。本当は正しい書き方あると思いますが未確認です。
{
"name": "nantoka-build",
"serviceRole": "arn:aws:iam::1234123412341234:role/service-role/nantokarole",
"tags": [],
"artifacts": {
"packaging": "NONE",
"type": "CODEPIPELINE",
"name": "nantoka-artifact"
},
"timeoutInMinutes": 60,
"environment": {
"computeType": "BUILD_GENERAL1_SMALL",
"privilegedMode": false,
"image": "aws/codebuild/java:openjdk-8",
"type": "LINUX_CONTAINER",
"environmentVariables": []
},
"source": {
"type": "CODEPIPELINE",
"buildspec": "nantoka-kantoka-buildspec.yml"
},
"encryptionKey": "arn:aws:kms:ap-northeast-1:1234123412341234:alias/aws/s3"
}
修正をアップロードする。
update.buildproject.json
をカレントディレクトリに置いて、下記コマンドを実行する。
>aws codebuild update-project --cli-input-json file://update.buildproject.json
{
"project": {
"name": "nantoka-build",
"serviceRole": "arn:aws:iam::1234123412341234:role/service-role/nantokarole",
"tags": [],
"artifacts": {
"packaging": "NONE",
"type": "CODEPIPELINE",
"name": "nantoka-artifact"
},
"timeoutInMinutes": 60,
"environment": {
"computeType": "BUILD_GENERAL1_SMALL",
"privilegedMode": false,
"image": "aws/codebuild/java:openjdk-8",
"type": "LINUX_CONTAINER",
"environmentVariables": []
},
"source": {
"type": "CODEPIPELINE",
"buildspec": "nantoka-kantoka-buildspec.yml"
},
"encryptionKey": "arn:aws:kms:ap-northeast-1:1234123412341234:alias/aws/s3"
}
}
>
Consoleで確認する
Consoleからプロジェクトを選択し、プロジェクト詳細 -> ビルド仕様の表示 とクリックして進むと、nantoka-kantoka-buildspec.yml
と表示されます。
-
http://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec-ref-name-storage 今のところ日本語にはなってないようです。 ↩
-
ぶっちゃけた話、Consoleがすぐにでも対応しそうな気もしますが、今時点での手順を残します。 ↩
Author And Source
この問題について(CodeBuildのbuildspec.ymlを別の名前にしたいときの手順), 我々は、より多くの情報をここで見つけました https://qiita.com/kazurof/items/deac8b22a84f983aabff著者帰属:元の著者の情報は、元の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 .