ci-cloudbuild.yaml (85 lines of code) (raw):

# Copyright 2022 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 # # https://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. steps: - id: 'update-versions' name: gcr.io/cloud-builders/gcloud waitFor: ['-'] entrypoint: bash args: - -exc - | apt-get update apt-get install jq -y cd frontend jq '.version="${TAG_NAME}"' package.json > package.json.tmp && mv package.json.tmp package.json cd ../api/v1 jq '.version="${TAG_NAME}"' package.json > package.json.tmp && mv package.json.tmp package.json - id: 'ui-build' name: 'gcr.io/cloud-builders/docker' dir: 'frontend' args: - build - "--tag=gcr.io/$_PROJECT_ID/datashare-ui:$TAG_NAME" - "--file=./Dockerfile" - . - id: 'push-ui-build' name: 'gcr.io/cloud-builders/docker' args: ['push', "gcr.io/$_PROJECT_ID/datashare-ui:$TAG_NAME"] waitFor: ['ui-build'] - id: 'api-build' name: 'gcr.io/cloud-builders/docker' args: - build - "--tag=gcr.io/$_PROJECT_ID/datashare-api:$TAG_NAME" - "--file=./api/v1/Dockerfile.api" - . waitFor: ['-'] - id: 'push-api-build' name: 'gcr.io/cloud-builders/docker' args: ['push', "gcr.io/$_PROJECT_ID/datashare-api:$TAG_NAME"] waitFor: ['api-build'] - id: 'branch-name' name: 'alpine' entrypoint: 'sh' dir: 'terraform/deploy' args: - '-c' - | echo "***********************" echo "$BRANCH_NAME" echo "***********************" - id: 'tf-init' name: 'hashicorp/terraform:1.1.7' entrypoint: 'sh' dir: 'terraform/deploy' args: - '-c' - | terraform init -backend-config=./config.gcs.tfbackend # [START tf-select-workspace] - id: 'tf-select-workspace' name: 'hashicorp/terraform:1.1.7' dir: 'terraform/deploy' args: ['workspace', 'select', '${_ENVIRONMENT}'] # [END tf-select-workspace] # [START tf-plan] - id: 'tf-plan' name: 'hashicorp/terraform:1.1.7' entrypoint: 'sh' args: - '-c' - | cd terraform/deploy terraform plan -var-file="./env/${_ENVIRONMENT}.tfvars" -var="tag=$TAG_NAME" # [END tf-plan] # [START tf-apply] - id: 'tf-apply' name: 'hashicorp/terraform:1.1.7' entrypoint: 'sh' args: - '-c' - | chmod 777 terraform/modules/ingestion-function/scripts/create-cloud-function-zip.sh cd terraform/deploy terraform apply -auto-approve -var-file="./env/${_ENVIRONMENT}.tfvars" -var="tag=$TAG_NAME" # [END tf-apply] substitutions: _ENVIRONMENT: '${_PROJECT_ID}' options: logging: CLOUD_LOGGING_ONLY images: - "gcr.io/$_PROJECT_ID/datashare-ui:$TAG_NAME" - "gcr.io/$_PROJECT_ID/datashare-api:$TAG_NAME" timeout: 1200s