无法使用 kaniko 从 GitLab CI 构建 Docker 图像并将其推送到(私有)Artifactory
Unable to build and push Docker image into (private) Artifactory from GitLab CI using kaniko
我正在设计 GitLab CI 管道来为给定服务构建 Docker 图像。
Gitlab CI 清单到目前为止(相关摘录)如下所示:
...
publish-docker-image:
stage: publish
dependencies:
- assemble
image:
name: docker.tld.com/namespace/kaniko:latest # At work they offer a custom kaniko image
entrypoint: [""]
script:
- mkdir --parents /kaniko/.docker/
- mv $kaniko_config /kaniko/.docker/config.json # $kaniko_config is a file variable from GitLab CI
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination artifactory.tld.com/artifactory/docker-snapshot/organization/project/kaniko-test:0.1.0
$kaniko_config
文件翻译成这个 JSON:
{
"auths": {
"https://artifactory.tld.com/": {
"username": "the_real_username",
"password": "the_real_password"
}
}
}
现在每次我 运行 管道我都会得到这个输出:
$ mkdir --parents /kaniko/.docker/
$ mv $kaniko_config /kaniko/.docker/config.json
$ cat /kaniko/.docker/config.json
{
"auths": {
"https://artifactory.tld.com/": {
"username": "the_real_username",
"password": "the_real_password"
}
}
}
$ /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination artifactory.tld.com/artifactory/docker-snapshot/organization/project/kaniko-test:0.1.0
error checking push permissions -- make sure you entered the correct tag name, and that you are authenticated correctly, and try again: checking push permission for "artifactory.tld.com/artifactory/docker-snapshot/organization/project/kaniko-test:0.1.0": creating push check transport for artifactory.tld.com failed: GET https://artifactory.tld.com/v2/: : Not Found
Cleaning up file based variables
我在这里做错了什么?此外,我不知道为什么错误消息上有 https://artifactory.tld.com/v2/
(/v2
),因为我没有使用类似的东西。
对于以后遇到此问题的任何人 -
kaniko-config.json
文件应具有以下结构:
{
"auths": {
"<artifactory-docker-registry>": {
...
}
}
}
可以使用 JFrog 平台中的 Set Me Up 按钮检索“artifactory-docker-registry”UI。
我正在设计 GitLab CI 管道来为给定服务构建 Docker 图像。
Gitlab CI 清单到目前为止(相关摘录)如下所示:
...
publish-docker-image:
stage: publish
dependencies:
- assemble
image:
name: docker.tld.com/namespace/kaniko:latest # At work they offer a custom kaniko image
entrypoint: [""]
script:
- mkdir --parents /kaniko/.docker/
- mv $kaniko_config /kaniko/.docker/config.json # $kaniko_config is a file variable from GitLab CI
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination artifactory.tld.com/artifactory/docker-snapshot/organization/project/kaniko-test:0.1.0
$kaniko_config
文件翻译成这个 JSON:
{
"auths": {
"https://artifactory.tld.com/": {
"username": "the_real_username",
"password": "the_real_password"
}
}
}
现在每次我 运行 管道我都会得到这个输出:
$ mkdir --parents /kaniko/.docker/
$ mv $kaniko_config /kaniko/.docker/config.json
$ cat /kaniko/.docker/config.json
{
"auths": {
"https://artifactory.tld.com/": {
"username": "the_real_username",
"password": "the_real_password"
}
}
}
$ /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination artifactory.tld.com/artifactory/docker-snapshot/organization/project/kaniko-test:0.1.0
error checking push permissions -- make sure you entered the correct tag name, and that you are authenticated correctly, and try again: checking push permission for "artifactory.tld.com/artifactory/docker-snapshot/organization/project/kaniko-test:0.1.0": creating push check transport for artifactory.tld.com failed: GET https://artifactory.tld.com/v2/: : Not Found
Cleaning up file based variables
我在这里做错了什么?此外,我不知道为什么错误消息上有 https://artifactory.tld.com/v2/
(/v2
),因为我没有使用类似的东西。
对于以后遇到此问题的任何人 -
kaniko-config.json
文件应具有以下结构:
{
"auths": {
"<artifactory-docker-registry>": {
...
}
}
}
可以使用 JFrog 平台中的 Set Me Up 按钮检索“artifactory-docker-registry”UI。