cli_tools_cloudbuild.yaml (111 lines of code) (raw):
timeout: 14400s
options:
env:
- GO111MODULE=auto
- GOPROXY=https://proxy.golang.org
volumes:
- name: go-pkg
path: /go/pkg
- name: go-src
path: /go/src
substitutions:
_TAG: 'latest'
_RELEASE_PROJECT_FLAG: 'github.com/GoogleCloudPlatform/compute-image-import/cli_tools/common/utils/param.ReleaseProject'
_IMAGE_PROJECT: 'compute-image-import'
steps:
# Build import_precheck.
- name: 'golang'
dir: 'cli_tools/import_precheck'
args: ['go', 'build', '-o=/workspace/linux/import_precheck']
env: ['CGO_ENABLED=0']
- name: 'golang'
dir: 'cli_tools/import_precheck'
args: ['go', 'build', '-o=/workspace/windows/import_precheck.exe']
env: ['GOOS=windows']
- name: 'golang'
dir: 'cli_tools/import_precheck'
args: ['go', 'build', '-o=/workspace/linux/import_precheck_32bit']
env:
- CGO_ENABLED=0
- GOARCH=386
- name: 'golang'
dir: 'cli_tools/import_precheck'
args: ['go', 'build', '-o=/workspace/windows/import_precheck_32bit.exe']
env:
- GOOS=windows
- GOARCH=386
# Build gce_vm_image_import.
- name: 'golang'
dir: 'cli_tools/gce_vm_image_import'
args: ['go', 'build', '-o=/workspace/linux/gce_vm_image_import', '-ldflags=-X $_RELEASE_PROJECT_FLAG=$_IMAGE_PROJECT']
env: ['CGO_ENABLED=0']
- name: 'gcr.io/kaniko-project/executor:v1.1.0'
args:
- --destination=gcr.io/$_IMAGE_PROJECT/gce_vm_image_import:$_TAG
- --destination=gcr.io/$_IMAGE_PROJECT/gce_vm_image_import:$COMMIT_SHA
- --context=/workspace
- --dockerfile=gce_vm_image_import.Dockerfile
# Build gce_onestep_image_import.
- name: 'golang'
dir: 'cli_tools/gce_onestep_image_import'
args: ['go', 'build', '-o=/workspace/linux/gce_onestep_image_import', '-ldflags=-X $_RELEASE_PROJECT_FLAG=$_IMAGE_PROJECT']
env: ['CGO_ENABLED=0']
- name: 'gcr.io/kaniko-project/executor:v1.1.0'
args:
- --destination=gcr.io/$_IMAGE_PROJECT/gce_onestep_image_import:$_TAG
- --destination=gcr.io/$_IMAGE_PROJECT/gce_onestep_image_import:$COMMIT_SHA
- --context=/workspace
- --dockerfile=gce_onestep_image_import.Dockerfile
# Build gce_vm_image_export.
- name: 'golang'
dir: 'cli_tools/gce_vm_image_export'
args: ['go', 'build', '-o=/workspace/linux/gce_vm_image_export', '-ldflags=-X $_RELEASE_PROJECT_FLAG=$_IMAGE_PROJECT']
env: ['CGO_ENABLED=0']
- name: 'gcr.io/kaniko-project/executor:v1.1.0'
args:
- --destination=gcr.io/$_IMAGE_PROJECT/gce_vm_image_export:$_TAG
- --destination=gcr.io/$_IMAGE_PROJECT/gce_vm_image_export:$COMMIT_SHA
- --context=/workspace
- --dockerfile=gce_vm_image_export.Dockerfile
# Build gce_ovf_import.
- name: 'golang'
dir: 'cli_tools/gce_ovf_import'
args: ['go', 'build', '-o=/workspace/linux/gce_ovf_import', '-ldflags=-X $_RELEASE_PROJECT_FLAG=$_IMAGE_PROJECT']
env: ['CGO_ENABLED=0']
- name: 'gcr.io/kaniko-project/executor:v1.1.0'
args:
- --destination=gcr.io/$_IMAGE_PROJECT/gce_ovf_import:$_TAG
- --destination=gcr.io/$_IMAGE_PROJECT/gce_ovf_import:$COMMIT_SHA
- --context=/workspace
- --dockerfile=gce_ovf_import.Dockerfile
# Build gce_ovf_export.
- name: 'golang'
dir: 'cli_tools/gce_ovf_export'
args: ['go', 'build', '-o=/workspace/linux/gce_ovf_export', '-ldflags=-X $_RELEASE_PROJECT_FLAG=$_IMAGE_PROJECT']
env: ['CGO_ENABLED=0']
- name: 'gcr.io/kaniko-project/executor:v1.1.0'
args:
- --destination=gcr.io/$_IMAGE_PROJECT/gce_ovf_export:$_TAG
- --destination=gcr.io/$_IMAGE_PROJECT/gce_ovf_export:$COMMIT_SHA
- --context=/workspace
- --dockerfile=gce_ovf_export.Dockerfile
# Copy Linux binaries to GCS
- name: 'gcr.io/cloud-builders/gsutil'
args: ['cp', '/workspace/linux/*', 'gs://$_IMAGE_PROJECT/$_TAG/linux/']
# Copy Windows binaries to GCS
- name: 'gcr.io/cloud-builders/gsutil'
args: ['cp', '/workspace/windows/*', 'gs://$_IMAGE_PROJECT/$_TAG/windows/']
# Push Wrappers to all the Artifact Registry regions
- name: 'google/cloud-sdk:alpine'
args:
- 'bash'
- '-c'
- |
GCP_PROJECTS=($_IMAGE_PROJECT)
REGIONS=()
readarray -t REGIONS < ./supported-regions
TOOLS=("gce_vm_image_import" "gce_onestep_image_import" "gce_vm_image_export" "gce_ovf_import" "gce_ovf_export")
for _PROJECT in ${GCP_PROJECTS[@]}
do
for _REGION in ${REGIONS[@]}
do
for _TOOL in ${TOOLS[@]}
do
echo "--> Deploying... $$_TOOL -> $$_REGION in $$_PROJECT project."
gcloud container images add-tag gcr.io/$$_PROJECT/$$_TOOL:$_TAG $$_REGION-docker.pkg.dev/$$_PROJECT/wrappers/$$_TOOL:$_TAG -q
gcloud container images add-tag gcr.io/$$_PROJECT/$$_TOOL:$COMMIT_SHA $$_REGION-docker.pkg.dev/$$_PROJECT/wrappers/$$_TOOL:$COMMIT_SHA -q
done
done
echo "----> Deployed all tools for all regions in $$_PROJECT project"
done