2017-09-08 2 views
2

빌드가 시작되기 전에 작업 공간을 지워야합니다. 나는 단계적으로 cleanDir()을 사용해 보았지만, 선언적 파이프 라인에서는 체크 아웃이 먼저 발생했으며 cleadDir 단계가 실행되면 체크 아웃 된 코드도 필요 없게 지워집니다. 선언적 파이프 라인에서 체크 아웃하기 전에 작업 영역을 어떻게 지울 수 있습니까?작업이 시작되기 전에 Jenkins 파이프 라인의 작업 공간을 지우는 방법

+0

무엇을'자식 깨끗한 -fdx' _after_ 체크 아웃을 실행하고 힘내 나머지를 처리하도록 어떻습니까? – StephenKing

+0

이것은 간단한 프로젝트에서 사용되었습니다. 실제 프로젝트를 확인해야합니다. @StephenKing 답변으로 코멘트를 어떻게 받아 들일 수 있습니까? – rashidcmb

+0

답변으로 게시했습니다. – StephenKing

답변

1

이런 식으로 뭔가 작동합니다 : 당신이 당신의 현재 작업 공간에있는 모든을 삭제할 수 있습니다 그 후

stash includes: 'src/**', name: 'source-code' 

:

  env.WORKSPACE = pwd() 
      sh "rm ${env.WORKSPACE}/* -fr" 
+0

이렇게하면 단계에서 호출 할 때 체크 아웃 된 코드도 삭제됩니다. – rashidcmb

+0

이렇게하면 묻는 것처럼 전체 작업 영역이 삭제됩니다. 나는 코드를 체크 아웃하기 전에 이것을하는 일을 얻었으므로 나에게 이해가 가지만. – Frankenstein

+0

코드를 체크 아웃하기 전에 파이프 라인의 다음 단계에서 코드를 체크 아웃합니까? – rashidcmb

0

약간 다른 접근 방식은 먼저 코드를 은닉하기 위해 stash step를 사용하는 것 . 나중 단계에서 다시 단순히 unstash 소스 코드 수 :

unstash 'source-code' 

은닉의 또 다른 장점/unstash는 여러 젠킨스 노드간에 파일을 공유하는 데 사용할 수 있다는 것입니다.

+0

@StephenKing 응답은 가장 간단한 방법입니다. 한 번의 작업으로 실제 프로젝트에 적용하고 영향을 확인합니다. – rashidcmb

+0

동의. 'git clean'은 이것을위한 아주 좋은 해결책입니다. Stash/Unstash 접근 방식은 다중 슬레이브 노드 환경에서 실행될 때 매우 편리하게 사용할 수 있으므로 공유하는 것이 좋습니다. – fishi

+0

당신이 기가 바이트의 데이터를 마스터와 뒤로 전송하면 즐겁지는 않을 것입니다. – StephenKing

4

는 사실, 예를 들어, 파이프 라인 플러그인, 최근의 변화에 ​​따라 내 대답을 수정해야 실행 힘내와 함께, 귀하의 VCS의 수단을 사용하여 GitHub Branch 소스 플러그인 2.2.0과 JENKINS-43507. 구성 할 수있는 여러 가지 검색 행동, 게다가

, 하나는 지금 청소를 포함하여 수행 할 추가 단계를 정의 할 수 있습니다 체크 아웃 전에 (그리고 클린 체크 아웃 후) :

enter image description here

을 파이프 라인 실행 결과 출력은 것

Cleaning workspace 
    > git rev-parse --verify HEAD # timeout=10 
Resetting working tree 
> git reset --hard # timeout=10 
> git clean -fdx # timeout=10 

그래서 전화 번호는 git clean에 가깝습니다.

+0

업데이트 후에이 옵션을 발견했습니다. 다중 파이프 라인 작업이 있고 모든 지점을 삭제할 필요가 없을 수도 있습니다. 이 경우 git clean을 사용하면 더 쉽게 사용할 수 있습니다. – rashidcmb

0
stage('Git') { 
      steps { 
       step([$class: 'WsCleanup']) 
       checkout scm 
      } 
     } 

WsCleanup 트릭

관련 문제