From f6363666998f74e7659e1bf8f35f739b67e180a7 Mon Sep 17 00:00:00 2001 From: Haitao Pan Date: Thu, 25 Jun 2026 11:45:44 +0800 Subject: [PATCH] =?UTF-8?q?fix(ci):=20=E8=BF=98=E5=8E=9F=20backend.tf=20?= =?UTF-8?q?=E4=B8=BA=20shell=20heredoc=EF=BC=8C=E4=BF=AE=E5=A4=8D=20Jinja2?= =?UTF-8?q?=20=E5=86=85=E8=81=94=20Python=20=E5=AF=BC=E8=87=B4=E7=9A=84=20?= =?UTF-8?q?YAML=20=E8=AF=AD=E6=B3=95=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Python 内联脚本(python3 - <<'PYEOF'...PYEOF)的代码行从列 1 开始, 超出 YAML literal block 的缩进范围,导致整个 workflow 文件 YAML 解析失败, GitHub 丢失 workflow_dispatch 触发器。 还原为 shell heredoc(< --- .../workflows/deploy-ai-workspace-iac.yaml | 35 ++++++++----------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/.github/workflows/deploy-ai-workspace-iac.yaml b/.github/workflows/deploy-ai-workspace-iac.yaml index f02c52f..73ed635 100644 --- a/.github/workflows/deploy-ai-workspace-iac.yaml +++ b/.github/workflows/deploy-ai-workspace-iac.yaml @@ -186,27 +186,20 @@ jobs: run: | set -euo pipefail # endpoints 块只能在 HCL 里配置,无法通过 -backend-config flag 传递。 - # 用 Jinja2 渲染 backend.tf,避免 shell heredoc 的引号/转义问题。 - python3 - <<'PYEOF' -import os, jinja2 -tmpl = jinja2.Template("""\ -terraform { - backend "s3" { - endpoints = { s3 = "{{ endpoint }}" } - skip_credentials_validation = true - skip_region_validation = true - skip_requesting_account_id = true - skip_metadata_api_check = true - skip_s3_checksum = true - use_path_style = true - } -} -""") -out = tmpl.render(endpoint=os.environ["TF_STATE_ENDPOINT"]) -with open("backend.tf", "w") as f: - f.write(out) -print("backend.tf rendered, endpoint=" + os.environ["TF_STATE_ENDPOINT"][:30] + "...") -PYEOF + # 用非引号 heredoc 将 endpoint URL 展开写入 backend.tf。 + cat > backend.tf << TFEOF + terraform { + backend "s3" { + endpoints = { s3 = "${TF_STATE_ENDPOINT}" } + skip_credentials_validation = true + skip_region_validation = true + skip_requesting_account_id = true + skip_metadata_api_check = true + skip_s3_checksum = true + use_path_style = true + } + } + TFEOF - name: generate.py render (YAML -> 显式 HCL + tfvars) working-directory: ${{ env.VPS_ROOT }}