2016-06-22 6 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']]]) 

JenkinsfileでdiscardOldBuildsをtrueに設定すると、Artifactoryに保存されているビルドもクリーンアップできますか?公式JenkinsFile https://github.com/jenkinsci/jenkins/blob/master/Jenkinsfileの中へ

答えて

4

これは最新のArtifactory Jenkinsプラグインで修正されています。ドキュメントを1として

、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

これはJenkinsの#3と#4という番号のビルドは破棄されないことを意味します。これはmaxBuildsに追加されないので、maxBuildsを10に設定すると、ビルド#3、#4、および最新の8が保持されます。 – rasebo

3

がありますgithubのプラグインとジェンキンスマルチブランチパイプラインと

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

自身の使用の例:私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'を使用していませんが、内部のタスクを作成してクリアできると思います。

は手動でも、あなたがこの例に従うことができ、Mavenの使用の場合には、削除することができます。

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

私は、私はあなたを助け願っています。

+1

は、それを試してみました動作しません、と私はそれがためのオプションであることを確認していないがArtifactoryプラグイン。残念ながら、これまでのところ、マルチブランチパイプライン用Artifactory DSLがどのように実装されているかについての制限があるように見えます。 – rasebo

+0

私は使用しており、それは私のために働く。私は自分自身の使用の例を挿入します。 – frekele

3

アーティファクトのトリガパイプラインスクリプトからのビルドの保持は、Jenkins Artifactory Pluginの次期リリースでサポートされる予定です。この問題を参照してください: https://www.jfrog.com/jira/browse/HAP-796

+0

情報をありがとう、更新を楽しみにして、。 – rasebo

関連する問題