将图像推送到 Artifactory 时出现以下错误
[错误] 无法在项目后端执行目标 com.google.cloud.tools:jib-maven-plugin:3.1.1:build (default-cli): 未知 mediaType: application/vnd.oci.image.index.v1 +json.
当我尝试使用 maven 插件将 jib dockerized 的镜像推送到我组织的内部 Artifactory 时,出现以下错误。可能的原因是什么?
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
Maven 存储库是在 Artifactory 中创建的。
这是我构建图像并将其推送到 JFrog 的示例,供您参考。
pom.xml
以使用 Jib 插件。 <build>
<plugins>
...
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.1.4</version>
<configuration>
<to>
<image>${docker.image.prefix}/imagename:imagetag</image>
<auth>
<username>${env.ARTIFACTORY_USER}</username>
<password>${env.ARTIFACTORY_PASSWORD}</password>
</auth>
</to>
</configuration>
</plugin>
</plugins>
</build>
pool:
vmImage: ubuntu-latest
variables:
ARTIFACTORY_USER: $(artifactory.user)
ARTIFACTORY_PASSWORD: $(artifactory.password)
DOCKER_IMAGE_PREFIX: ***.jfrog.io/{repository name}
steps:
- script: |
mvn -X compile jib:build -Djib.to.image=$(DOCKER_IMAGE_PREFIX)/my-test-image:11-ubuntu -Djib.to.auth.username=$(ARTIFACTORY_USER) -Djib.to.auth.password=$(ARTIFACTORY_PASSWORD) -Djib.container.format=Docker
workingDirectory: '$(Build.SourcesDirectory)/complete'