stages: - generate - trigger - deploy generate-pipeline: stage: generate image: alpine:latest before_script: - apk add --no-cache bash findutils script: - echo "=== DEBUG INFO ===" - echo "CI_PIPELINE_SOURCE=$CI_PIPELINE_SOURCE" - echo "CI_COMMIT_BRANCH=$CI_COMMIT_BRANCH" - echo "CI_MERGE_REQUEST_SOURCE_BRANCH_NAME=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" - pwd && ls -la - echo "=== Finding terragrunt files ===" - find live -name "terragrunt.hcl" -not -path "*/.terragrunt-cache/*" | head -20 || echo "No files found" - echo "=== Generating pipeline ===" - chmod +x ./scripts/generate-pipeline.sh - ./scripts/generate-pipeline.sh - echo "=== Generated pipeline content ===" - cat .gitlab-ci.generated.yml artifacts: paths: - .gitlab-ci.generated.yml expire_in: 1 hour rules: - if: '$CI_PIPELINE_SOURCE == "pipeline"' - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - if: '$CI_COMMIT_BRANCH == "stage"' - if: '$CI_COMMIT_BRANCH == "master"' - if: '$CI_COMMIT_BRANCH =~ /^feature\/.*/' # Prod environment trigger-downstream-prod: stage: trigger needs: - generate-pipeline trigger: include: - artifact: .gitlab-ci.generated.yml job: generate-pipeline strategy: depend forward: pipeline_variables: true yaml_variables: true variables: TERRAFORM_IMAGE_NAME: cr.yandex/crp3ccidau046kdj8g9q/terraform/terragrunt:v9.11 YC_SERVICE_ACCOUNT_KEY_FILE: ${YC_PROD_SERVICE_ACCOUNT_KEY_FILE} YC_CLOUD_ID: ${YC_CLOUD_ID} YC_STAGE_FOLDER_ID: ${YC_STAGE_FOLDER_ID} YC_PROD_FOLDER_ID: ${YC_PROD_FOLDER_ID} YC_PREPROD_FOLDER_ID: ${YC_PREPROD_FOLDER_ID} S3_ACCESS_KEY: ${S3_PROD_ACCESS_KEY} S3_SECRET_KEY: ${S3_PROD_SECRET_KEY} S3_STATE_BUCKET: ${S3_PROD_STATE_BUCKET} AWS_ACCESS_KEY_ID: ${S3_PROD_ACCESS_KEY} AWS_SECRET_ACCESS_KEY: ${S3_PROD_SECRET_KEY} TARGET_ENV: "prod" rules: - if: '$CI_PIPELINE_SOURCE == "pipeline"' - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - if: '$CI_COMMIT_BRANCH == "master"' - if: '$CI_COMMIT_BRANCH =~ /^feature\/.*/' ## mirror-contour: stage: deploy image: alpine:3.21 variables: GIT_DEPTH: "0" before_script: - apk add --no-cache git ca-certificates script: - git push --force "$CONTOUR_MIRROR_PUSH_URL" "$CI_COMMIT_SHA:refs/heads/contour" rules: - if: '$CI_COMMIT_BRANCH == "contour" && $CI_PIPELINE_SOURCE == "push"'