Projet

Général

Profil

GitPackagingWorkflowTest » Historique » Version 1

Daniel Dehennin, 30/01/2012 11:11
Déplacement du worflow dans une page dédiée

1 1 Daniel Dehennin
h1. TODO Proposition de workflow
2 1 Daniel Dehennin
3 1 Daniel Dehennin
h2. Partie développeur
4 1 Daniel Dehennin
5 1 Daniel Dehennin
# Création d’un tag signé contenant un nouveau numéro de version
6 1 Daniel Dehennin
# Envoi du tag sur le dépôt central dev-eole
7 1 Daniel Dehennin
8 1 Daniel Dehennin
h2. Partie packageur
9 1 Daniel Dehennin
 
10 1 Daniel Dehennin
# Fusion de la branche développeur dans la branche de packaging
11 1 Daniel Dehennin
# Création d’un tag signé contenant le nouveau numéro de version basé sur celui du développeur
12 1 Daniel Dehennin
# Envoi du tag sur le dépôt central dev-eole
13 1 Daniel Dehennin
14 1 Daniel Dehennin
Cette partie peut être automatisée si un mapping existe entre les branches de développement et les branches de packaging.
15 1 Daniel Dehennin
Dans ce cas, on pourra vérifier la signature du développeur.
16 1 Daniel Dehennin
17 1 Daniel Dehennin
h2. Partie builder : gestion du source Debian
18 1 Daniel Dehennin
19 1 Daniel Dehennin
Le but de cette partie est de créer l’ensemble des fichiers sources Debian :
20 1 Daniel Dehennin
21 1 Daniel Dehennin
* @<PAQUET>_<VERSION SOURCE>.orig.tar.gz@    : Les sources non packagées (dans le répertoire @debian/@)
22 1 Daniel Dehennin
* @<PAQUET>_<VERSION DEBIAN>.debian.tar.gz@  : Le packaging des sources (le répertoire @debian/@)
23 1 Daniel Dehennin
* @<PAQUET>_<VERSION DEBIAN>.dsc@            : Description du paquet source Debian (doit être signé)
24 1 Daniel Dehennin
* @<PAQUET>_<VERSION DEBIAN>_source.changes@ : Description des changements (mixe entre l’entrée de @debian/changelog@ de cette version et le fichier @.dsc@)
25 1 Daniel Dehennin
26 1 Daniel Dehennin
# Vérification de la signature: si nok => suppression du tag + report + quit
27 1 Daniel Dehennin
# Checkout du tag == récup de la conf gbp.conf
28 1 Daniel Dehennin
# Checkout de la branche de build depuis le dernier tag de version Debian
29 1 Daniel Dehennin
# Merge du tag dans la branche de build
30 1 Daniel Dehennin
# Mise à jour de @debian/changelog@ :
31 1 Daniel Dehennin
  <pre>git-dch -a -R/-S debian/</pre>
32 1 Daniel Dehennin
# Ajout de @debian/changelog@ à l’index pour le prochain commit :
33 1 Daniel Dehennin
  <pre>git add debian/changelog</pre>
34 1 Daniel Dehennin
# Commit en utilisant le numéro de version du nouveau paquet :
35 1 Daniel Dehennin
  <pre>git commit -m "Nouveau paquet debian version: $(dpkg-parsechangelog | awk '/^Version/ {print $2}')"</pre>
36 1 Daniel Dehennin
# Construction du source debian et envoi sur un dépôt debian, sans faire de nettoyage, ni de vérification de dépendance:
37 1 Daniel Dehennin
  <pre>git buildpackage \
38 1 Daniel Dehennin
  --git-builder="dpkg-buildpackage -nc -d -S" \
39 1 Daniel Dehennin
  --git-postbuild='dput eole "${GBP_CHANGES_FILE}"'
40 1 Daniel Dehennin
  --git-cleaner=/bin/true</pre>
41 1 Daniel Dehennin
42 1 Daniel Dehennin
Cette partie peut être automatisée.
43 1 Daniel Dehennin
44 1 Daniel Dehennin
h2. Partie dépôt : gestion du source Debian
45 1 Daniel Dehennin
46 1 Daniel Dehennin
Cette partie peut être prise en charge automatiquement par "différente méthode":http://git.debian.org/?p=mirrorer/reprepro.git;a=blob_plain;hb=HEAD;f=docs/manual.html (section "Processing an incoming queue") :
47 1 Daniel Dehennin
48 1 Daniel Dehennin
* "cron":http://fr.wikipedia.org/wiki/cron
49 1 Daniel Dehennin
* "inotify":http://fr.wikipedia.org/wiki/Inotify
50 1 Daniel Dehennin
* "dput/dupload":http://www.debian.org/doc/manuals/maint-guide/upload.en.html
51 1 Daniel Dehennin
52 1 Daniel Dehennin
L’utilisation de @dput@ ou @dupload@ requiert de mettre en place une configuration et des autorisation pour chaque « uploader ».
53 1 Daniel Dehennin
54 1 Daniel Dehennin
La solution @inotify@ est le meilleur compromis :
55 1 Daniel Dehennin
56 1 Daniel Dehennin
* Ne requiert une configuration qu’à un endroit ;
57 1 Daniel Dehennin
* Prise en compte rapide des uploads.
58 1 Daniel Dehennin
59 1 Daniel Dehennin
h2. Partie builder : gestion des paquets binaires
60 1 Daniel Dehennin
61 1 Daniel Dehennin
La construction des paquets binaires est dépendante de l’"architecture":http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Architecture déclarée dans @debian/control@ :
62 1 Daniel Dehennin
63 1 Daniel Dehennin
* Une seule fois pour les paquets déclarés avec l’architecture *all*
64 1 Daniel Dehennin
* Pour chaque architecture supportée pour les paquets déclarés avec l’architecture *any* ou une liste d’architecture
65 1 Daniel Dehennin
66 1 Daniel Dehennin
# Téléchargement des sources depuis le dépôt :
67 1 Daniel Dehennin
  <pre>apt-get source <PAQUET></pre>
68 1 Daniel Dehennin
# Construction du paquet en utilisant l’[[GitPackaging#Environnement de compilation personel|environnement de build]] correspondant à la distribution du paquet :
69 1 Daniel Dehennin
  <pre>cd <PAQUET>-<VERSION>/ \
70 1 Daniel Dehennin
  && sbuild -A -d $(dpkg-parsechangelog | awk '/^Distribution/ {print $2}')"</pre>
71 1 Daniel Dehennin
# Si build OK :
72 1 Daniel Dehennin
## On tag la version du paquet :
73 1 Daniel Dehennin
    <pre>git buildpackage --git-tag-only</pre>
74 1 Daniel Dehennin
## On envoi le tag sur le dépôt central :
75 1 Daniel Dehennin
    <pre>git push</pre>
76 1 Daniel Dehennin
## On supprime la branche de build qui est inutile
77 1 Daniel Dehennin
## On envoi le paquet sur le dépôt des paquets debian
78 1 Daniel Dehennin
79 1 Daniel Dehennin
h1. Webographie
80 1 Daniel Dehennin
81 1 Daniel Dehennin
* "Rebuildd":http://julien.danjou.info/software/rebuildd
82 1 Daniel Dehennin
* "Rebuildd on Debian":http://packages.qa.debian.org/rebuildd
83 1 Daniel Dehennin
* "Rebuildd for building a Private PPA on Ubuntu":http://inodes.org/2009/09/14/building-a-private-ppa-on-ubuntu/