bash スクリプトの実行

このページでは、ビルドステップ内で bash スクリプトを実行するように Cloud Build を構成する方法について説明します。Cloud Build を初めて使用する場合は、最初にクイックスタートビルド構成の概要をご覧ください。

ビルドステップ内で bash スクリプトを実行すると、次のような多数のワークフローを構成できます。

  • 1 つのビルドステップで複数のコマンドを実行する。
  • ファイル システムからの読み取りを行う。
  • 再試行や条件などのロジックを組み込む。
  • ログへの出力を行う(例: echo $VARNAME の実行)。

bash スクリプトをビルドステップで実行するには、bash イメージを使用するか、bash がインストールされているその他のイメージを使用します。ubuntudebian などの標準のベースイメージでは、bash スクリプトを実行できます。gclouddocker ビルダーなど、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/cloud-builders/gcloud'
  entrypoint: 'bash'
  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/cloud-builders/gcloud",
    "entrypoint": "bash",
    "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"
    ]
  }
  ]
}

次のステップ