如何通过Jenkins Pipeline向Jfrog Artifactory本地Docker仓库推送镜像?
Jenkins Pipeline推送Docker镜像至Jfrog Artifactory本地仓库操作指南
一、前置准备
- 安装Jenkins必需插件:
- Artifactory Plugin:用于和Jfrog Artifactory完成交互
- Docker Pipeline Plugin:支持Docker镜像构建、推送等操作
- 在Jenkins中配置Artifactory凭证:
进入Jenkins「Manage Jenkins」→「Manage Credentials」,添加「Username with password」类型凭证,填入拥有Artifactory镜像推送权限的账号密码,记录好凭证ID(例如artifactory-docker-push-creds) - 确保Jenkins运行节点(或代理节点)已安装Docker,且能正常访问你的Artifactory仓库地址
二、Pipeline脚本示例
以下是可直接复用的Pipeline模板,按需替换占位符内容:
pipeline { agent any environment { // 替换为你的Artifactory本地Docker仓库完整地址 ARTIFACTORY_REGISTRY = "your-artifactory-domain/docker-local" // 替换为你的镜像名称 IMAGE_NAME = "app-backend" // 用构建号作为镜像标签,也可自定义为版本号等 IMAGE_TAG = "${BUILD_NUMBER}" // 替换为你在Jenkins中配置的凭证ID ARTIFACTORY_CREDS = "artifactory-docker-push-creds" } stages { stage('拉取代码') { steps { git url: 'https://your-git-repo.git', branch: 'main' } } stage('构建Docker镜像') { steps { script { // 基于项目根目录的Dockerfile构建镜像 docker.build("${ARTIFACTORY_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}") } } } stage('推送镜像至Artifactory') { steps { script { // 自动完成登录并推送镜像 docker.withRegistry("https://${ARTIFACTORY_REGISTRY}", ARTIFACTORY_CREDS) { def image = docker.image("${ARTIFACTORY_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}") image.push() // 可选:推送latest标签作为最新版本 image.push('latest') } } } } stage('清理本地镜像') { steps { script { docker.image("${ARTIFACTORY_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}").remove() docker.image("${ARTIFACTORY_REGISTRY}/${IMAGE_NAME}:latest").remove() } } } } }
三、关键注意事项
- 镜像命名规范:必须以Artifactory Docker仓库地址作为前缀,否则无法正常推送
- 权限验证:确认Artifactory账号对目标本地仓库拥有「Deploy/Cache」权限
- 网络连通性:若Jenkins节点在私有环境,需确保能访问Artifactory的Docker仓库端口(默认443或80)
- Jfrog CLI替代方案:如果偏好使用Jfrog工具链,可在Pipeline中安装Jfrog CLI,通过
jf docker push命令完成推送,需提前配置Artifactory上下文
内容的提问来源于stack exchange,提问作者Hamza Nasir
相关产品推荐
相关产品推荐

