blob: 06d523062cad526b50919d1f4eaffd3bc0f891f2 [file] [log] [blame]
# Copyright 2021 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:
'_TEST': 'ubuntu_ova_test'
'_INPUT_IMAGE': 'https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.ova'
steps:
# Build cos-customizer and tools container
- name: 'gcr.io/cloud-builders/bazel'
args: ['run', '--spawn_strategy=standalone', ':cos_customizer', '--', '--norun']
- name: 'gcr.io/cloud-builders/docker'
entrypoint: 'bash'
args:
- '-c'
- |
cat <<EOF| docker build -t tools -
FROM ubuntu
RUN apt-get update && apt-get install -y qemu-utils
EOF
# Download input
- name: 'gcr.io/cloud-builders/wget'
args: ['-O', 'input.ova', '${_INPUT_IMAGE}']
# Convert to GCE image
- name: 'tools'
entrypoint: 'bash'
args:
- '-c'
- |
set -e
mkdir ova
pushd ova
mv ../input.ova .
tar xf input.ova
echo "Converting vmdk to disk.raw"
qemu-img convert -O raw *.vmdk disk.raw
tar czf ubuntu_gce.tar.gz disk.raw
- name: 'gcr.io/cloud-builders/gsutil'
args: ['cp', 'ova/ubuntu_gce.tar.gz', 'gs://${PROJECT_ID}_cloudbuild/build-ova-${BUILD_ID}/ubuntu_gce.tar.gz']
- name: 'gcr.io/cloud-builders/gcloud'
args: ['compute', 'images', 'create', 'input-${BUILD_ID}',
'--source-uri', 'gs://${PROJECT_ID}_cloudbuild/build-ova-${BUILD_ID}/ubuntu_gce.tar.gz',
'--project', '${PROJECT_ID}']
- name: 'gcr.io/cloud-builders/gsutil'
args: ['rm', 'gs://${PROJECT_ID}_cloudbuild/build-ova-${BUILD_ID}/ubuntu_gce.tar.gz']
# Run cos-customizer
- name: 'bazel:cos_customizer'
args: ['start-image-build',
'-build-context=testing/${_TEST}',
'-image-name=input-${BUILD_ID}',
'-image-project=${PROJECT_ID}',
'-gcs-bucket=${PROJECT_ID}_cloudbuild',
'-gcs-workdir=customizer-$BUILD_ID']
- name: 'bazel:cos_customizer'
args: ['run-script',
'-script=preload.sh']
- name: 'bazel:cos_customizer'
args: ['finish-image-build',
'-zone=us-west1-b',
'-project=${PROJECT_ID}',
'-image-name=preload-test-$BUILD_ID',
'-image-project=${PROJECT_ID}']
# Delete input image
- name: 'gcr.io/cloud-builders/gcloud'
args: ['compute', 'images', 'delete', 'input-${BUILD_ID}', '-q']
# Validate output image
- name: 'gcr.io/compute-image-tools/daisy'
args: ['-project=$PROJECT_ID', '-zone=us-west1-b', '-var:image_name',
'preload-test-$BUILD_ID', '-var:image_project', '$PROJECT_ID',
'-var:test_cfg', '../${_TEST}/preload_test.cfg', 'testing/util/run_test.wf.json']
options:
machineType: 'N1_HIGHCPU_8'
timeout: '7200s'