簡體   English   中英

如何配置Capistrano從本地Git存儲庫部署?

[英]How to Configure Capistrano to Deploy from Local Git Repository?

我需要對下面的deploy.rb文件進行哪些更改才能從本地git repo部署我的應用程序? 如果我無法從本地倉庫部署,我可以讓capistrano使用工作復制嗎?

set :application, "my_app"
set :repository, "."
set :local_repository, "file:///path/to/application/.git"
set :deploy_to, "/data/www/apps/#{application}"
set :deploy_via, :copy
set :copy_cache, true
set :user, "dane"
set :use_sudo, false

set :scm, :git # Should I change this to :none
set :branch, "master"

這很簡單:

set :scm, :none
set :repository, "."
set :deploy_via, :copy

只需從項目的根目錄運行Capistrano。

deploy_via, :copy已在版本3中刪除。

https://github.com/capistrano/capistrano/issues/695

在大多數情況下,您應該將代碼放在github或bitbucket等在線存儲庫中,然后您只需在deploy.rb文件中設置此行:

set :repo_url, 'git@bitbucket.org:my_account/my_project.git'

雖然如果您正在部署的遠程服務器上也有一個存儲庫,那么您可以將deploy.rb文件中的那一行更改為:

set :repo_url, 'file:///home/deploy/bare_repo/my_project.git'

請記住,三個正斜杠很重要,因為file://告訴capistrano你正在尋找一個文件,並且前面的斜杠需要指向一個類似於/home/deploy/bare_repo/my_project.git的根路徑/home/deploy/bare_repo/my_project.git

set :repository, 'file:///path/to/your/git_repository'
set :local_repository, "file://."
set :scm, :git
# set :deploy_via, :copy # you must comment it

我使用了@Ariejan和@HungYuHei的組合,這些答案對我有用。

set :deploy_via, :copy
set :use_sudo, false    
set :scm, "git"
set :repository, "."
set :local_repository, "."
set :branch, "master"

如果您使用本地副本(並且沒有Github上的項目),那么禁用:check_revision deploy.rb中的:check_revision任務也是明智的,它檢查遠程是否與本地git同步。

適合我的Capistrano 3解決方案:

  before :deploy, :deploy_from_local_repo

  task :deploy_from_local_repo do
    set :repo_url,  "file:///tmp/.git"
    run_locally do
      execute "tar -zcvf /tmp/repo.tgz .git"
    end
    on roles(:all) do
      upload! '/tmp/repo.tgz', '/tmp/repo.tgz'
      execute 'tar -zxvf /tmp/repo.tgz -C /tmp'
    end
  end

在部署之前,您要將tar.gz文件上載到服務器,解壓縮並最終將:repo_url重置為文件模式。

小心刪除以前的回購:

task :remove_repo do
  on roles(:all) do
    execute "rm -r #{repo_path}"
  end
end

通常通過副本部署超級慢。 但是copy_cache只有在scm不是none時才可用(sync使用scm)這意味着從工作副本部署只能用緩慢的副本完成。 我設法從本地倉庫找到一個快速的快速設置來進行復制部署。 您仍然需要在本地提交更改,但不需要推送它們。

set :scm, "git"
set :local_repository, "file://."
set :deploy_via, :copy
# cache only seems to work if use scm
set :copy_cache, true
set :copy_via, :scp
set :copy_exclude, [".zeus*", ".bundle", ".git", "tmp/*", "doc", "log/*", "fixtures/*"]

不幸的是,它有時會神秘地打破:

fatal: Could not parse object 'c438b9d1242cb311be43d681e3f89bc486d748ed'.`

理想情況下,即使沒有scm用於從工作副本部署到工作,也應該實現同步本地緩存。 添加到capistrano的強大功能

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM