gpt4 book ai didi

jenkins - 如何在 Jenkinsfile 中将 Artifactory DiscardOldBuilds 设置为 true?

转载 作者:行者123 更新时间:2023-12-02 18:59:44 25 4
gpt4 key购买 nike

我正在努力使用 Jenkins 多分支管道实现构建作业。最后阶段是将构建输出上传到 Artifactory。

通过界面配置独立作业时,有一个选项“放弃来自 Artifactory 的旧构建”,这允许我仅保留“要保留的最大构建数”设置中指定的相同数量的构建。

我的 Jenkinsfile 中的上传阶段配置如下:https://wiki.jenkins-ci.org/display/JENKINS/Artifactory+-+Working+With+the+Pipeline+Jenkins+Plugin

...我的 Jenkinsfile 中还有以下内容,它可以清理 Jenkins 工作区中的构建:

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

如何在 Jenkinsfile 中将丢弃OldBuilds 设置为 true,以便我还可以清理存储在 Artifactory 中的构建?

最佳答案

进入官方Jenkins文件https://github.com/jenkinsci/jenkins/blob/master/Jenkinsfile有:

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

自己使用 github 插件和 jenkins 多分支管道的示例:

#!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: 'noreply-jenkins@xxxxxxx.io',
to: 'tools@xxxxxxx.io',
subject: "[JENKINS] ${env.JOB_NAME} - Build # ${env.BUILD_NUMBER} - [SUCCESS]!",
body: "${env.JOB_NAME} - Build # ${env.BUILD_NUMBER} - SUCCESS!"

}
catch (Exception ex) {
mail from: 'noreply-jenkins@xxxxxxx.io',
to: 'tools@xxxxxxx.io',
subject: "FAILURE - [JENKINS] ${env.JOB_NAME} - Build # ${env.BUILD_NUMBER} - [FAILURE]!",
body: "${env.JOB_NAME} - Build # ${env.BUILD_NUMBER} - FAILURE (${ex.message})!"
throw ex
}

}

在我的 Sonatype Nexus 中,我创建了一个清理 Artifactory 的任务。 enter image description here

我不使用“Artifactory”,但我相信您可以创建一个内部任务来清除它。

也可以手动删除,如果是maven使用的话,可以按照这个例子:

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

希望对你有帮助。

关于jenkins - 如何在 Jenkinsfile 中将 Artifactory DiscardOldBuilds 设置为 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37974216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com