Настройка Git LFS в jenkins

У меня проблема с использованием git LFS в Jenkins. То, что я делаю сейчас, это то, что

  1. Я строю войну от maven через Jenkins, эта война содержит файл jar
  2. через Git LFS мы преобразовали этот файл jar в файл указателя. Но во время оформления заказа у Дженкинса эта банка не преобразуется в свой первоначальный размер, а включается в войну как указатель.

Мы использовали плагин git и плагин git-client с версиями 3.3.0 и 2.4.2 соответственно в Jenkins.

Что случилось:

A.war -> a.jar (чей исходный размер составляет 1234 КБ, но он приближается к 3 КБ (это размер файла указателя)

поэтому мои вопросы:

  1. как использовать git LFS в Jenkins?
  2. есть ли отдельный плагин Git Lfs для Jenkins?
  3. Как файл должен преобразовываться в исходный размер во время проверки, когда используется Git LfS?

person Sidharth Rath    schedule 05.07.2017    source источник
comment
На первый взгляд, документы не очень хороши, и у меня нет Jenkins под рукой, поэтому я не могу полностью ответить. Тем не менее, я могу сказать следующее: вам не нужен отдельный плагин, так как плагин git поддерживает LFS с версии 3.1.0. Вы можете найти помощь в этом журнале проблем: issues.jenkins-ci.org/browse/JENKINS-35687   -  person Mark Adelsberger    schedule 05.07.2017


Ответы (2)


Это можно сделать с помощью обычного Git+Plugin для Jenkins (версия 3.1.0 далее).

Если вы используете Jenkins Pipelines (т. е. с Jenkinsfile в корне вашего репозитория), ключевым моментом является включение расширения [$class: 'GitLFSPull'] в ваш вызов checkout(). Вот (отредактированный) пример, взятый из одного из наших репозиториев:

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']
        ]
    ])

С помощью генератора фрагментов можно сгенерировать этот код, выбрав «Git LFS pull after checkout» в меню «Дополнительные действия». См. скриншот здесь

person Andy Smith    schedule 07.07.2017
comment
Спасибо... Это сработало; ненавижу жестко закодировать мой репозиторий git. Мы используем организации в github, и я надеялся, что смогу установить все оттуда; позор, у него есть поддержка git lfs pull после оформления заказа, но, похоже, он на самом деле не работает. Черт, я ненавижу Дженкинса. Не могу дождаться, чтобы уйти от этого дерьма. - person TJ Biddle; 12.06.2018
comment
Дал мне это: hudson.plugins.git.GitException: команда git lfs pull origin вернула код состояния 1: stdout: stderr: git: 'lfs' не является командой git. См. «git --help». Вы имели в виду это? журнал . Для этого может потребоваться git lfs, предварительно установленный на подчиненном устройстве... - person Prathamesh dhanawade; 08.08.2019

Это можно сделать с помощью плагина «Pre SCM BuildStep».

  1. Добавьте плагин Pre SCM BuildStep в Jenkins.
  2. В разделе «Конфигурация задания» выберите свойство Выполнить шаг сборки перед запуском SCM в разделе «Среда сборки» и нажмите «Добавить шаг сборки», выберите «Выполнить оболочку». Добавьте команду ниже в оболочку, git lfs install
  3. В разделе «Управление исходным кодом» -> «Дополнительные варианты поведения» -> «Добавить Git LFS pull after checkout».

Справочная ссылка

person Priya Talreja    schedule 07.08.2019