このページでは、ビルドステップ内で bash スクリプトを実行するように Cloud Build を構成する方法について説明します。Cloud Build を初めて使用する場合は、最初にクイックスタートとビルド構成の概要をご覧ください。
ビルドステップ内で bash スクリプトを実行すると、次のような多数のワークフローを構成できます。
- 1 つのビルドステップで複数のコマンドを実行する。
- ファイル システムからの読み取りを行う。
- 再試行や条件などのロジックを組み込む。
- ログへの出力を行う(例:
echo $VARNAME
の実行)。
bash スクリプトをビルドステップで実行するには、bash
イメージを使用するか、bash
がインストールされているその他のイメージを使用します。ubuntu
や debian
などの標準のベースイメージでは、bash スクリプトを実行できます。gcloud
や docker
ビルダーなど、bash
がインストールされているサポート対象のクラウド ビルダーも一部あります。
イメージに bash がインストールされているかどうかを確認するには、イメージの Dockerfile を確認してください。
インライン bash スクリプトの実行
bash
イメージを使用して bash コマンドを実行するには、ビルドステップの name
として bash
を指定し、args フィールドにコマンドを指定します。
YAML
steps:
- name: 'bash'
args: ['echo', 'I am running a bash command']
JSON
{
"steps": [
{
"name": "bash",
"args": [
"echo",
"I am running a bash command"
]
}
]
}
使用しているイメージに bash
があらかじめパッケージ化されているものの bash
がデフォルトのエントリ ポイントでない場合は、bash を指す entrypoint
フィールドを追加します。
YAML
steps:
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: 'gcloud'
args:
- '-eEuo'
- 'pipefail'
- '-c'
- |-
if (( $(date '+%-e') % 2 )); then
echo "today is an odd day"
else
echo "today is an odd day, with an even number"
fi
JSON
{
"steps": [
{
"name": "gcr.io/google.com/cloudsdktool/cloud-sdk"
"entrypoint": "gcloud"
"args": [
"-eEuo",
"pipefail",
"-c",
"if (( $(date '+%-e') % 2 )); then\n echo \"today is an odd day\"\nelse\n echo \"today is an odd day, with an even number\"\nfi"
]
}
]
}
上のコードの -c
フラグは、複数行コマンドを実行するために使用します。-c
の後に渡した文字列はすべてコマンドとして扱われます。-c
を使用した bash コマンドの実行の詳細については、bash のドキュメントをご覧ください。
ディスクでの bash スクリプトの実行
bash スクリプトをファイルに保存している場合は、このファイルをビルドソースとともに保存し、ビルド構成ファイル内でスクリプト ファイルを参照します。
YAML
steps:
- name: 'bash'
args: ['./myscript.bash']
JSON
{
"steps": [
{
"name": "bash",
"args": [
"./myscript.bash"
]
}
]
}
使用しているイメージのデフォルトのエントリ ポイントが bash スクリプトでない場合、bash スクリプトを使用するには、bash を指す entrypoint
フィールドを追加します。
YAML
steps:
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: 'bash'
args: ['tools/myScript.sh','--foo']
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/gcloud",
"entrypoint": "bash",
"args": [
"tools/myScript.sh",
"--foo"
]
}
]
}
次のステップ
- ビルドを手動で開始する方法を学習する。
- トリガーを使用してビルドを自動化する方法を学習する。
- ビルドステップの順序を構成する方法を学習する。
- コミュニティ提供のビルダーとカスタム ビルダーを使用する方法を学習する。