Ustaw zadanie Jenkinsa, aby nie klonowało repozytorium w SCM

17

Zintegrowałem Jenkins z Bitbucket za pomocą wtyczki Bitbucket . Zgodnie z Wiki wtyczki dane zadanie zostanie uruchomione, jeśli repozytorium jest ustawione w SCM zadania. Jak wiadomo, jeśli jeden zestaw SCM zostanie ustawiony w zadaniu Jenkinsa, zostanie on sklonowany na etapie przed kompilacją.

Jak na razie dobrze. Jednak główny cel zadania, które ustawiam, nie ma nic wspólnego z zawartością repozytorium; zamiast tego chcę tylko, aby zadanie przetworzyło ładunek wysłany przez Bitbucket. Można powiedzieć, że klonowanie repozytorium nie jest wielkim problemem, jeśli tak naprawdę nie jest to potrzebne. Nie sądzę, aby dodawanie niepotrzebnych kroków, pochłanianie czasu i zasobów nie było dobrą praktyką.

Pytanie brzmi więc: czy ktoś wie, jak ustawić SCM w zadaniu Jenkinsa, ale nie może sklonować repozytorium?

Héctor Valverde Pareja
źródło
2
Wygląda na to, że próbujesz użyć Jenkinsa jako usługi mikro, która jest trochę poza zakresem Jenkinsa :). Napisz ponownie, jeśli zadziała, ponieważ jest to interesujące.
Travis Thompson
Nie używam Jenkinsa jako usługi mikro. Dlaczego to mówisz? W rzeczywistości wszystko to jest obejście: używam zadania rurociągu, które jest wspólne dla wielu repozytoriów. Jenkinsfile znajduje się w innym repozytorium. Dlatego nie mogę wyzwolić potoku bezpośrednio za pomocą wtyczki Bitbucket, ponieważ po prostu go nie wyzwala, dlatego postanowiłem utworzyć „zadanie proxy” dla każdego repozytorium i wysłać informacje do potoku jako zadanie podrzędne. W takim „zadaniu proxy” nie muszę klonować repozytorium, ale musi to być SCM.
Héctor Valverde Pareja
Jest to bardzo trudne do zrozumienia i piszesz więcej o tym, co jest niemożliwe niż o tym, co naprawdę chcesz osiągnąć. Może możesz dodać więcej szczegółów na temat tego, co naprawdę chcesz osiągnąć i jak pasują do tego zadania proxy?
Michael Le Barbier Grünewald
Chyba mówisz o moim komentarzu powyżej. To tylko odpowiedź na pierwszy komentarz. Proszę odnieść się do głównego pytania, nie ma nic więcej do dodania. To, co chcę osiągnąć, jest bardzo jasne: „Zapobiegaj klonowaniu repozytorium przez Jenkinsa podczas kompilacji”.
Héctor Valverde Pareja
1
@ HéctorValverdePareja Pewnie, ale twoje sformułowanie wydaje się wahać między A / podaniem wystarczającej liczby szczegółów, aby każdy mógł sprawdzić, czy masz problem z XY, a B / tylko skupić się na dokładnej rzeczy, którą chcesz osiągnąć. Myślę (opinia), że możesz usunąć to wahanie, opisując wystarczająco dokładnie swój pierwotny problem i rozwiązanie, które próbujesz wdrożyć. Ale teraz, gdy ktoś napisał odpowiedź, może to już nie być tak ważne.
Michael Le Barbier Grünewald

Odpowiedzi:

19

Tak, zdecydowanie. Robię to cały czas. Możesz określić opcje konfiguracji swojego potoku, a jedną z nich jest skipDefaultCheckout, co powoduje, że potok pomija domyślny etap „Deklaratywny: Checkout SCM”.

skipDefaultCheckoutOpcja jest udokumentowana w rurociągu Składnia i oto przykład Jenkinsfile pokazując jak go używać:

pipeline {
  agent { label 'docker' }
  options {
    skipDefaultCheckout true
  }
  stages {
    stage('commit_stage') {
      steps {
        echo 'sweet stuff here'
      }
    }
  }
}
Burnettk
źródło
1
Jak byś chciał. Ręcznie sklonować repozytorium na etapie?
Oz123
2
możesz uruchomić, checkout scmaby ręcznie sklonować tam, gdzie potrzebujesz. patrz devops.stackexchange.com/a/1916/2450 .
burnettk
5

Jeśli nie używasz Deklaratywnego potoku, możesz uniknąć wyewidencjonowania z SCM przez:

node {
        skipDefaultCheckout()
        //...
}
użytkownik3118604
źródło
1
Czy możesz dodać link do dokumentacji i wyjaśnić więcej na temat skipDefaultCheckout ()?
030
Nie widzę żadnej wartości dodanej w porównaniu do istniejącej odpowiedzi, to tylko „spróbuj tego” bez wyjaśnienia i niezbyt dobrej odpowiedzi.
Tensibai
Ta odpowiedź jest w porządku jako uzupełnienie przyjętej odpowiedzi - nie wszyscy będą używać deklaratywnej wtyczki Pipeline, więc działa to dla osób korzystających z procedury.
RichVel,
1

Myślę, że chcesz osiągnąć ładunek haka sieciowego w zadaniu Jenkinsa. Korzystanie z wtyczki bitbucket nie będzie konieczne i prawdopodobnie jest silnie zaprojektowane do klonowania repozytorium.

Wierzę, że ta odpowiedź na przepełnienie stosu może ci pomóc.

Fanch
źródło
Podaj odpowiedni cytat z tej powiązanej odpowiedzi ...
Pierre.Vriens
1
Witamy w DevOps! Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
Richard Slater
@RichardSlater Nie jestem pewien zasad dotyczących DevOps, ale inne strony robią wyjątek dla łączy wewnątrz sieci.
pisklęta
3
@ kurczaki nawet linki StackOverflow podlegają rozkładowi linków, a podsumowanie pytania daje wyraźne wskazanie innych powodów, dla których osoba odpowiadająca uważa, że ​​link odpowiada na pytanie.
Richard Slater