test rails jamon deploy application alternatives ruby deployment capistrano

ruby - rails - capistrano jamon



La implementación de Capistrano falla después de que cambie la URL del repositorio (9)

Aquí está la versión de Capistrano 3 de lo que esta respuesta habla. Puede ser tedioso hacer lo que la respuesta sugiere en cada servidor.

Así que deploy.rb en deploy.rb y luego ejecute cap <environment> deploy:fix_repo_origin

namespace :deploy do desc ''Fix repo origin, for use when changing git repo URLs'' task :fix_repo_origin do on roles(:web) do within repo_path do execute(:git, "remote set-url origin #{repo_url}") end end end end

Tengo una implementación simple a través de capistrano desde un repositorio de Git. Al principio estaba implementando el formulario de GitHub, todo funcionó bien. Pero luego moví mi repositorio a BitBucket y ahora estoy obteniendo

fatal: Could not parse object ''9cfb...''.

El problema desaparece una vez que cambio

set :deploy_via, :remote_cache

a

set :deploy_via, :copy

pero eso no soluciona el problema, solo lo pasa por alto. ¿Hay alguna manera de decirle a capistrano que simplemente deje caer el viejo caché?


Debes cambiar el origen de git en tu carpeta / shared / cached-copy

cd /var/www/your-project/production/shared/cached-copy git remote remove origin git remote add origin [email protected]:/origin.git

intentar implementar la tapa de producción



La forma más simple es simplemente cambiar la url del repositorio por la nueva en .git / config en el directorio compartido / copiado en caché en el servidor web. Entonces puedes hacer un despliegue normal como de costumbre.


Lo resolví con lo siguiente en deploy.rb :

namespace :deploy do task :cope_with_git_repo_relocation do run "if [ -d #{shared_path}/cached-copy ]; then cd #{shared_path}/cached-copy && git remote set-url origin #{repository}; else true; fi" end end before "deploy:update_code", "deploy:cope_with_git_repo_relocation"

Hace que la implementación sea un poco más lenta, por lo que vale la pena eliminarla una vez que te sientas cómodo de que todos tus objetivos de implementación se hayan puesto al día.


Si necesita hacer muchos repos, es posible que desee agregarle una tarea.

Para capistrano 3 agrega esta tarea en su deploy.rb

desc "remove remote git cache repository" task :remove_git_cache_repo do on roles(:all) do execute "cd #{fetch(:deploy_to)} && rm -Rf repo" end end

Y luego ejecútalo una vez para cada etapa:

cap testing remove_git_cache_repo


Tengo que decir que no estoy seguro, ya que no he podido probar esto, pero esto debería funcionar:

cap deploy:cleanup -s keep_releases=0

Como borra cada versión (caché) del servidor.

Aparentemente, también deberá eliminar shared/cached-copy , ya que no parece haber sido limpiada por la llamada anterior de Capistrano de acuerdo con el comentario a continuación.



Capistrano 2.X

Eliminar y volver a clonar el repositorio con la nueva dirección:

cd $deploy_to/shared rm -rf cached-copy git clone ssh://[email protected]/new/repo.git cached-copy

Modifique su config/deploy.rb para usar el nuevo repositorio:

set :repository, "ssh://[email protected]/new/repo.git" set :scm, :git set :deploy_via, :remote_cache

Implementar de nuevo:

cap deploy

Capistrano 3.X

  1. Elimina el $deploy_to/repo
  2. Modifique su config/deploy.rb (igual que 2.X)
  3. cap deploy