2016-06-22 2 views
5

저는 Jenkins Multibranch Pipelines를 사용하여 빌드 작업을 구현하려고합니다. 마지막 단계는 Artifactory에 빌드 출력을 업로드하는 것입니다.Jenkinsfile에서 Artifactory discardOldBuilds를 true로 설정하는 방법은 무엇입니까?

인터페이스를 통해 독립 실행 형 작업을 구성하는 경우 "Artifactory에서 이전 빌드 무시"옵션을 사용하여 "유지할 최대 빌드 수"설정에서 지정한 것과 동일한 수의 빌드 만 유지할 수 있습니다. https://wiki.jenkins-ci.org/display/JENKINS/Artifactory+-+Working+With+the+Pipeline+Jenkins+Plugin

을 ... 그리고 나는 또한 클린 업이 젠킨스 작업 공간 빌드 않는 내 Jenkinsfile에 다음과 같습니다 :

내 Jenkinsfile에 업로드 단계는 다음과 같이 구성되어

properties([[$class: 'BuildDiscarderProperty', strategy: [$class: 'LogRotator', numToKeepStr: '10']]]) 

Artifactory에 저장된 빌드를 정리할 수 있도록 내 Jenkinsfile에서 discardOldBuilds를 true로 설정하려면 어떻게해야합니까? 공식 JenkinsFile https://github.com/jenkinsci/jenkins/blob/master/Jenkinsfile 속으로

답변

4

이것은 최신 Artifactory Jenkins 플러그인에서 수정되었습니다. 문서 당으로

, 빌드 정보가 Artifactory에 게시하는 경우 빌드 보유를 트리거하려면 다음과 같은 방법을 사용합니다

buildInfo retention maxBuilds: 10 
buildInfo retention maxDays: 7 
// deleteBuildArtifacts is false by default. 

buildInfo retention maxBuilds: 10, maxDays: 7, doNotDiscardBuilds: ["3", "4"], deleteBuildArtifacts: true 
+0

''3,4 '가''doNotDiscardBuilds : [ "3", "4"]' – uncletall

+1

에서 무엇을 의미하는지 물어볼 수 있습니다. 젠킨스에서 번호가 매겨진 # 3과 # 4의 빌드는 버려지지 않습니다. 이것은 maxBuilds에 추가되지 않으므로 maxBuilds를 10으로 설정하면 빌드 # 3, # 4 및 최신 8을 유지합니다. – rasebo

3

가 있습니다

properties([[$class: 'jenkins.model.BuildDiscarderProperty', strategy: 
      [$class: 'LogRotator', numToKeepStr: '50', artifactNumToKeepStr: '20'] 
      ]]) 

GitHub의 플러그인 및 젠킨스 multibranch 파이프 라인에 자신의 사용의 예 : 내 Sonatype 넥서스에서

#!groovy 

node { 

    try { 
    properties([ 
     [ 
     $class: 'jenkins.model.BuildDiscarderProperty', 
     strategy: [ 
      $class: 'LogRotator', 
      numToKeepStr: '10' 
      ] 
     ], 
     [ 
     $class: 'GithubProjectProperty', 
     displayName: '', 
     projectUrlStr: 'https://github.com/xxxxxxx/xxxxx-xxxx/' 
     ] 
    ]) 

    env.JAVA_HOME = tool 'JDK8' 
    def mvnHome = tool 'Maven' 

    stage 'Clean Workspace' 
     deleteDir() 


    stage 'Git Checkout Source' 
     checkout scm 


    stage 'Build Maven Module' 
     sh "${mvnHome}/bin/mvn clean install -DskipTests=true -DskipITs=true -U" 


    stage 'Unit Test Maven Module' 
     sh "${mvnHome}/bin/mvn test -DskipTests=false -DskipITs=true" 


    stage 'Integration Test Maven Module' 
     sh "${mvnHome}/bin/mvn verify -DskipTests=true -DskipITs=false" 


    stage 'Nexus Deploy Artifact' 
     sh "${mvnHome}/bin/mvn deploy:deploy -Pnexus-deploy" 


    stage 'Trigger Job xxxxxx-xxxxxx /master' 
     build job: 'xxxxxx-xxxxxx/master', propagate: false, wait: false 



    stage 'Send Success Email' 
     mail from: '[email protected]', 
      to: '[email protected]', 
      subject: "[JENKINS] ${env.JOB_NAME} - Build # ${env.BUILD_NUMBER} - [SUCCESS]!", 
      body: "${env.JOB_NAME} - Build # ${env.BUILD_NUMBER} - SUCCESS!" 

    } 
    catch (Exception ex) { 
    mail from: '[email protected]', 
     to: '[email protected]', 
     subject: "FAILURE - [JENKINS] ${env.JOB_NAME} - Build # ${env.BUILD_NUMBER} - [FAILURE]!", 
     body: "${env.JOB_NAME} - Build # ${env.BUILD_NUMBER} - FAILURE (${ex.message})!" 
    throw ex 
    } 

} 

, 내가 정리 작업을 만든 유물. enter image description here

'Artifactory'는 사용하지 않지만 내부 작업을 생성하여 지울 수 있다고 생각합니다. 또한 수동으로 받는다는 사용의 경우, 제거 할 수 있습니다

, 당신은이 모범을 따를 수 :

How do you deal with maven-3 timestamped snapshots efficiently?

을 내가 당신을 도와 바랍니다.

+1

그것이 작동하지 않는 노력, 그리고 그게위한 옵션입니다 확실하지 않다 Artifactory 플러그인. 불행히도 지금까지 Multibranch 파이프 라인 용 Artifactory DSL이 구현되는 방법에 대한 제한 사항 인 것처럼 보입니다. – rasebo

+0

나는 그것을 사용하고 그것은 나를 위해 작동합니다. 나는 자신의 사용 예를 삽입 할 것이다. – frekele

3

트리거링 Artifactory 파이프 라인 스크립트의 빌드 유지는 Jenkins Artifactory Plugin의 다음 릴리스에서 지원 될 예정입니다. 이 문제를 참조하십시오 : https://www.jfrog.com/jira/browse/HAP-796

+0

정보를 보내 주셔서 감사합니다. 다음으로 업데이트를 기다리십시오. – rasebo

관련 문제