web-dev-qa-db-fra.com

Paiements clairsemés Jenkins et Git

J'ai un grand référentiel dans Git. Comment créer un travail dans Jenkins qui extrait un seul sous-dossier du projet?

54
Pavel Chuchuva

Jenkins Git Plugin support checkouts clairsemés depuis git-plugin 2.1.0 (avril 2014). Vous aurez besoin de git> = 1.7.0 pour cette fonctionnalité. Il se trouve sous "Comportements supplémentaires" -> "Chemins de paiement clairsemés".

screenshot

Voir: Problème Jira JENKINS-21809

59

Vous pouvez utiliser caisse clairsemée fonction de Git. Notez que Git clone toujours le référentiel entier sur le disque local. Ce n'est pas trop mal cependant, car il est compressé.

  1. Créez un nouveau travail dans Jenkins, définissez le référentiel Git dans la section Gestion du code source.
  2. Générez le projet. Cela clonera l'ensemble du référentiel sur le disque local.
  3. Ouvrez le dossier de l'espace de travail des projets, supprimez-y tout sauf le dossier .git.
  4. Ouvrez Git Shell pour le dossier de l'espace de travail du projet. Activer la récupération clairsemée:

    git config core.sparsecheckout true
    
  5. Mettre à jour l'arbre de travail:

    git read-tree -mu HEAD
    
  6. Créer sparse-checkout fichier dans le dossier .git/info. Ajoutez le chemin d'accès au sous-dossier que vous souhaitez extraire de ce fichier, comme ceci (notez la barre oblique de fin):

    folder/to/include/
    
  7. Générez à nouveau le projet. Cette fois, un seul sous-dossier doit apparaître dans le dossier de l'espace de travail.

23
Pavel Chuchuva

Vous pourriez avoir une étape personnalisée qui utiliserait simplement

git checkout your-branch -- the/desired/path anthother/desired/path

Pour l'effacer, vous pouvez simplement rm -rf le dossier de travail et recréez-le avec mkdir workingdir. Cela vous obligerait à spécifier cette option au niveau git de la commande ci-dessus:

git --working-dir="/path/to/workingdir" checkout your-branch -- the/desired/path anthother/desired/path

Tout cela dépend de votre connaissance de Jenkins.

1
Adam Dymitruk