Установите задание Jenkins, чтобы не клонировать репо в SCM

17

Я интегрировал Jenkins с Bitbucket с помощью плагина Bitbucket . Согласно Wiki плагина, задание будет запущено, если хранилище установлено в SCM задания. Как вы знаете, если установить SCM в задании Jenkins, это будет клонировано на этапе предварительной сборки.

Все идет нормально. Однако основная цель задания, которое я задаю, не имеет ничего общего с содержимым репозитория; вместо этого я просто хочу, чтобы задание обрабатывало полезную нагрузку, отправленную Bitbucket. Можно сказать, что с точки зрения хранилища нет ничего сложного в клонировании репозитория, несмотря на то, что он вам действительно не нужен. Я так не думаю, добавление ненужных шагов, отнимание времени и ресурсов не является хорошей практикой.

Итак, вопрос: кто-нибудь знает, как установить SCM в задании Jenkins, но предотвратить его клонирование хранилища?

Эктор Вальверде Пареха
источник
2
Похоже, вы пытаетесь использовать Дженкинс в качестве микро-сервиса, который выходит за рамки Дженкинса :). Делайте пост обратно, если у вас это получится, хотя это интересно.
Трэвис Томпсон
Я не использую Дженкинс как микро сервис. Почему ты это сказал? В действительности все это обходной путь: я использую конвейерное задание, которое является общим для многих репозиториев. Jenkinsfile находится в другом хранилище. Таким образом, я не могу запустить конвейер напрямую с помощью плагина Bitbucket, потому что он просто не запускает его, поэтому я решил создать «прокси-задание» для репо и отправить информацию в конвейер как последующее задание. В такой «прокси-работе» мне не нужно клонировать репо, но это должно быть в SCM.
Гектор Вальверде
Это очень трудно понять, и вы пишете больше о том, что невозможно, чем о том, чего вы на самом деле хотите достичь. Может быть, вы можете добавить больше информации о том, чего вы на самом деле хотите достичь, и как вписываются ваши прокси-задания?
Майкл Ле Барбье Грюневальд,
Я думаю, вы говорите о моем комментарии выше. Это просто ответ на первый комментарий. Пожалуйста, обратитесь к основному вопросу, добавить больше нечего. То, что я хочу, чтобы вы достигли, очень ясно: «Запретите Дженкинсу клонировать репозиторий во время сборки».
Гектор Вальверде
1
@ HéctorValverdePareja Конечно, но ваша формулировка, кажется, колеблется между А / предоставлением достаточного количества деталей, чтобы каждый мог проверить, если вы находитесь в ситуации с проблемой XY, и В / просто для того, чтобы сосредоточиться на том, чего вы хотите достичь. Я думаю (мнение), что вы могли бы устранить это колебание, достаточно подробно описав свою первоначальную проблему и решение, которое вы пытаетесь реализовать. Но теперь, когда кто-то написал ответ, это может быть уже не так важно.
Михаэль Ле Барбье Грюневальд

Ответы:

18

Да, безусловно. Я делаю это все время. Вы можете указать параметры конфигурации для своего конвейера, и один из них заключается в том skipDefaultCheckout, что конвейер пропускает этап по умолчанию «Декларативный: Checkout SCM».

skipDefaultCheckoutОпция описана в трубопроводном Синтаксис и вот пример Jenkinsfile , показывающий , как использовать его:

pipeline {
  agent { label 'docker' }
  options {
    skipDefaultCheckout true
  }
  stages {
    stage('commit_stage') {
      steps {
        echo 'sweet stuff here'
      }
    }
  }
}
burnettk
источник
1
Как бы ты. Вручную клонировать репозиторий в стадии?
Oz123
2
Вы можете запустить, checkout scmчтобы вручную клонировать, где вам нужно. см. devops.stackexchange.com/a/1916/2450 .
Burnettk
5

Если вы не используете декларативный конвейер, вы можете избежать проверки из SCM:

node {
        skipDefaultCheckout()
        //...
}
user3118604
источник
1
Не могли бы вы добавить ссылку на документацию и объяснить подробнее о skipDefaultCheckout ()?
030
Я не вижу никакой добавленной стоимости по сравнению с существующим ответом, это просто «попробуй это» без объяснения и не хороший ответ.
Тенсибай
Этот ответ является хорошим дополнением к принятому ответу - не все будут использовать декларативный плагин Pipeline, так что это работает для тех, кто использует процедурный.
RichVel
1

Я думаю, что вы хотите достичь, обрабатывая полезную нагрузку webhook в работе Jenkins. Использовать плагин bitbucket не нужно, и, вероятно, он предназначен для клонирования репозитория.

Я верю, что этот ответ может помочь вам.

Fanch
источник
Пожалуйста,
включите
1
Добро пожаловать в DevOps! Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
Ричард Слейтер
@RichardSlater Я не уверен насчет политики DevOps, но другие сайты делают исключение для внутрисетевых ссылок.
цыплята
3
@chicks даже ссылки на StackOverflow подвержены гниению ссылок, и, суммируя вопрос, он дает четкое указание на другие причины, по которым ответчик считает, что на вопрос отвечает ссылка.
Ричард Слейтер,