web-dev-qa-db-fra.com

Configuration de Git LFS dans Jenkins

J'ai un problème avec l'utilisation de git LFS dans Jenkins. Ce que je fais maintenant, c'est que

  1. Je construis une guerre de maven à Jenkins que la guerre contient un fichier jar
  2. via Git LFS, nous avons converti ce fichier jar en un fichier de pointeur. Mais lors du paiement à Jenkins, ce pot ne se convertit pas à sa taille d'origine, il est plutôt inclus dans la guerre en tant que pointeur.

Nous avons utilisé le plugin git et le plugin git-client avec les versions 3.3.0 et 2.4.2 respectivement dans Jenkins.

Qu'est-ce qui se passe:

A.war -> a.jar (dont la taille d'origine est de 1234 ko mais qui arrive à 3 ko (qui est la taille du fichier de pointeur)

donc mes questions sont:

  1. comment utiliser git LFS dans les Jenkins?
  2. existe-t-il un plugin Git Lfs séparé pour Jenkins?
  3. Comment le fichier doit-il être converti à sa taille d'origine lors du paiement lorsque l'on utilise Git LfS?
7
Sidharth Rath

Cela peut être fait en utilisant le normal Git + Plugin pour Jenkins (à partir de la version 3.1.0).

Si vous utilisez Jenkins Pipelines (c'est-à-dire avec un fichier Jenkins à la racine de votre référentiel), l'essentiel est d'inclure l'extension [$class: 'GitLFSPull'] Dans votre appel checkout(). Voici un exemple (édité) tiré de l'un de nos repos:

checkout([  $class: 'GitSCM', 
    branches: [[name: 'refs/heads/'+env.BRANCH_NAME]],
        doGenerateSubmoduleConfigurations: false,
        extensions: [
            [$class: 'GitLFSPull'],
            [$class: 'CheckoutOption', timeout: 20],
            [$class: 'CloneOption',
                    depth: 0,
                    noTags: false,
                    reference: '/other/optional/local/reference/clone',
                    shallow: false,
                    timeout: 120]
        ],
        submoduleCfg: [],
        userRemoteConfigs: [
            [credentialsId: 'foobar',
            url: 'https://github.com/foo/bar.git']
        ]
    ])

En utilisant le générateur d'extraits de code, il est possible de générer ce code, en sélectionnant "Git LFS pull after checkout" dans le menu "Additional Behaviors". Voir capture d'écran ici

16
Andy Smith

Cela peut être fait avec le plugin "Pre SCM BuildStep".

  1. Ajouter Plugin "Pre SCM BuildStep" dans Jenkins.
  2. Dans Configuration du travail, sélectionnez la propriété Exécutez buildstep avant l'exécution de SCM dans la section Environnement de génération et cliquez sur Ajouter une étape de génération, sélectionnez Exécuter le shell. Ajouter la commande ci-dessous dans le shell, git lfs install
  3. Dans la section Gestion du code source -> Comportements supplémentaires -> Ajouter Git LFS pull after checkout .

Lien de référence

5
Priya Talreja