Files
OJ2/.github
yuetsh 64cb7b62ef
Some checks failed
Deploy / deploy (push) Has been cancelled
ci(部署): 手动触发可放行破坏性迁移,push 触发永远不放行
deploy.sh 现在会在起栈前跑迁移,但 CI 没法传 OJ2_ALLOW_DESTRUCTIVE,
于是任何破坏性迁移都会让自动部署一直红着,且没有出口。

给 workflow_dispatch 加一个 allow_destructive 布尔 input,经 env: 传到
ssh 命令里。push 触发拿不到 inputs,值恒为空 —— 也就是说**自动部署永远
不会执行 DROP TABLE 之类的迁移**,只会停在闸门上把工作流判红。这是有意的:
那种改动得有人先确认备份,不该由一次 git push 顺带完成。

日常的加索引 / 加列属于非破坏性,CI 部署会照常自动执行,无需干预。

留了一条注释标明必须用 `inputs.` 而不是 `github.event.inputs.`:后者会把
布尔字符串化,没勾选时拿到字符串 "false",那是非空字符串、在 `&&` 里为真,
等于每次手动部署都无条件放行。

验证:本机 YAML 解析通过,确认 inputs 定义挂在 workflow_dispatch 下。
表达式三种情况的语义(勾选 → '1'、未勾选 → ''、push 事件 inputs 为空 → '')
是 GitHub 表达式的既定行为,要真的 push 到 github 才跑得起来。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-26 08:38:47 -06:00
..