我们有以下方案:
- 我们使用 gitolite 对我们的网络存储库进行访问控制,并让我们的构建服务器使用一个特殊的 SSH 密钥,该密钥只有对存储库的读取访问权限。
- 我们在构建机器上有一个完整的克隆,并定期从我们的构建脚本中获取。
- 我们使用标签名称来标记要构建的东西。我们使用 2012-09-01[az] 作为这些名称的模式,因为它们的排序很好。例如,2012-09-01 之后是 2012-09-01a,如果您每天需要多个构建...也可以使用完整的时间戳。
- 当自动 shell 脚本看到要更改的标签(最后一个标签是最新的)时,会执行签出/重建。
不需要符号链接,因为 git 中的结帐速度非常快。你也可以使用
git -xfd clean
以确保您的源代码树干净整洁,以防您的脚本乱七八糟。
然后,您的开发团队只需要制作一个标签并推送它即可获得更新的构建:
git tag 2012-09-01
git push
当然标签可以使用嵌套名称,因此您可以执行以下操作:
git tag test/2012-09-01
git tag release/2012-09-01
...
对您正在做的事情进行分类:测试修复、发布版本等。