我是 Capistrano 的新手,开始有点挣扎。简要说明我需要做什么:
git pull
来自我们 git repo 的最新代码,位于中央构建服务器上。此构建服务器的环境与部署环境完全匹配。我需要在这里构建代码。例如,我不想部署在 Mac 笔记本电脑上构建的二进制文件。- 在这台机器上编译二进制文件。
- 将它从这台机器部署到所有目标机器。
- 有一个共享用户,我们都可以在构建机器上通过 SSH 访问来进行构建。
- 构建机器位于网关机器后面,不能直接访问。
- 所有部署目标机器也有这个共享用户并且也在网关后面。
- 部署的二进制文件是单个可执行文件,目标机器上有一个初始化脚本。部署二进制文件并更改符号链接后,通过 init 脚本重新启动服务。
- 每个人都有适当的 SSH 密钥和代理转发来完成所有必要的任务。
所以原则上它看起来相当简单,但 Capistrano 似乎固执己见而且有点神奇。结果,我不确定如何完成所有这些。似乎它想检查我的代码并将其复制到远程机器上,例如不先构建它。
我想我需要忽略 Capistrano 的所有默认智能,并让它在适当的服务器上运行一些 shell 命令。在伪代码中:
ssh buildmachine via gateway "cd repo && git pull && make"
ssh targetmachine(s) via gateway "scp buildmachine:repo/binary .; <mv && symlink>; service foo restart"
我是否使用了正确的工具来完成这项工作?它看起来很像方孔中的圆钉。
有人可以向我解释 Capistrano 配置文件的内容应该是什么,以及cap
我将运行哪些命令来完成此操作?
顺便说一句,我四处搜索并查看了诸如使用远程 git repo 部署 capistrano 但没有在生产服务器上运行 git以及从服务器上手动拉取到 Capistrano 等问题