概要
AWSのcodebuildでbashを使用した時にループや条件分岐をどう記載すれば良いか分からなかったのでメモです。
同じ様に悩んでいる方の参考になれば嬉しいです。
環境
- AWS codebuildを使用
- version: 0.2
- shell:bash
方法① buildspec.ymlに直接記述する
複雑な実装をする際はシェルスクリプト書いて実行する方がいいですが、動作確認の為に試しに実行したい時などファイル作成する必要がない様な処理を書く時に良いかと思います。
ループ処理
version: 0.2
env:
shell: bash
phases:
build:
commands:
# ループ処理
# カレントディレクトリのjavaファイルのみをS3にコピーする例
- cd $CODEBUILD_DIR
- |
for file_name in `ls -1 | grep *.java`
do
aws s3 cp $CODEBUILD_DIR/${file_name}.java s3://path/to/s3/
done
条件分岐
version: 0.2
env:
shell: bash
variables:
value: hoge
phases:
build:
commands:
# 条件分岐
# 環境変数の値によって条件分岐する例
- cd $CODEBUILD_DIR
- |
if ["${value}" = "hoge"] ; then
echo "hoge"
else
echo "huga"
fi
方法②シェルスクリプトを作成して実行する
カレントディレクトリにsample.shを作成して配置します。
#!/usr/bin/env bash
# ループ
for file_name in `ls -1 | grep *.java`
do
aws s3 cp $CODEBUILD_DIR/${file_name}.java s3://path/to/s3/
done
# 条件分岐
if ["${Environment}" = "dev"] ; then
echo "DEV"
else
echo "no DEV"
fi
version: 0.2
env:
shell: bash
phases:
build:
commands:
# カレントディレクトリにsample.shを作成して実行する例
- ./sample.sh
コメント