生产脚本与版本控制的关系该如何构建?

生产脚本与版本控制的关系该如何构建?

我负责维护一系列脚本,其目的是每天从 API 中提取数据并更新数据库。当我接手这个角色时,脚本存储在 SVN 中,每天一次 cronjob 会以 root 身份运行,更新 svn,然后从 svn 目录运行脚本。

现在,我想重新设计这个设置的逻辑,从根切换到服务帐户等。我想将脚本置于版本控制之下,但用完 SVN 目录似乎很奇怪。

最好的安排方法是什么?

答案1

我认为您已经确定了两件应该改变的事情:

  1. 停止以 root 身份运行脚本。没有必要这样做,除非只有 root 可以写入脚本,否则这会造成容易的权限提升漏洞。从您的描述来看,脚本所需的唯一权限似乎是更新 SVN 树和写入数据库。因此,为此创建一个专用的用户帐户,并为其提供足够的权限来执行这两项操作。然后从该用户拥有的 cron 作业运行脚本。

  2. 如果我理解正确的话,这听起来好像程序和它们提取的数据都保存在同一个 SVN 存储库中。我想这可行,但将程序和数据混合在一起是一种不好的做法,尤其是因为程序只会偶尔更新,而数据每天都会更新。我会将它们分成单独的 SVN 存储库。

相关内容