首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Artifactory retention具有最大构建数

Artifactory retention具有最大构建数
EN

Stack Overflow用户
提问于 2018-05-26 03:09:38
回答 2查看 1.1K关注 0票数 0

我使用带有Jenkins.We的Artifactory开源版本,将Jenkins的构建推送到Artifactory,构建信息如下。

代码语言:javascript
复制
 def server = Artifactory.server('Artifactory_Server')  
 def targetArtifact = "Repo/${RepoName}/${archivePath}.zip" 

                        def uploadSpec = """{
                        "files": [
                                {
                                    "pattern": "${archivePath}.zip",            
                                    "target":  "${targetArtifact}"                              
                                }
                            ]
                            }"""    
def buildInfo = Artifactory.newBuildInfo()
buildInfo.retention maxBuilds: 2, maxDays: 2, doNotDiscardBuilds: ["5"], deleteBuildArtifacts: true                         

buildInfo.env.capture = true        

server.upload(uploadSpec)
server.publishBuildInfo(buildInfo)  

在将构建信息发布到Artifactory服务器时,构建不会被移除或删除。应该做些什么来删除构建

EN

回答 2

Stack Overflow用户

发布于 2019-02-28 04:02:02

对于其他发现这个问题的人,我听说构建保留设置只在Artifactory的专业版本中起作用。我还没有验证它不能在免费的情况下工作,但我已经验证了以下jenkinsfile在与pro Artifactory一起使用时可以正常工作:

代码语言:javascript
复制
node {
    // Obtain an Artifactory server instance, defined in Jenkins --> Manage:
    def server = Artifactory.server SERVER_ID
    def buildInfo = Artifactory.newBuildInfo()

    stage ('Collect env vars') {
        // By default the filter is configured to exclude "*password*,*secret*,*key*"
        buildInfo.env.filter.addInclude("*")
        buildInfo.env.filter.addExclude("DONT_COLLECT*")

        withEnv(['DO_COLLECT_FOO=BAR', 'DONT_COLLECT_FOO=BAR']) {
            buildInfo.env.collect()
        }
    }

    stage ('Access build info env vars') {
        echo buildInfo.env.vars['DO_COLLECT_FOO']   //BAR
        echo buildInfo.env.vars['DONT_COLLECT_FOO'] //null
    }

    stage ('Set build retention') {
        buildInfo.retention maxBuilds: 1, maxDays: 2, doNotDiscardBuilds: ["3"], deleteBuildArtifacts: true
    }

    stage ('Publish build info') {
        server.publishBuildInfo buildInfo
    }
}

这是来自JFrog examples github page

另一个要点是,这些保留规则似乎是针对元数据(存储在artifactory-build-info中的json文件)的,而不是针对构建工件的。

同样值得检查的是,在Artifactory插件中配置的用户是否有足够的权限在Artifactory中执行清理工作。可以在Artifactory中执行此操作,方法是转至:工件构建资源库浏览器-> Artifactory - -> -info -> Effective Permissions

票数 0
EN

Stack Overflow用户

发布于 2020-12-31 20:14:00

起初我也认为它不起作用,但后来我发现只有当你上传一个新的构建信息(再次触发jenkins作业)时,工件(deleteBuildArtifacts: true)和构建信息才会被删除。

我使用以下管道对其进行了测试:

代码语言:javascript
复制
#!groovy

node('master') {
    sh ("touch foo${BUILD_NUMBER}.txt")
    
    def server = Artifactory.server('artifactory')
    def uploadSpec = """{
            "files": [
                {
                    "pattern": "foo${BUILD_NUMBER}.txt",
                    "target": "<repo-name>"
                }
            ]
        }"""

    def buildInfo = server.upload spec: uploadSpec
    buildInfo.retention maxDays: 1, deleteBuildArtifacts: true // this will remove all artifacts + build-info older than 1 day (retrigger job)
    //buildInfo.retention maxBuilds: 1, deleteBuildArtifacts: true // this will only keep 1 artifact + build-info
    server.publishBuildInfo(buildInfo)
}

如此处所述:https://www.jfrog.com/confluence/display/JFROG/Scripted+Pipeline+Syntax#ScriptedPipelineSyntax-TriggeringBuildRetention

Artifactory版本:商业版7.10.2

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50535489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档