You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Gradle Jib与Artifactory插件将Docker镜像信息纳入构建信息

解决Gradle Jib镜像同步Artifactory Buildinfo问题

要让Jib构建的Docker镜像信息纳入Artifactory Buildinfo,需要调整Jib和Artifactory插件的配置,让两者联动,具体修改如下:

1. 调整Jib配置,指向Artifactory Docker仓库并复用认证

修改jib块,确保镜像推送到你的Artifactory Docker仓库,同时复用Artifactory插件的认证信息:

jib {
    from {
        image = "myRepo/$myBaseImage"       
    }
    to {
        // 替换为你的Artifactory Docker仓库key(通常格式为xxx-docker-local)
        image = "myRepo-docker-local/myProject:${myTag}"
        // 复用Artifactory插件的认证,避免重复配置
        auth {
            username = artifactoryPublish.repository.username
            password = artifactoryPublish.repository.password
        }
    }
}

2. 修改Artifactory插件配置,纳入镜像信息到Buildinfo

更新artifactory块,添加Docker镜像信息到Buildinfo属性,并配置关联Docker镜像发布:

artifactory {
    contextUrl = 'https://myRepo/artifactory/'
    publish {
        repository {
            repoKey = 'myRepo' // 你的Maven/Gradle仓库key
            // 建议通过gradle.properties或环境变量传递认证信息,避免硬编码
            username = project.findProperty('artifactoryUser') ?: System.getenv('ARTIFACTORY_USER')
            password = project.findProperty('artifactoryPassword') ?: System.getenv('ARTIFACTORY_PASSWORD')
        }
        clientConfig.info.setBuildNumber(project.version)
        
        // 将Docker镜像信息添加到Buildinfo的属性中
        clientConfig.info.addProperty('docker.image', "myRepo-docker-local/myProject:${myTag}")
        
        defaults {
            publications ('ALL_PUBLICATIONS')
            publishBuildInfo = true
            publishArtifacts = true
        }
        
        // 配置Docker镜像关联,确保Buildinfo能识别到该镜像
        docker {
            image = "myRepo-docker-local/myProject:${myTag}"
            publish = true
        }
    }
}

3. 关联任务,一键完成镜像推送和Buildinfo发布

添加任务依赖,让artifactoryPublish自动触发jib任务,避免手动执行两次:

tasks.artifactoryPublish.dependsOn(jib)

执行命令

运行以下命令即可完成镜像构建、推送,以及包含镜像信息的Buildinfo发布:

./gradlew artifactoryPublish

注意事项

  • 确保Artifactory已配置好Docker仓库(类型为Docker Local),并且仓库地址正确
  • 认证信息优先通过gradle.properties(添加artifactoryUser和artifactoryPassword字段)或环境变量传递,不要硬编码在构建文件中
  • 替换配置中的myRepo-docker-local、myProject等占位符为实际项目信息

内容的提问来源于stack exchange,提问作者Cengiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 18:45:59