# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the License);
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an AS IS BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

substitutions:
  '_PROJECT_NAME': ''
  '_SERVICE_ACCOUNT': 'compute@cloud-image-docker-builder.google.com.iam.gserviceaccount.com'
  '_COS_CUSTOMIZER': 'cos_customizer'

options:
  substitutionOption: 'ALLOW_LOOSE'

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  entrypoint: '/bin/bash'
  args:
  - '-c'
  - |
    gcloud builds submit --config=testing/timeout_test/timeout_test.yaml --substitutions=_PROJECT_NAME=${_PROJECT_NAME},_SERVICE_ACCOUNT=${_SERVICE_ACCOUNT},_COS_CUSTOMIZER=${_COS_CUSTOMIZER} . | tee /build.log
    grep "did not complete within the specified timeout" /build.log > /dev/null
timeout: '7200s'
