SCM에서 저장소를 복제하지 않도록 Jenkins 작업 설정


17

Bitbucket Plugin을 사용하여 Jenkins를 Bitbucket과 통합했습니다 . 플러그인의 Wiki에 따라 저장소가 작업의 SCM에 설정된 경우 지정된 작업이 트리거됩니다. 아시다시피, Jenkins 작업에서 SCM을 설정하면 사전 빌드 단계에서 복제됩니다.

여태까지는 그런대로 잘됐다. 그러나 내가 설정 한 작업의 주요 목적은 저장소의 내용과 관련이 없습니다. 대신, Bitbucket이 보낸 페이로드를 작업에서 처리하기를 원합니다. 실제로는 필요하지 않지만 저장소를 복제하는 것은 스토리지 측면에서 큰 문제가 아니라고 말할 수 있습니다. 나는 그렇게 생각하지 않습니다. 불필요한 단계를 추가하고 시간과 자원을 소비하는 것은 좋은 습관이 아닙니다.

질문은 Jenkins 작업에서 SCM을 설정하는 방법을 알고 있지만 리포지토리를 복제하지 못하게하는 것입니까?


2
Jenkins를 Jenkins의 범위를 벗어난 마이크로 서비스로 사용하려고하는 것처럼 들립니다. :). 이 작업이 흥미 롭기 때문에 게시하면 다시 게시하십시오.
— 트래비스 톰슨

Jenkins를 마이크로 서비스로 사용하고 있지 않습니다. 왜 그런 말을 해? 실제로이 모든 것이 해결 방법입니다. 많은 리포지토리에 공통적 인 파이프 라인 작업을 사용하고 있습니다. Jenkinsfile이 다른 저장소에 있습니다. 따라서 Bitbucket 플러그인을 사용하여 파이프 라인을 직접 트리거 할 수는 없으므로 트리거하지 않기 때문에 리포 당 "프록시 작업"을 생성하고 다운 스트림 작업으로 파이프 라인에 정보를 전송하기로 결정했습니다. 이러한 "프록시 작업"에서 리포지토리를 복제 할 필요는 없지만 SCM에 있어야합니다.
— Héctor Valverde Pareja

이해하기가 어렵고 실제로 달성하고자하는 것보다 불가능한 것에 대해 더 많이 쓰고 있습니다. 실제로 달성하고자하는 것과 프록시 작업이 어떻게 적용되는지에 대해 더 자세한 정보를 추가 할 수 있습니까?
— Michael Le Barbier Grünewald

나는 당신이 위의 내 의견에 대해 이야기하고 있다고 생각합니다. 첫 의견에 대한 답일뿐입니다. 주요 질문을 참조하십시오. 추가 할 것이 없습니다. 내가 원하는 것은 "빌드 도중 Jenkins가 저장소를 복제하지 못하도록 방지"라는 것입니다.
— Héctor Valverde Pareja

1
@ HéctorValverdePareja 물론, 당신의 말은 A가 충분한 세부 사항을 제공하는 것 사이에서 주저하는 것처럼 보이므로 모든 사람들이 XY 문제 상황에 있는지 확인하고 B / 단지 당신이 달성하고자하는 정확한 것에 집중할 수 있습니다. 나는 당신이 원래의 문제와 당신이 구현하려고하는 해결책을 충분히 묘사 함으로써이 주저를 제거 할 수 있다고 생각합니다. 그러나 이제 누군가가 답변을 썼으므로 더 이상 중요하지 않을 수 있습니다.
— Michael Le Barbier Grünewald

답변:


18

물론 이죠 나는 항상 이것을한다. 파이프 라인에 대한 구성 옵션을 지정할 수 있으며 그 중 하나는 skipDefaultCheckout이므로 파이프 라인이 기본 "Declarative : 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

기존 답변과 비교하여 부가가치를 보지 못합니다. 설명없이 좋은 답변이 아닌 '이것을 시도하십시오'입니다.
— Tensibai

이 답변은 허용되는 답변을 보완하는 것으로 좋습니다. 모든 사람이 선언적 파이프 라인 플러그인을 사용하지는 않으므로 절차 적 플러그인을 사용하는 사람들에게 효과적입니다.
— RichVel

1

Jenkins 작업에서 웹훅 페이로드를 처리하는 것이 목표라고 생각합니다. 비트 버킷 플러그인을 사용할 필요는 없으며 아마도 리포지토리를 복제하도록 강력하게 설계되었을 것입니다.

이 stackoverflow 답변 이 도움이 될 수 있다고 믿습니다 .


그 링크 된 답변에서 관련 인용문을 포함하십시오 ...
— Pierre.Vriens

1
DevOps에 오신 것을 환영합니다! 이것이 이론적으로 질문에 대답 할 수 있지만 여기에 답의 핵심 부분을 포함시키고 참조 할 수있는 링크를 제공하는 것이 바람직 합니다.
— Richard Slater

@RichardSlater DevOps 정책에 대해 잘 모르겠지만 다른 사이트에서는 네트워크 내 링크를 제외합니다.
— 병아리

3
@chicks 심지어 StackOverflow 링크는 링크가 썩을 수 있으며 질문을 요약하면 답변자가 링크에 의해 질문에 대한 답변이 있다고 믿는 다른 이유를 명확하게 나타냅니다.
— Richard Slater
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.