# Copyright 2018 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:
  '_ZONE': 'us-west1-b'
  '_TEST_1': 'smoke_test'
  '_INPUT_IMAGE_1': 'cos-93-16623-461-15'
  '_TEST_2': 'gpu_test'
  '_INPUT_IMAGE_2': 'cos-113-18244-521-16'
  '_INPUT_PROJECT': 'cos-cloud'
  '_SERVICE_ACCOUNT': 'compute@cloud-image-docker-builder.google.com.iam.gserviceaccount.com'
  '_COS_CUSTOMIZER': 'cos_customizer'
steps:
- name: 'gcr.io/cloud-builders/docker'
  id: 'docker-build'
  entrypoint: '/bin/bash'
  args:
  - '-c'
  - |
    if [[ ${_COS_CUSTOMIZER} == 'cos_customizer' ]]; then
      docker build -f src/cmd/cos_customizer/Dockerfile -t cos_customizer .
    fi
# TEST_1 workflow
- name: '${_COS_CUSTOMIZER}'
  waitFor: 'docker-build'
  id: 'test-1-start-build'
  args: ['-local-state-workdir=.${_TEST_1}',
         'start-image-build',
         '-build-context=testing/${_TEST_1}',
         '-image-name=${_INPUT_IMAGE_1}',
         '-image-project=${_INPUT_PROJECT}',
         '-gcs-bucket=${_PROJECT_NAME}_cloudbuild',
         '-gcs-workdir=customizer-${_TEST_1}-$BUILD_ID']
- name: '${_COS_CUSTOMIZER}'
  waitFor: 'test-1-start-build'
  id: 'test-1-run-script'
  args: ['-local-state-workdir=.${_TEST_1}',
         'run-script',
         '-script=preload.sh']
- name: '${_COS_CUSTOMIZER}'
  waitFor: 'test-1-run-script'
  id: 'test-1-finish-build'
  args: ['-local-state-workdir=.${_TEST_1}',
         'finish-image-build',
         '-zone=${_ZONE}',
         '-project=$PROJECT_ID',
         '-image-name=preload-test-t1-$BUILD_ID',
         '-image-project=$PROJECT_ID',
         '-service-account=${_SERVICE_ACCOUNT}']
- name: 'gcr.io/compute-image-tools/daisy'
  waitFor: 'test-1-finish-build'
  id: 'test-1-test-build'
  args: ['-project=$PROJECT_ID', '-zone=${_ZONE}', '-var:image_name',
         'preload-test-t1-$BUILD_ID', '-var:image_project', '$PROJECT_ID',
         '-var:daisy_gcs_bucket', '${_PROJECT_NAME}-daisy-bkt',
         '-var:test_cfg', '../${_TEST_1}/preload_test.cfg', 'testing/util/run_test.wf.json']
# TEST_2 workflow
- name: 'busybox'
  args: ['sed', '-i', '-e', 's|%s|"535.274.02"|',
         'testing/${_TEST_2}/preload_test.cfg']
- name: '${_COS_CUSTOMIZER}'
  waitFor: 'docker-build'
  id: 'test-2-start-build'
  args: ['-local-state-workdir=.${_TEST_2}',
         'start-image-build',
         '-build-context=testing/${_TEST_2}',
         '-image-name=${_INPUT_IMAGE_2}',
         '-image-project=${_INPUT_PROJECT}',
         '-gcs-bucket=${_PROJECT_NAME}_cloudbuild',
         '-gcs-workdir=customizer-${_TEST_2}-$BUILD_ID']
- name: '${_COS_CUSTOMIZER}'
  waitFor: 'test-2-start-build'
  id: 'test-2-install-gpu'
  args: ['-local-state-workdir=.${_TEST_2}',
         'install-gpu',
         '-version=535.274.02',
         '-gpu-type=nvidia-tesla-t4']
- name: '${_COS_CUSTOMIZER}'
  waitFor: 'test-2-install-gpu'
  id: 'test-2-run-script'
  args: ['-local-state-workdir=.${_TEST_2}',
         'run-script',
         '-script=preload.sh']
- name: '${_COS_CUSTOMIZER}'
  waitFor: 'test-2-run-script'
  id: 'test-2-finish-build'
  args: ['-local-state-workdir=.${_TEST_2}',
         'finish-image-build',
         '-zone=${_ZONE}',
         '-project=$PROJECT_ID',
         '-image-name=preload-test-t2-$BUILD_ID',
         '-image-project=$PROJECT_ID',
         '-service-account=${_SERVICE_ACCOUNT}']
- name: 'gcr.io/compute-image-tools/daisy'
  waitFor: 'test-2-finish-build'
  id: 'test-2-test-build'
  args: ['-project=$PROJECT_ID', '-zone=${_ZONE}', '-var:image_name',
         'preload-test-t2-$BUILD_ID', '-var:image_project', '$PROJECT_ID',
         '-var:daisy_gcs_bucket', '${_PROJECT_NAME}-daisy-bkt',
         '-var:test_cfg', '../${_TEST_2}/preload_test.cfg', '-var:vm_workflow',
         './gpu_vm.wf.json', 'testing/util/run_test.wf.json']
options:
  machineType: 'N1_HIGHCPU_32'
timeout: '7200s'
