cloudbuild/pipelines.yaml (230 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. steps: # compile pipeline - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m base_component_image.build-push -c ${_CONFIG_YAML} id: 'buildComponents' #- name: 'python:3.9-slim' # entrypoint: 'bash' # args: # - '-c' # - | # pip install poetry \ # && poetry install \ # && poetry run kfp component build python/pipelines/components/vertex --build-image --push-image # id: 'buildComponents' # Run unit tests tests and code coverage - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && poetry run pytest -c pyproject.toml -m "unit" id: 'unitTests' waitFor: ['buildComponents'] # Run integration tests tests and code coverage #- name: 'python:3.9-slim' # entrypoint: 'bash' # args: # - '-c' # - | # pip install poetry \ # && poetry install \ # && poetry run pytest -c pyproject.toml -m "inte and not (pipeline_run)" # id: 'inteTests' # waitFor: ['buildComponents'] # compile FE pipeline - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m pipelines.compiler -c ${_CONFIG_YAML} -p vertex_ai.pipelines.feature-creation.execution -o feature_engineering.yaml waitFor: ['unitTests'] id: 'CompileFEPipeline' # upload FE pipeline - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m pipelines.uploader -c ${_CONFIG_YAML} -f feature_engineering.yaml -t $SHORT_SHA -t latest waitFor: ['CompileFEPipeline'] id: 'UploadFEPipeline' # schedule FE pipeline - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m pipelines.scheduler -c ${_CONFIG_YAML} -p vertex_ai.pipelines.feature-creation.execution waitFor: ['UploadFEPipeline'] id: 'scheduleFEPipeline' # PROPENSITY --------------------------------------------- # PROPENSITY Training ------------------------------------ - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m pipelines.compiler -c ${_CONFIG_YAML} -p vertex_ai.pipelines.propensity.training -o propensity_training.yaml waitFor: ['unitTests'] id: 'CompilePropensityTrainingPipeline' - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m pipelines.uploader -c ${_CONFIG_YAML} -f propensity_training.yaml -t $SHORT_SHA -t latest waitFor: ['CompilePropensityTrainingPipeline'] id: 'UploadPropensityTrainingPipeline' - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m pipelines.scheduler -c ${_CONFIG_YAML} -p vertex_ai.pipelines.propensity.training waitFor: ['UploadPropensityTrainingPipeline'] id: 'SchedulePropensityTrainingPipeline' # PROPENSITY Prediction ----------------------------------- - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m pipelines.compiler -c ${_CONFIG_YAML} -p vertex_ai.pipelines.propensity.prediction -o propensity_prediction.yaml waitFor: ['unitTests'] id: 'CompilePropensityPredictionPipeline' - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m pipelines.uploader -c ${_CONFIG_YAML} -f propensity_prediction.yaml -t $SHORT_SHA -t latest waitFor: ['CompilePropensityPredictionPipeline'] id: 'UploadPropensityPredictionPipeline' - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m pipelines.scheduler -c ${_CONFIG_YAML} -p vertex_ai.pipelines.propensity.prediction waitFor: ['UploadPropensityPredictionPipeline'] id: 'SchedulePropensityPredictionPipeline' # CLV --------------------------------------------------- # CLV Training --------------------------------------- - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m pipelines.compiler -c ${_CONFIG_YAML} -p vertex_ai.pipelines.clv.training -o clv_training.yaml waitFor: ['unitTests'] id: 'CompileCLVTrainingPipeline' - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m pipelines.uploader -c ${_CONFIG_YAML} -f clv_training.yaml -t $SHORT_SHA -t latest waitFor: ['CompileCLVTrainingPipeline'] id: 'UploadCLVTrainingPipeline' - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m pipelines.scheduler -c ${_CONFIG_YAML} -p vertex_ai.pipelines.clv.training waitFor: ['UploadCLVTrainingPipeline'] id: 'ScheduleCLVTrainingPipeline' # CLV Prediction --------------------------------------- - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m pipelines.compiler -c ${_CONFIG_YAML} -p vertex_ai.pipelines.clv.prediction -o clv_prediction.yaml waitFor: ['unitTests'] id: 'CompileCLVPredictionPipeline' - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m pipelines.uploader -c ${_CONFIG_YAML} -f clv_prediction.yaml -t $SHORT_SHA -t latest waitFor: ['CompileCLVPredictionPipeline'] id: 'UploadCLVPredictionPipeline' - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m pipelines.scheduler -c ${_CONFIG_YAML} -p vertex_ai.pipelines.clv.prediction waitFor: ['UploadCLVPredictionPipeline'] id: 'ScheduleCLVPredictionPipeline' # Audience Segmentation ------------------------------------- # Audience Segmentation Training ------------------------ - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m pipelines.compiler -c ${_CONFIG_YAML} -p vertex_ai.pipelines.segmentation.training -o segmentation_training.yaml waitFor: ['unitTests'] id: 'CompileSegmentationTrainingPipeline' - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m pipelines.uploader -c ${_CONFIG_YAML} -f segmentation_training.yaml -t $SHORT_SHA -t latest waitFor: ['CompileSegmentationTrainingPipeline'] id: 'UploadSegmentationTrainingPipeline' - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m pipelines.scheduler -c ${_CONFIG_YAML} -p vertex_ai.pipelines.segmentation.training waitFor: ['UploadSegmentationTrainingPipeline'] id: 'ScheduleSegmentationTrainingPipeline' # Audience Segmentation Prediction ---------------------- - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m pipelines.compiler -c ${_CONFIG_YAML} -p vertex_ai.pipelines.segmentation.prediction -o segmentation_prediction.yaml waitFor: ['unitTests'] id: 'CompileSegmentationPredictionPipeline' - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m pipelines.uploader -c ${_CONFIG_YAML} -f segmentation_prediction.yaml -t $SHORT_SHA -t latest waitFor: ['CompileSegmentationPredictionPipeline'] id: 'UploadSegmentationPredictionPipeline' - name: 'python:3.9-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry \ && poetry install \ && cd python ; poetry run python -m pipelines.scheduler -c ${_CONFIG_YAML} -p vertex_ai.pipelines.segmentation.prediction waitFor: ['UploadSegmentationPredictionPipeline'] id: 'ScheduleSegmentationPredictionPipeline' #substitutions: # not needed as they are set during trigger setup using terraform. those are set based on the falues in the /config/dev.yaml and prod.yaml