mirror of
https://gitlab.sarex.io/infra/terraform-contour-mirror.git
synced 2026-08-05 18:31:00 +03:00
update gitlab ci
This commit is contained in:
parent
465325a679
commit
c931431c11
@ -2,7 +2,6 @@ stages:
|
||||
- generate
|
||||
- trigger
|
||||
|
||||
# Генерация динамического пайплайна на основе структуры live/
|
||||
generate-pipeline:
|
||||
stage: generate
|
||||
image: alpine:latest
|
||||
@ -18,10 +17,7 @@ generate-pipeline:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
- if: '$CI_COMMIT_BRANCH == "master" || $CI_COMMIT_BRANCH == "main"'
|
||||
- if: '$CI_COMMIT_BRANCH =~ /^feature\/.*/'
|
||||
tags:
|
||||
- yc
|
||||
|
||||
# Запуск downstream пайплайна с сгенерированной конфигурацией
|
||||
trigger-downstream:
|
||||
stage: trigger
|
||||
trigger:
|
||||
@ -33,5 +29,3 @@ trigger-downstream:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
- if: '$CI_COMMIT_BRANCH == "master" || $CI_COMMIT_BRANCH == "main"'
|
||||
- if: '$CI_COMMIT_BRANCH =~ /^feature\/.*/'
|
||||
tags:
|
||||
- yc
|
||||
|
||||
@ -1,20 +1,21 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Скрипт для динамической генерации GitLab CI пайплайна
|
||||
# Сканирует структуру live/ и создает джобы для каждого компонента
|
||||
|
||||
OUTPUT_FILE=".gitlab-ci.generated.yml"
|
||||
|
||||
# Функция для экранирования YAML
|
||||
yaml_escape() {
|
||||
echo "$1" | sed 's/"/\\"/g'
|
||||
}
|
||||
|
||||
# Начало файла
|
||||
cat > "$OUTPUT_FILE" << 'EOF'
|
||||
# Автоматически сгенерированный файл GitLab CI
|
||||
# НЕ РЕДАКТИРУЙТЕ ВРУЧНУЮ! Этот файл генерируется скриптом scripts/generate-pipeline.sh
|
||||
|
||||
workflow:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
- if: '$CI_COMMIT_BRANCH == "master" || $CI_COMMIT_BRANCH == "main"'
|
||||
- if: '$CI_COMMIT_BRANCH =~ /^feature\/.*/'
|
||||
- if: '$CI_PIPELINE_SOURCE == "pipeline"'
|
||||
- when: always
|
||||
|
||||
stages:
|
||||
- validate
|
||||
@ -23,26 +24,20 @@ stages:
|
||||
|
||||
EOF
|
||||
|
||||
# Поиск всех terragrunt.hcl файлов в live/
|
||||
find live -name "terragrunt.hcl" -not -path "*/.terragrunt-cache/*" | sort | while read -r config_file; do
|
||||
# Извлечение пути компонента
|
||||
component_dir=$(dirname "$config_file")
|
||||
relative_path=$(echo "$component_dir" | sed 's|^live/||')
|
||||
|
||||
# Парсинг окружения и компонента из пути
|
||||
# Формат: live/{env}/{component}/terragrunt.hcl
|
||||
# live/{env}/{component}/terragrunt.hcl
|
||||
env=$(echo "$relative_path" | cut -d'/' -f1)
|
||||
component=$(echo "$relative_path" | cut -d'/' -f2)
|
||||
|
||||
# Пропускаем если это не компонент (например, env.hcl)
|
||||
if [ -z "$component" ] || [ "$component" = "$env" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# Формирование имени джобы
|
||||
job_prefix="${env}-${component}"
|
||||
|
||||
# Определение переменных окружения для Yandex Cloud
|
||||
case "$env" in
|
||||
stage)
|
||||
folder_var="YC_STAGE_FOLDER_ID"
|
||||
@ -58,7 +53,6 @@ find live -name "terragrunt.hcl" -not -path "*/.terragrunt-cache/*" | sort | whi
|
||||
;;
|
||||
esac
|
||||
|
||||
# Джоба validate
|
||||
cat >> "$OUTPUT_FILE" << EOF
|
||||
validate-${job_prefix}:
|
||||
stage: validate
|
||||
@ -87,13 +81,13 @@ validate-${job_prefix}:
|
||||
rules:
|
||||
- if: '\$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
- if: '\$CI_COMMIT_BRANCH == "master" || \$CI_COMMIT_BRANCH == "main"'
|
||||
- if: '\$CI_PIPELINE_SOURCE == "pipeline"'
|
||||
tags:
|
||||
- yc
|
||||
interruptible: true
|
||||
|
||||
EOF
|
||||
|
||||
# Джоба plan
|
||||
cat >> "$OUTPUT_FILE" << EOF
|
||||
plan-${job_prefix}:
|
||||
stage: plan
|
||||
@ -121,6 +115,7 @@ plan-${job_prefix}:
|
||||
rules:
|
||||
- if: '\$CI_COMMIT_BRANCH == "master" || \$CI_COMMIT_BRANCH == "main"'
|
||||
- if: '\$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
- if: '\$CI_PIPELINE_SOURCE == "pipeline"'
|
||||
tags:
|
||||
- yc
|
||||
interruptible: true
|
||||
@ -133,7 +128,6 @@ plan-${job_prefix}:
|
||||
|
||||
EOF
|
||||
|
||||
# Джоба apply (manual для prod, автоматическая для остальных)
|
||||
if [ "$env" = "prod" ]; then
|
||||
when_clause="manual"
|
||||
else
|
||||
@ -167,6 +161,8 @@ apply-${job_prefix}:
|
||||
rules:
|
||||
- if: '\$CI_COMMIT_BRANCH == "master" || \$CI_COMMIT_BRANCH == "main"'
|
||||
when: ${when_clause}
|
||||
- if: '\$CI_PIPELINE_SOURCE == "pipeline"'
|
||||
when: ${when_clause}
|
||||
tags:
|
||||
- yc
|
||||
interruptible: true
|
||||
|
||||
Loading…
Reference in New Issue
Block a user