GitHub 秘密写入依赖当前目录的隐式仓库上下文
原文依据:2 处`set_secret` 调用 `gh secret set` 时没有指定仓库,也没有在上传前显示或确认 GitHub 账户和仓库。命令因此使用 `gh` 从当前环境推断出的目标。
若向导从错误的项目目录运行、仓库远程配置错误,或 `gh` 登录的是非预期账户,敏感凭据可能被写入另一个仓库,使该仓库的管理员或工作流能够使用它。
在 gh 已安装且已认证时,函数直接执行 `gh secret set`,没有 `--repo` 等显式目标,也没有在函数内显示或确认账户、仓库。实际目标因此取决于运行时的 gh/当前目录上下文;若用户从错误仓库目录运行,秘密可能被写入非预期仓库。用户可要求脚本在写入前显示并确认 `gh repo view` 得到的目标,或明确传入仓库。
# set_secret NAME VALUE sets a GitHub Actions repo secret via gh. Falls back# to a warning (and records it) if gh is unavailable or unauthenticated.set_secret() { local name="$1" value="$2" if command -v gh >/dev/null 2>&1 && gh auth status >/dev/null 2>&1; then if printf '%s' "$value" | gh secret set "$name" >/dev/null 2>&1; then WRITTEN_SECRET+=("$name") printf ' %s✓ set%s GitHub secret %s\n' "$GREEN" "$RESET" "$name" return查看另外 1 个位置
ask_secret STRIPE_SECRET_KEY "Paste the secret key:"write_env STRIPE_PUBLISHABLE_KEY "$STRIPE_PUBLISHABLE_KEY"write_env STRIPE_SECRET_KEY "$STRIPE_SECRET_KEY"set_secret STRIPE_SECRET_KEY "$STRIPE_SECRET_KEY" # CI needs this one# ──────────────────────────────────────────────────────────────────────────