codebuildで条件分岐,ループ処理を利用する方法

codebuild AWS

概要

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

コメント

タイトルとURLをコピーしました