cloudbuild/ci.yaml (49 lines of code) (raw):
# Copyright 2023 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.
# This build configuration can be manually triggered by the following command
#
# $ gcloud builds submit --config ci-sql.yaml
#
# This continuous deployment build configuration is not ready yet.
# TODO: Fix this build configuration.
# As a developer, customizing and using the repository, you will apply
# your changes to the repo and manually run the tests.
# For changes in the python code, run the command:
# $> poetry run pytest
# For changes in the SQL code, run the command:
# $> zetasql-formatter sql/query/*.sql
# For changes in the terraform code, run the command:
# $> terraform fmt && terraform vet
# [START cloudbuild_ci]
steps:
# Install dependencies using poetry
- id: "Install Dependencies"
name: 'docker.io/library/python:3.8-slim'
dir: $_SRC_FOLDER
entrypoint: /bin/bash
args:
- -c
- |
poetry config settings.virtualenvs.create false && \
poetry install -v --no-interaction --no-ansi --with dev
# Apply configuration parameters to templated stored procedures
- id: "Apply variables to templated stored procedures"
name: $_PYTHON_VERSION
dir: $_SRC_FOLDER
entrypoint: python
args: ["-m", "invoke", "apply-config-parameters-to-all-procedures", "--env-name=config"]
# Apply variables to templated datasets
- id: "Apply variables to templated datasets"
name: $_PYTHON_VERSION
dir: $_SRC_FOLDER
entrypoint: python
args: ["-m", "invoke", "apply-config-parameters-to-all-datasets", "--env-name=config"]
# Apply variables to templated queries
- id: "Apply variables to templated queries"
name: $_PYTHON_VERSION
dir: $_SRC_FOLDER
entrypoint: python
args: ["-m", "invoke", "apply-config-parameters-to-all-queries", "--env-name=config"]
# Run linting
- id: "Lint"
name: $_PYTHON_VERSION
entrypoint: python
args: ["-m", "invoke", "lint"]
# Run unit tests
- id: "Run Unit Tests"
name: $_PYTHON_VERSION
entrypoint: python
args: ["-m", "invoke", "test"]
# Run system tests
- id: "Run System Tests"
name: "${_PYTHON_VERSION}"
entrypoint: /bin/bash
args:
- "-c"
- |
export BASE_URL=$(cat _service_url)
export ID_TOKEN=$(cat _id_token)
python -m invoke system-test
# [END cloudbuild_ci]
# Options for the build.
# https://cloud.google.com/cloud-build/docs/build-config
options:
dynamic_substitutions: true
substitution_option: "ALLOW_LOOSE"
# Substitutions to the environment variables in the above steps.
# https://cloud.google.com/cloud-build/docs/configuring-builds/substitute-variable-values
# TODO: Fix the substitutions.
substitutions:
# _GCR_HOSTNAME is the hostname of the container registry.
_GCR_HOSTNAME: "${cloud_region}-docker.pkg.dev"
# DEPLOY_REGION is the region of the Cloud Run service.
_DEPLOY_REGION: us-central1
# PYTHON_VERSION is the version of Python to use.
_PYTHON_VERSION: python:3.9-slim'
# _REPOSITORY is the name of the container repository.
_REPOSITORY: "${pipelines_github_repo}"