flosy.info | Développement Web, Open source …

CAT | Système

L’hébergement de 1and1 permet de disposer de d’un dépot GIT. Pour cela nous allons commencer par créer le dépôt.

  $ ssh moncompte@flosy.info
  $ mkdir git
  $ cd git
  $ git init --bare monDepot.git

Ensuite je crée un dépôt local.

  $ mkdir monDepot
  $ cd monDepot
  $ git init
  $ git add .
  $ git commit

Maintenant j’ajoute un remote et j’envoie le dépôt local vers le dépôt distant.

  $ git remote add origin ssh://moncompte@flosy.info/~/git/monDepot.git
  $ git push origin master

Related Posts:

Le déploiement d’un projet est toujours une étape fastidieuse et parfois complexe.
Pour automatiser cela nous pouvons utiliser un outil comme Fabric qui va nous permettre de scripter notre déploiement.
J’ai découvert cet outil dans la présentation Adopt Devops philosophy on your Symfony projects de Fabrice Bernhard lors de la conférence symfony live 2011.

Fabric est un outil écrit en Python et disponible sur le site suivant : http://docs.fabfile.org/en/latest/index.html.

Installation

Il est recommandé de passer par pip pour installer Fabric. Pip n’est pas installé de base sur la Fedora. Il est cependant disponible sous forme de package.

  # yum install python-pip

Pip va nous permettre d’installer Fabric grâce à la commande suivante :

  # pip-python install fabric

Note : Dans mon cas cela n’a pas fonctionné directement. En effet Fabric a comme dépendance la bibliothèque PyCrypto qui va être compilée par pip. Il m’a fallu installer le package python-devel.

Utilisation

À titre d’exemple nous allons créer un fichier fabric qui va nous permettre de créer un projet symfony et de lui associer un dépôt GIT.

Nous créons le fichier fabfile.py dans le dossier parent du futur projet (dans mon cas /var/www/symfony2).

from fabric.api import *
 
version_symfony = 'Symfony_Standard_2.0.12.tgz'
url_symfony = 'http://symfony.com/download?v=' + version_symfony
 
def install_symfony(project_name):
  local("wget " + url_symfony)
  local("tar xzvf " + version_symfony)
  local("rm " + version_symfony)
  local("mv Symfony " + project_name)
  local("cp %s/app/config/parameters.ini %s/app/config/parameters.ini.dist " % (project_name, project_name))
 
def create_repository(project_name):
  local('touch ./%s/.gitignore' % project_name)
  ignore_file = open('./%s/.gitignore' % project_name, 'w')
  ignore_file.write("""/web/bundles/
/app/bootstrap*
/app/cache/*
/app/logs/*
/vendor/
/app/config/parameters.ini""")
  with lcd(project_name):	# Context managers lcd pour local, cd pour remote (run).
    local('git init ')
    local('git add .')
    local('git commit -m  "Initial commit"')
 
def install_vendors(project_name):
  with lcd(project_name):
    local('php bin/vendors install')
 
def install(project_name):
  install_symfony(project_name)
  create_repository(project_name)
  install_vendors(project_name)

Le fichier décompose l’installation en 3 fonctions :

install_symfony
Installe une version donnée de symfony sans les vendors.
create_repository
Gère toutes les opérations nécessaires à la création du dépôt GIT.
install_vendors
Installe les vendors.

La fonction install nous sert de facade.

Nous pouvons donc les appeler successivement ou utiliser la facade.

  $ fab install_symfony:symfabric
  $ fab create_repository:symfabric
  $ fab install_vendors:symfabric

ou

  $ fab install:symfabric

Vous noterez l’utilisation du context manager lcd qui permet de spécifier un dossier de travail pour un groupe d’instructions.
Dans le cas d’un accès distant il convient d’utiliser le context manager cd.

Connexion sur un hôte distant

