asmcli/cloudbuild-main.yaml (144 lines of code) (raw):
---
steps:
########
# SETUP
########
- name: 'gcr.io/cloud-builders/docker'
id: 'build-tester-image'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/${_IMAGE_NAME}', 'asmcli/']
- name: 'gcr.io/cloud-builders/docker'
id: 'publish-tester-image'
args: ['push', 'gcr.io/$PROJECT_ID/${_IMAGE_NAME}']
- name: 'gcr.io/$PROJECT_ID/${_IMAGE_NAME}'
entrypoint: '/usr/bin/bazel'
args: ['build', 'merge']
- name: 'bash'
id: 'check-commit-artifacts'
args:
- '-eEuo'
- 'pipefail'
- '-c'
- |-
if ! diff ${_BAZEL_BIN}/${_SCRIPT_NAME} asmcli/${_SCRIPT_NAME}; then
echo "ERROR: please run 'scripts/release-asm/precommit' and commit the changes!"
exit 1
fi
- name: node
entrypoint: npm
args: ['install']
- name: 'gcr.io/$PROJECT_ID/${_IMAGE_NAME}'
dir: 'asmcli'
id: 'lint-with-shellcheck'
entrypoint: 'shellcheck'
args:
- '-e'
- 'SC2230,SC2317'
- '${_SCRIPT_NAME}'
- name: 'gcr.io/$PROJECT_ID/${_IMAGE_NAME}'
dir: 'asmcli'
id: 'script-version-check'
entrypoint: '/bin/bash'
args:
- '-c'
- >
./tests/script_version_check.sh
- name: 'gcr.io/$PROJECT_ID/${_IMAGE_NAME}'
dir: 'asmcli'
id: 'lint-with-yamllint'
entrypoint: 'yamllint'
args:
- '../asm'
- name: 'gcr.io/$PROJECT_ID/${_IMAGE_NAME}'
id: 'lint-variables'
entrypoint: '/usr/bin/bazel'
args: ['test', 'lint_variables', '--test_output=all']
- name: 'gcr.io/cloud-builders/gcloud'
dir: 'asmcli'
id: 'fetch-secrets'
entrypoint: '/bin/bash'
args:
- '-c'
- |
date
gcloud secrets versions access latest \
--secret="${_SECRET_NAME}" \
--format='get(payload.data)' \
--project="${PROJECT_ID}" \
| tr '_-' '/+' \
| base64 -d > "${_KEY_FILE}"
env:
- 'USE_GKE_GCLOUD_AUTH_PLUGIN=True'
- name: 'gcr.io/$PROJECT_ID/${_IMAGE_NAME}'
dir: 'asmcli'
id: 'setup-long-term-cluster'
entrypoint: '/bin/bash'
args:
- '-c'
- >
./tests/setup_longterm_cluster
env:
- 'SERVICE_ACCOUNT=${_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com'
- 'KEY_FILE=${_KEY_FILE}'
- 'USE_GKE_GCLOUD_AUTH_PLUGIN=True'
- '_CI_ASM_IMAGE_LOCATION=${_IMAGE_LOCATION}'
- '_CI_ASM_PKG_LOCATION=${_PKG_LOCATION}'
- '_CI_ASM_KPT_BRANCH=${_ASM_PKG_BRANCH}'
#############
# FAST TESTS
#############
- name: 'gcr.io/$PROJECT_ID/${_IMAGE_NAME}'
id: 'unit-test'
entrypoint: '/usr/bin/bazel'
args: ['test', 'test', "--test_output=streamed"]
- name: 'gcr.io/$PROJECT_ID/${_IMAGE_NAME}'
dir: 'asmcli'
id: 'run-release-debug'
entrypoint: '/bin/bash'
args:
- '-c'
- >
../scripts/release-asm/release_asm_installer
env:
- '_DEBUG=1'
timeout: 10s
#############
# SLOW TESTS
#############
- name: 'gcr.io/$PROJECT_ID/${_IMAGE_NAME}'
dir: 'asmcli'
id: 'run-basic-suite'
entrypoint: '/bin/bash'
args:
- '-c'
- >
./tests/run_basic_suite
--PROJECT_ID "${PROJECT_ID}"
--BUILD_ID "${BUILD_ID}"
env:
- 'SERVICE_ACCOUNT=${_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com'
- 'KEY_FILE=${_KEY_FILE}'
- 'USE_GKE_GCLOUD_AUTH_PLUGIN=True'
- '_CI_ASM_IMAGE_LOCATION=${_IMAGE_LOCATION}'
- '_CI_ASM_PKG_LOCATION=${_PKG_LOCATION}'
- '_CI_ASM_KPT_BRANCH=${_ASM_PKG_BRANCH}'
timeout: 900s
- name: 'gcr.io/$PROJECT_ID/${_IMAGE_NAME}'
dir: 'asmcli'
id: 'run-basic-suite-managed'
entrypoint: '/bin/bash'
args:
- '-c'
- >
./tests/run_basic_suite_managed
--PROJECT_ID "${PROJECT_ID}"
--BUILD_ID "${BUILD_ID}"
env:
- 'SERVICE_ACCOUNT=${_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com'
- 'KEY_FILE=${_KEY_FILE}'
- 'USE_GKE_GCLOUD_AUTH_PLUGIN=True'
- '_CI_ASM_IMAGE_LOCATION=${_IMAGE_LOCATION}'
- '_CI_ASM_PKG_LOCATION=${_PKG_LOCATION}'
- '_CI_ASM_KPT_BRANCH=${_ASM_PKG_BRANCH}'
timeout: 900s
substitutions:
_BUCKET_NAME: my-gcs-bucket
_CLUSTER_LOCATION: us-central1-c
_IMAGE_NAME: gcloud-with-kpt
_SCRIPT_NAME: asmcli
_ASM_PKG_BRANCH: $COMMIT_SHA
_SERVICE_ACCOUNT: asm-installer
_SECRET_NAME: asm-installer-creds
_KEY_FILE: key.json
_BAZEL_BIN: bazel-bin
timeout: 3600s # 1 hour