Déploiement continu avec gitignore

12

Lorsque vous effectuez un déploiement continu avec Git, comment gérez-vous les fichiers ignorés dans gitignore? Ces fichiers sont ignorés pour des raisons de confidentialité (c'est-à-dire qu'ils ne veulent pas qu'ils soient envoyés vers d' autres référentiels distants, comme GitHub), mais avec ces fichiers ignorés qui ne sont pas poussés vers le référentiel de déploiement continu, leur application ne s'exécutera pas (car les fichiers ignorés sont requis pour que le logiciel fonctionne correctement).

Comment les gens s'y prennent-ils généralement? Dans ce cas, Git n'est-il pas le meilleur candidat pour un déploiement continu en raison de fichiers ignorés?

user3175663
la source
2
Je vote pour fermer cette question comme hors sujet car elle ne montre pas un minimum d'effort de recherche fondamentale.
Scant Roger
3
Je ne constate pas un manque d'effort de recherche. L'OP semble comprendre ce que gitignore fait parfaitement bien. Ce que je vois est un problème XY, mais parce que X et Y sont expliqués dans la question, Doc a pu écrire une réponse décente qui, espérons-le, résout le vrai problème de l'OP.
Ixrec
1
@ScantRoger: honnêtement, la question pourrait être mieux écrite, mais elle est loin d'être si mauvaise qu'elle mérite un vote serré.
Doc Brown

Réponses:

14

Si votre logiciel ne fonctionne pas sans ces fichiers, vous aurez un problème avec tout type de déploiement, manuel, automatique ou continu, avec tout type de VCS, ou même sans VCS. Donc, modifiez votre logiciel afin qu'il puisse s'exécuter sans ces fichiers (par exemple, il pourrait supposer une sorte de "paramètres par défaut" si les fichiers sont manquants), ou fournissez une version de ces fichiers adaptée au déploiement qui est copiée ( dans le cadre de l'étape de déploiement) vers l'environnement de destination dans le cas où aucune version "privée" de ces fichiers n'est en place.

Si vous parlez de quelque chose comme un fichier contenant des informations d' identification de base de données d' ouverture de session sur le serveur, ce qui, pour des raisons de sécurité, vous ne voulez pas être dans le contrôle de version, vous devrez mettre ce fichier dans l'environnement de déploiement une fois , probablement manuellement , par une personne disposant de droits suffisants ou connaissant le mot de passe. Mais cela est intentionnel et ne devrait pas vous empêcher de déployer de nouvelles versions quotidiennes de votre logiciel. Assurez-vous simplement qu'un fichier d'informations d'identification en place n'est pas remplacé lorsque vous déployez une nouvelle version.

Doc Brown
la source
D'accord, si l'extraction à partir de vcs ne suffit pas pour générer et exécuter, bien que dans une capacité réduite, votre arborescence source est incomplète.
Newtopian
@Newtopian: notez que cela peut en effet être intentionnel et correct (voir mon exemple).
Doc Brown
2

Une autre option consiste à stocker les informations sensibles à l'intérieur de votre outil de déploiement. Et la configuration de l'outil de déploiement dans un référentiel source privé distinct.

Laisser les données sensibles sur la machine cible fonctionne, mais cela pourrait pourrir - quelqu'un change cela sans suivre les procédures, la machine freine et personne ne se souvient des paramètres corrects, etc.

Saltstack par exemple a https://docs.saltstack.com/en/latest/topics/pillar/index.html

Patrick
la source