Установите задание 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'
      }
    }
  }
}

1
Как бы ты. Вручную клонировать репозиторий в стадии?
Oz123

2
Вы можете запустить, checkout scmчтобы вручную клонировать, где вам нужно. см. devops.stackexchange.com/a/1916/2450 .
Burnettk

5

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

node {
        skipDefaultCheckout()
        //...
}

1
Не могли бы вы добавить ссылку на документацию и объяснить подробнее о skipDefaultCheckout ()?
030

Я не вижу никакой добавленной стоимости по сравнению с существующим ответом, это просто «попробуй это» без объяснения и не хороший ответ.
Тенсибай

Этот ответ является хорошим дополнением к принятому ответу - не все будут использовать декларативный плагин Pipeline, так что это работает для тех, кто использует процедурный.
RichVel

1

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

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


Пожалуйста,
включите

1
Добро пожаловать в DevOps! Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
Ричард Слейтер

@RichardSlater Я не уверен насчет политики DevOps, но другие сайты делают исключение для внутрисетевых ссылок.
цыплята

3
@chicks даже ссылки на StackOverflow подвержены гниению ссылок, и, суммируя вопрос, он дает четкое указание на другие причины, по которым ответчик считает, что на вопрос отвечает ссылка.
Ричард Слейтер,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.