Open Recipes - Pouquoi le packaging est important pour l'intégration logicielle

Preview:

Citation preview

www.hupstream.com

Anne Nicolasanne.nicolas@hupstream.com

Industrialisation Gnu/Linux : du code au package logiciel

Quelle expérience en matière de :

Distribution Linux

Gestionnaire de version

Packaging

# 1 Tour de table

# 2 Une chaîne de production complète

Du code à son installation en passant par le packaging :

reproductible à n'importe quel moment

maintenable dans le temps car le contenu est parfaitement connu

traçable quel que soit le moment : d'où ça vient, qui l'a modifié, qui a reverté...

sécurisé : le contenu est généré dans un environnement connu et reproductible

# 2 Une chaîne de production complète

# 3 git : pourquoi ?

# 3 git : pourquoi ?rapide (opérations locales)

design simple

support optimal de la gestion des branches multiples

système complètement distribué (backups data)

sécurisation des données (checksum systématique)

staging de données

système capable de gérer de gros projets en matière de données et de rapidité

# 3 git : l’exemple de kernel.org

# 3 git : l’exemple de kernel.org

# 4 Packaging : ce qu’on en pense souvent...

# 4 Packaging : ce qu’on en pense souvent

Réservé aux packagers des distributions Linux

Pénible et sans intérêt

Une bonne occasion de multiplier les bugs

Une perte de temps

Le meilleur moyen de devoir se plonger dans les « subtilités » des distributions

# 4 Packaging : ce qui rend fou un packager

# 4 Packaging : ce qui rend fou un packagerdes librairies et autres dépendances embarquées dans les tarballs et qui se terminent en conflit

des librairies harcodées sur une architecture

des problèmes de licenses, différentes selon les composants

des binaires embarqués (plate-forme, sécurité, bugs)

des dépendances téléchargées lors de l'installation (pas de connaissance exhaustive du contenu, conflits)

hardcodage des spécificités des distributions : initiscripts, chemins...

# 4 Packaging : pourtant ça pourrait être ça...

# 4 Packaging : ce que ça apporte réellement

integration parfaite dans une distribution Linux

facilité d’utilisation pour l'utilisateur final : gestion des dépendances , installation, mise à jour, suppressionfacilitation de la diffusion du logiciel

traçabilité des versions et des fichiers installés sur un système

faciliter la recompilation du logiciel (moyennant les évolutions des outils comme autotools)

# 4 Packaging : qui est concerné ?

les développeurs qui contribuent à fournir un code facilitant le packaging

les entreprises qui utilisent un socle Linux pour leur infrastructure interne et qui modifient certains composants ou les personnalisent

les entreprises qui éditent une solution basée sur un OS Linux

# 4 Packaging : les politiques de packaging

non elles n’ont pas été écrites pour satisfaire un besoin sadique des packagers officiels des distributions !

elles sont le garant de la cohérence d’une distribution à un moment donné et dans le temps

# 4 Packaging : qualité et outils

vérification de la concordance des packages aux politiques (ex : rpmlint, lintian)

vérification de la signature des tarballs sources et des packages

vérification de la cohérence des dépots de packages

vérification de la qualité des changelogs

# 4 Packaging : faciliter la vie des administrateurs système

La situation idéale : passe le moins de temps possible sur l’installation, la mise à jour et la configuration des serveurs

packaging + centralisation de la configuration

# 4 Packaging : faciliter la vie des administrateurs système

limite les dépendances requises (pas de dépendances de build)

gère les dépendances automatiquement

facilite les mises à jour, investissement moindre une fois le premier package réalisé

gestion de patches traçable

conserve un historique des modifications

connaissance détaillée des logiciels installés et de leurs versions

# 4 Packaging : conseil pour les développeurs

fournir un script d’installation qui sera utilisé lors du build du package

Fournir la possibilité overrider la destination d'installation du logiciel sous peine de patch systématique

Vérifier l’existence des librairies et/ou dépendances embarquées

Porter une attention particulière à la réalisation du tarball de sources et à son versioning

@hupstreamhupstream.com #hupstream (freenode)

Recommended