2014-09-28 34 views
0

我是capistrano的新手,我试图找出是否可以通过使用git标签作为参考的推送方法部署到多个服务器。这比这更复杂一点,因为这些都是安装了FreeSSH的Windows服务器。我有这个至今:capistrano deploy_via:使用git标签复制?

deploy.rb:

set :application, "iis_app" 
set :repo_url, "iis_repo" 
set :deploy_via, :copy 
set :copy_cache, true 

服务器定义:

role :push_servers, %w{"srv1" "srv2" "srv3" "srv4"} 

ssh_options: { 
    user: "windows_user", 
    forward_agent: true, 
    auth_methods: %w(password), 
    password: ENV["WINDOWS_PW"] 
} 

否则我有点失落。如果有人能指引我走向正确的方向,那会很棒。

回答

0

你的配置看起来很好。唯一的一点是,你的:repo_url应该是这样的:

[email protected]b.com:mycompany/myrepo.git 

一个Git标签基本上转化为一个版本(SHA1散列),所以你可以做这样的事情:

对于Capistrano的2.9以上:

cap -S revision=<the sha1 of your tag> deploy 

对于旧版本的Capistrano的的,你可以这样做:

cap -s branch=<the sha1 of your tag> deploy 

希望它有帮助。

+0

我正在使用capistrano 3.2.1。似乎没有-S选项。我在帮助输出中看不到一个。当我尝试你建议的命令时,我得到这个:cap -S revision ='xxxxxxxxxxxxxxxxxxxx'部署产品 无效选项:-S – numb3rs1x 2014-09-29 05:01:25

+0

虽然看起来小写字母-s有效。我得到一些东西。不完全是我想的。它似乎想要在每台服务器上创建缓存。 INFO [553761a5]运行/ usr/bin/env mkdir -p/tmp/tier1_secure/on“srv1” DEBUG [553761a5]命令:/ usr/bin/env mkdir -p/tmp/iis_app/ – numb3rs1x 2014-09-29 05:23:39

+0

我希望能够获得这会在本地创建缓存,然后将其推送到服务器,如scp或rsync。我试图尽可能少地与Windows服务器交互,因为FreeSSH软件不提供shell。 – numb3rs1x 2014-09-29 05:26:57