xworkspace-console/CLAUDE.md
Haitao Pan 9b3687e189 fix(ci): 消除 workflow 所有 heredoc,改为外置脚本调用
- 删除 Configure remote backend 步骤的 shell heredoc(导致 YAML L191 语法错误)
- 新增 scripts/render_backend_tf.py 外置脚本,接受 TF_STATE_ENDPOINT env 渲染 backend.tf
- provision job 新增 Checkout xworkspace-console 步骤,确保 scripts/ 在 runner 可用
- 新增 CLAUDE.md,明确禁止 workflow 内嵌 heredoc(shell/python),要求外置脚本

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 11:48:47 +08:00

1.5 KiB
Raw Blame History

xworkspace-console — Agent 规范

GitHub Actions Workflow 编写规则

禁止内嵌脚本shell heredoc / python heredoc

严禁.github/workflows/run: 块里使用任何内嵌 heredoc

# ❌ 禁止 — shell heredoc
run: |
  cat > file.tf << EOF
  content
  EOF  

# ❌ 禁止 — python 内联 heredoc
run: |
  python3 - <<'PYEOF'
  import os
  ...
  PYEOF  

原因:

  • Shell heredoc 内容从列 1 开始,超出 YAML literal block 缩进范围,导致整个 workflow 文件 YAML 解析失败GitHub 丢失 on: 触发器。
  • Python 内联 heredoc 同理,且难以维护和测试。

正确做法外置脚本workflow 只做调用。

# ✅ 正确 — 外置 Python 脚本
- name: Checkout xworkspace-console (scripts)
  uses: actions/checkout@v4
  with:
    path: xw-console

- name: Configure remote backend
  env:
    TF_STATE_ENDPOINT: ${{ steps.vault.outputs.TF_STATE_ENDPOINT }}
  run: python3 $GITHUB_WORKSPACE/xw-console/scripts/render_backend_tf.py backend.tf

脚本存放在 scripts/ 目录,命名规范 动词_名词.py动词-名词.sh

其他规范

  • workflow 使用的外置脚本必须在 scripts/ 目录下,不得内嵌在 run: 块里。
  • workflow 文件修改后必须用 python3 -c "import yaml; yaml.safe_load(open(...))" 验证 YAML 语法再提交。
  • 不使用 GitHub Actions Secrets所有机密统一从 Vault (https://vault.svc.plus) OIDC 读取。