Archives du mot-clé depoiement

Gérer les déployements de votre code source

Voici un article que je voulais écrire depuis longtemps, je vais vous présenter la manière la plus simple de déployer votre code en production et ceci avec un scm de votre choix. J’ai nomé capistrano.

Vous pouvez trouver le repos git  ici : https://github.com/capistrano/capistrano

L’exemple ci dessous est réalisé sur une Ubuntu, mais j’ai tester sur gentoo et même sur windows et cela fonctionne !!

Il faut savoir que capistrano est à l’origine développé pour deployer du Rails, il est donc écrit en ruby, je vais donc installer ruby et rubygems:

1
sudo apt-get install ruby rubygems

Puis ensuite capistrano

1
gem install capistrano #ou sudo apt-get install capistrano

Enfin dans mon projet de code versionné avec un SVN ou Git par exemple :

1
Capify .

Si vous regarder il vous à créer un fichier Capfile et un fichier config/deploy.rb et c’est dans le deploy.rb que l’on va configurer capistrano

Et dans le fichier deploy.rb, vous allez pouvoir redefinir l’ensemble de ses variables : http://theadmin.org/articles/2010/06/24/capistrano-variables/

Je vais donc faire une config standard

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Dirs that need to remain the same between deploys (shared dirs)
set :shared_children, %w(log web/uploads web/images web/flash data/search.index)
set :shared_files, %w(config/databases.yml config/project.yml apps/frontend/config/factories.yml robots.txt)

 

set :application, "APP_NAME"
set :domain,      "DOMAIN_URL"
set :user, "USER_NAME"
set :deploy_to,   "/home/www/#{application}"
set :use_sudo, false
set :symfony_env, "preprod"

 

set :repository,  "svn://DOMAIN_URL/#{application}/trunk/"
set :scm,         "subversion"# Or: `accurev`, `bzr`, `cvs`, `darcs`, `subversi$
set :deploy_via,  :remote_cache

 

role :web,        domain                         # Your HTTP server, Apache/etc
role :app,        domain                         # This may be the same as your

 

set  :keep_releases,  3
after "deploy:update", "deploy:cleanup"

Bon ok vous êtes observateurs, je vous ais mentis, j’ai ajouté un capifony par dessus , mais ceci me permet juste d’executer la liste des commande de déploiement spécifiques à un projet symfony1.x à savoir les build model, clear cache, … et ce quelque soit l’ORM

En effet toute la puissance de capistrano c’est entre chaque action d’avoir au début un event before:{action} et après un after:{action} on peut donc injecter facilement ces commandes.

Alors comment est-ce que l’on install capifony :

1
gem install capifony

Et dans le Capfile :

1
2
3
4
load 'deploy' if respond_to?(:namespace) # cap2 differentiator
Dir['plugins/*/lib/recipes/*.rb'].each { |plugin| load(plugin) }
load Gem.required_location('capifony', 'capifony.rb') # Ajouter cette ligne
load 'config/deploy' # remove this line to skip loading any of the default tasks

Enfin pour déployer votre application :

1
cap deploy

Je vous expliquerais comment on peux ajouter ces propres commandes dans un prochain billet.