Search code examples
google-cloud-build

Multiple commands in the same build step in Google Cloud Builder


I want to run our automated backend test suite on Google Cloud Builder environment. However, naturally, I bumped into the need to install various dependencies and prerequisites within the Cloud Builder so that our final test runner (php tests/run) can run.

Here's my current cloudbuild.yaml:

steps:

  - name: 'ubuntu'
    args: ['bash', './scripts/install-prerequisites.sh', '&&', 'composer install -n -q --prefer-dist', '&&', 'php init --overwrite=y', '&&', 'php tests/run']

At the moment, the chaining of multiple commands doesn't work. The only thing that's executed is the bash ./scripts/install-prerequisites.sh part. How do I get all of these commands get executed in order?


Solution

  • You have 2 options to achieve this at the moment I believe:

    1. create a script that has the sequence of commands you'd like and call the script directly:
    # cloudbuild.yaml
    steps:
      - name: 'ubuntu'
        args: ['./my-awesome-script.sh']
    
    # my-awesome-script.sh
    /usr/bin/env/bash
    
    set -eo pipefail
    
    ./scripts/install-prerequisites.sh
    composer install -n -q --prefer-dist
    php init --overwrite=y
    php tests/run
    
    1. Call bash -c with all the commands you'd like to follow:
    steps:
      - name: 'ubuntu'
        args: ['bash', '-c', './scripts/install-prerequisites.sh && composer install -n -q --prefer-dist && php init --overwrite=y && php tests/run']