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