我已使用
在本地计算机上创建项目的克隆git clone git@github.com:test/abc.git
现在我想在我的ubuntu服务器上部署我的项目。
所以我创建了一个在我的ubuntu服务器上安装git的脚本。 现在我想在服务器上部署我的rails项目。 比如git clone git@github.com:test / abc.git但是我没有在我的服务器上设置ssh密钥。 有没有办法在我的服务器上没有设置ssh密钥的情况下创建克隆。
我们必须在每台服务器上创建ssh的强制措施吗?
如果我有20台服务器怎么办?我需要为每个要克隆的服务器设置ssh密钥吗?
有没有办法只问密码而不是创建克隆?
还是其他任何方式?
答案 0 :(得分:2)
您可以使用只读版本。在存储库名称旁边,您可以选择http协议。这个网址可以在没有ssh密钥的情况下使用。如果是私人存储库,则需要将用户名添加到网址。
$ git clone http://myname@github.com:test/abc.git
Initialized empty Git repository in /Users/myname/Projects/abc/.git/
password:
然后键入密码,稍后您就可以克隆了。缺点是如果您使用私人仓库,则需要输入密码。
虽然我没有看到添加一些ssh-key的问题。如果您确实需要部署到20台服务器,您可能会考虑使用具有良好操作系统支持的打包方法来自动更新。
答案 1 :(得分:1)
尝试使用配置管理工具来部署安装是错误的。您真的打算更新这20个系统中的每个系统的代码吗?那你为什么要授予他们对代码的写访问权?
创建一个tarball或使用您正在开发的语言中提供的任何包管理系统(例如,在Perl中,您可以使用Dist::Zilla,Module::Install或ExtUtils::MakeMake r。< / p>
答案 2 :(得分:0)
我们创建了一个php脚本,它构建了RPM(以及使用Alien也构建了DEB)来更新我们的200多台机器。当一个像“http://repo/fetch/rpm/”这样的网址被调用时,如果在package_name存储库中插入了新的git标签,则检查脚本,如果是,则使用我们在每个repo基础上创建的RPM模板(通常放在.build / rpm中) .spec)构建RPM,将其保存到本地缓存目录,并将内容作为文件头读出。
我知道你的应用程序因为你使用的是GitHub而无法工作 - 但对于拥有自己的远程存储库的人来说,这只是一个想法。盒子上的一个cron每天会查询一次这些URL并在输出上运行rpm -Uvh。
对于您的实例,tarball每个版本可能是明智的,并将其放在公共可访问的URL中或创建脚本以将其同步到每个服务器+ exec
答案 3 :(得分:0)
如果您正在部署rails项目,则应该查看Capistrano - http://www.capify.org/index.php/Getting_Started