使用Jib Maven插件推送镜像至Artifactory遇媒体类型错误求助
问题分析:Jib推送镜像至JFrog Artifactory报错Unknown mediaType
错误信息
[ERROR] Failed to execute goal com.google.cloud.tools:jib-maven-plugin:3.1.1:build (default-cli) on project backend: Unknown mediaType: application/vnd.oci.image.index.v1+json.
用户CI/CD配置
trigger: branches: include: - jfrogtest pool: vmImage: 'ubuntu-latest' # You can use other images if needed variables: - group: artifactory - name: dockerRegistryServiceConnection value: 'Artifactory-docker' - name: containerRegistry value: 'danfoss-docker.jfrog.io' - name: imageRepository value: 'plus1connect-backend-service-ui' - group: New-Portal-Backend - name: imagePullSecret value: 'artifactory' steps: - task: JavaToolInstaller@0 inputs: versionSpec: '11' jdkArchitectureOption: 'x64' jdkSourceOption: 'PreInstalled' - script: | mvn clean install -Dmaven.test.skip displayName: 'Maven Build' - script: | mvn -X compile jib:build -Dmaven.test.skip -Djib.to.auth.username=$(artifactory.user) -Djib.to.auth.password=$(artifactory.password) -Djib.to.image=$(docker-server-image-name):$(image-tag) -Djib.container.format=Docker workingDirectory: '$(System.DefaultWorkingDirectory)/backend' - task: KubernetesManifest@0 displayName: Create imagePullSecret inputs: action: createSecret secretName: $(imagePullSecret) dockerRegistryEndpoint: $(dockerRegistryServiceConnection) kubernetesServiceConnection: dev.plus1connect.aks - task: KubernetesManifest@0 inputs: action: deploy kubernetesServiceConnection: 'dev.plus1connect.aks' namespace: 'default' manifests: | $(Build.SourcesDirectory)/.manifests/*.yml
可能的问题原因及解决方案
- Jib版本兼容缺陷:当前使用的Jib 3.1.1版本对OCI镜像索引的支持不完善,无法识别
application/vnd.oci.image.index.v1+json媒体类型。建议升级Jib Maven插件至3.3.0及以上版本,后续版本已修复该兼容问题。 - 仓库格式配置冲突:检查JFrog Artifactory中的Docker仓库是否启用了OCI支持。若仓库同时兼容Docker和OCI格式,旧版Jib无法正确处理返回的OCI索引内容。可尝试在仓库设置中仅启用Docker V2格式,或升级Jib版本适配OCI格式。
- 容器格式参数矛盾:命令中指定了
-Djib.container.format=Docker强制使用Docker格式,但如果目标仓库默认返回OCI格式索引,会导致格式不兼容。可移除该参数,让Jib自动适配仓库支持的格式。 - 仓库地址或认证问题:确认
$(docker-server-image-name)变量指向的仓库地址是否正确对应JFrog的Docker仓库端点,确保推送路径与仓库类型匹配,避免请求到不兼容的仓库接口。
内容的提问来源于stack exchange,提问作者shuchi srivastava
相关产品推荐
相关产品推荐