Nous allons utiliser une connexion ssh par clé. Pour cela nous allons ajouter sur l’hôte distant, la clé publique dans le fichier .ssh/authorized_keys.
Attention à donner les bons droits au fichier :

  $ chmod 600 .ssh/authorized_keys

Pour l’exemple je vous renvoie vers le très bon exemple de la présentation de Fabrice Bernhard disponible sur GitHub.

Related Posts:

  • No Related Posts

No tags

Symfony fournit au travers de la ligne de commande différentes opérations d’administration pour son projet. Elles utilisent les couleurs pour faciliter la lecture. Mais car il y a un mais, la configuration par défaut de la Fedora 14 ne restitue pas les couleurs.
Pour que cela fonctionne il faut installer le paquet suivant :

# yum install php-process

Related Posts:

· ·

Juin/10

12

Mise en place d’un dépôt GIT

À l’occasion d’un nouveau projet je vais tester GIT pour assurer le contrôle de version.
Ce sera l’occasion de disposer du système de version même sans se synchroniser au dépôt.

Création du dépôt

Initialisation du projet

Nous nous plaçons dans le dossier du projet.

flosy@git:$ cd mon-projet

Nous initialisons le dépôt.

flosy@mon-projet:$ git init
Initialized empty Git repository in /home/flosy/git/mo-projet/.git/

Nous pouvons maintenant commencer à l’utiliser.

Ajout des éléments

Ajoutons les éléments du projets.

flosy@mon-projet:$ git add .

Contrôlons que l’opération c’est bien passée.

flosy@mon-projet:$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached ..." to unstage)
#
# new file: .gitignore
# new file: mon-projet/latex/eof.png
# new file: mon-projet/latex/eof_latex_u8.cls
# new file: mon-projet/latex/fncychap.sty
# new file: mon-projet/latex/mon-projet.tex
# new file: mon-projet/latex/pageDeGarde.tex
# new file: mon-projet/plan.txt
#

Nous pouvons lancer le commit.

flosy@mon-projet:$ git commit
7 files changed, 838 insertions(+), 0 deletions(-)
create mode 100644 .gitignore
create mode 100644 mon-projet/latex/eof.png
create mode 100644 mon-projet/latex/eof_latex_u8.cls
create mode 100755 mon-projet/latex/fncychap.sty
create mode 100644 mon-projet/latex/module-PHP.tex
create mode 100644 mon-projet/latex/pageDeGarde.tex
create mode 100644 mon-projet/plan.txt

Nous pouvons maintenant utiliser le dépôt.

Utilisation du dépôt

Effectuons le test depuis une autre machine. Nous passerons par ssh pour se connecter.

someone@remote:$ git clone ssh://flosy@flosy.info/home/flosy/mon-projet projet-distant
Initialized empty Git repository in /home/someone/projet-distant/.git/
remote: Counting objects: 13, done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 13 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (13/13), 24.89 KiB, done.

Ajout d’un fichier pour contrôler que tout fonctionne.

someone@remote:$ touch projet-distant/Readme
someone@remote:$ git status
# On branch master
# Untracked files:
# (use "git add ..." to include in what will be committed)
#
# projet-distant/Readme

someone@remote:$ git add projet-distant/Readme
someone@remote:$ git commit
[master 2ad3bf6] Ajout du Readme
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 mon-projet/Readme

Il reste à propager les modifications sur le dépôt d’origine.

someone@remote:$ git push ssh://flosy@flosy.info/home/flosy/mon-projet master
flosy@mon-projet:$ git log
commit 2ad3bf60898098d45f6ea69703cc4a7d1590a521
Author: someone
Date: Sat Jun 12 13:48:36 2010 +0200

Ajout du Readme

commit 94ebb0ad7e9e1a23c727d4c8a76bd4b28e3067e2
Author: flosy
Date: Sat Jun 12 11:52:17 2010 +0200

Création du dépôt de mon-projet

Pour aller plus loin il y a le GIT book

Related Posts:

·

Theme Design by devolux.nh2.me