2016-06-08 2 views
6

우리는 Jenkins를 지속적인 통합에 사용하고 있습니다. 일반적인 빌드 작업은 "소스 코드 관리"섹션에서 SVN 저장소와 자격 증명을 지정하고 "빌드 트리거"섹션에서 폴링 일정을 매 10 분 (H/10 * * * *)으로 "폴 SCM"). 젠킨스의 최신 버전으로 업데이트되었으며 파이프 라인 빌드를 설정하려고합니다. 새로운 버전은 SVN 저장소에 체크인 때마다 실행되도록SubVersion을 폴링하여 Jenkins 파이프 라인을 트리거하도록 구성하려면 어떻게해야합니까?

node { 
    stage 'Build' 
    build job: 'MyApplication Build' 
    stage 'Deploy to test environment' 
    build job: 'MyApplication Deploy', parameters: [ 
     [$class: 'StringParameterValue', name: 'DatabaseServer', value: 'DatabaseServer1'], 
     [$class: 'StringParameterValue', name: 'WebServer', value: 'WebServer1'] 
    ] 
    stage 'RunIntegrationTests' 
    build job: 'MyApplication Test', parameters: [ 
     [$class: 'StringParameterValue', name: 'DatabaseServer', value: 'DatabaseServer1'], 
     [$class: 'StringParameterValue', name: 'WebServer', value: 'WebServer1'] 
    ] 
} 

파이프 라인 작업이 수동으로 트리거 후 모든 것이 잘 실행되면, 그러나 우리는이 파이프 라인을 좋아하는 것 : 일반적인 파이프 라인 스크립트는 것 같습니다. 파이프 라인 구성에는 "폴 SCM"빌드 트리거 옵션이 있지만 리포지토리를 지정할 수있는 "소스 코드 관리"섹션이 없습니다. 우리는 어떻게 이것을 할 수 있습니까?

답변

2

나는 일에 발견 한이 솔루션은 다음과 같습니다

    파일로 파이프 라인 스크립트를 이동합니다 (기본값은 JenkinsFile입니다) 서브 버전에서 내 프로젝트의 루트에이를 저장
  1. .
  2. 파이프 라인 작업 정의 소스를 "SCM에서 파이프 라인 스크립트"로 설정하고 일반적인 Jenkins 빌드 작업에 따라 SubVersion에서 프로젝트를 찾을 위치의 세부 정보를 입력하고 파이프 라인 스크립트가 포함 된 JenkinsFile을 가리 키도록 스크립트 경로를 설정하십시오 .
  3. 파이프 라인 작업의 빌드 트리거를 "Poll SCM"으로 설정하고 일정을 입력하십시오.
  4. 수동으로 4 단계, 수동으로 설문 조사 트리거가 폴링 올바른 저장소를 데리러 발생하는 파이프 라인 작업을 실행하는 것 같았다

파이프 라인 작업을 실행합니다. 그 전에는 어디를보아야하는지 알지 못했습니다.

+0

3 단계에서 빌드 트리거 속성을 설정하는 데 사용되는 그루비 라인이 있습니까? 나는 그것이'properties();'메소드 내에서 중첩 될 것이라고 생각합니까? – tarabyte

+0

나는 Jenkinsfile 자체에 변화가있을 때만 작동 할 것이라고 생각합니다 ... – Philippe

3

나는 당신이 SCM의 정보로 구성하여 빌드 단계 전에 전에 체크 아웃 단계를 필요가 있다고 생각합니다. 이렇게하면 작업을 Poll SCM 원하는 간격으로 허용하고 파이프 라인을 실행하십시오.

SCM에서 파이프 라인 코드를 JenkinsFile로 저장할 필요없이 파이프 라인 스크립트를 사용할 수도 있습니다. 하지만 내 파이프 라인 작업

stage('Checkout') { 
    checkout([$class: 'SubversionSCM', 
     additionalCredentials: [], 
     excludedCommitMessages: '', 
     excludedRegions: '', 
     excludedRevprop: '', 
     excludedUsers: 'buildbot', 
     filterChangelog: false, 
     ignoreDirPropChanges: false, 
     includedRegions: '', 
     locations: [[credentialsId: 'b86bc2b6-994b-4811-ac98-0f35e9a9b114', 
      depthOption: 'infinity', 
      ignoreExternalsOption: true, 
      local: '.', 
      remote: "http://svn/something/trunk/"]], 
     workspaceUpdater: [$class: 'UpdateUpdater']]) 
} 

작품 : 내 단계를 작성하기 전에

다음은 내 SVN 체크 아웃 단계 파이프 라인 코드입니다. 희망이 도움이됩니다. 포함

pipeline { 
    agent any 
    triggers { 
     pollSCM 'H/10 * * * *' 
    } 
    stages { 
     stage('checkout') { 
      steps { 
       checkout([$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[credentialsId: 'mySvnCredentials', depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote: 'http://example.com/svn/url/trunk']], workspaceUpdater: [$class: 'CheckoutUpdater']]) 
      } 
     } 
    } 
} 

pollSCM 트리거가 자동으로 빌드와 관련된 모든 SCM 저장소 URL을 폴링해야 다음과 같이

+0

코드 스 니펫에서 자격 증명을 어떻게 얻습니까? – DavidA

+0

'$ (Jenkins_URL)/credentials /'로 가서 설정된 자격 증명 목록에서 ID를 선택하십시오. – zionyx

2

젠킨스 Declarative Pipeline 스크립트를 사용하여, 당신은 SVN의 저장소의 URL을 10 분마다 폴링 작업을 구성 할 수 있습니다 checkout 단계로 지정된 URL, SCM의 선언 파이프 라인 스크립트 URL 및 전역 파이프 라인 라이브러리의 URL 그러나 모든 개정판에 파이프 라인이 실제로 실행되도록하려면 post-commit hook을 대신 설정해야합니다.

+0

전체 파이프 라인 스테이지를 폴링합니까? – Akki

+0

@Akki 나는 어떤 단계의 단계에서 실행되면 URL을 기억한다고 나는 믿는다. – heenenee

+0

'includedRegions' (다른 옵션을 테스트하지 않은 것)는 폴링 할 때 무시됩니다. 'includedRegions'가 지정된 위치에 어떤 체크 인으로 설정되어 있더라도 빌드가 트리거됩니다. 어떤 제안? – Adam

0

파이프 라인 스크립트가 프로젝트의 일부가 아니거나 작업에서 정의 된 경우 대신 poll: true을 계산대에 추가 할 수 있습니다.

예 :이 SCM에서 또한이 경우에 해당 파이프 라인 인 SCM에서 폴링을 시작합니다 첫 번째 실행 후

stage('checkout') { 
    checkout(
     changelog: true, 
     poll: true, /*This is the important option*/ 
     scm: [ 
      $class: 'SubversionSCM', 
      filterChangelog: false, 
      ignoreDirPropChanges: false, 
      locations: [...], /*ommited for obvious reasons*/ 
      workspaceUpdater: [$class: 'CheckoutUpdater'] 
     ]) 
} 

.

이 옵션은 페이지 맨 끝에 https://jenkins.io/doc/pipeline/steps/workflow-scm-step/#code-checkout-code-general-scm에 문서화되어 있습니다.

관련 문제