From cac6b6a98180faab308594912248a26e01f2f97a Mon Sep 17 00:00:00 2001 From: "Zimin A.N." Date: Wed, 13 May 2026 00:24:33 +0300 Subject: [PATCH] =?UTF-8?q?fix(ci):=20use=20printf=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?commit/MR=20description=20avoiding=20YAML=20literal=20block=20b?= =?UTF-8?q?reak?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pipeline 6815 failed instantly с 'could not find expected : at line 625' — multi-line shell strings внутри script: - | литерального блока YAML ломали parser потому что continuation lines не были indented к уровню блока (lines 625, 627-629 в column 0 — YAML видел их как new key). Fix: собрать message строкой через printf '%b' с явными \n. Однострочные shell variables — YAML парсит без проблем независимо от содержимого внутри quotes. --- .gitlab-ci.yml | 31 ++++++------------------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cc0f905..419bbef 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -619,35 +619,16 @@ propose-prod-image-bump: fi # 4. Commit + push branch. + # printf '%b' разворачивает \n в реальные newlines внутри одной shell + # строки — избегаем multi-line YAML quoting issues (literal block scalar + # ломается на unindented continuation lines). git add charts/ordinis/values-prod.yaml - git commit -m "chore(release): bump prod image к ${IMAGE_TAG} - -Auto-generated ordinis-CI release pipeline. - -Source: ${CI_PROJECT_URL}/-/commit/${CI_COMMIT_SHA} -Pipeline: ${CI_PIPELINE_URL} -Tag: ${VERSION} -" + COMMIT_MSG=$(printf '%b' "chore(release): bump prod image к ${IMAGE_TAG}\n\nAuto-generated ordinis-CI release pipeline.\n\nSource: ${CI_PROJECT_URL}/-/commit/${CI_COMMIT_SHA}\nPipeline: ${CI_PIPELINE_URL}\nTag: ${VERSION}") + git commit -m "$COMMIT_MSG" git push origin "$BRANCH" # 5. Create MR через GitLab API. - # description через --data-urlencode сохраняет переносы строк. - MR_DESC="Auto-generated ordinis CI release pipeline после semantic-release ${VERSION}. - -**Что меняется:** \`image.tag\` в \`charts/ordinis/values-prod.yaml\` → \`${IMAGE_TAG}\` (immutable SHA tag, гарантирует что ноды pull'нут именно этот digest). - -**Source:** -- Ordinis commit: ${CI_PROJECT_URL}/-/commit/${CI_COMMIT_SHA} -- Tag pipeline: ${CI_PIPELINE_URL} - -**Deploy после merge:** infra-pipeline auto-катит helm upgrade в \`ordinis-prod\` namespace через manual-gated \`deploy-prod\` job (как обычно). - -**Verify checklist:** -- [ ] CI 'helm-lint' pipeline зелёный (validate charts) -- [ ] После merge play 'deploy-prod' job -- [ ] \`curl /api/v1/version\` показывает \`commit: ${CI_COMMIT_SHORT_SHA}\` и \`tag: ${VERSION}\` -- [ ] Pods Running 2/2 на обоих writer replicas -- [ ] Все 5 deployment'ов на одном digest (no split-brain)" + MR_DESC=$(printf '%b' "Auto-generated ordinis CI release pipeline после semantic-release ${VERSION}.\n\n**Что меняется:** \`image.tag\` в \`charts/ordinis/values-prod.yaml\` → \`${IMAGE_TAG}\` (immutable SHA tag, гарантирует что ноды pull'нут именно этот digest).\n\n**Source:**\n- Ordinis commit: ${CI_PROJECT_URL}/-/commit/${CI_COMMIT_SHA}\n- Tag pipeline: ${CI_PIPELINE_URL}\n\n**Deploy после merge:** infra-pipeline auto-катит helm upgrade в \`ordinis-prod\` namespace через manual-gated \`deploy-prod\` job (как обычно).\n\n**Verify checklist:**\n- [ ] CI 'helm-lint' pipeline зелёный (validate charts)\n- [ ] После merge play 'deploy-prod' job\n- [ ] \`curl /api/v1/version\` показывает \`commit: ${CI_COMMIT_SHORT_SHA}\` и \`tag: ${VERSION}\`\n- [ ] Pods Running 2/2 на обоих writer replicas\n- [ ] Все 5 deployment'ов на одном digest (no split-brain)") curl -sS --fail \ --request POST \