GitLab CI Docker 构建作业的无效参数
GitLab CI invalid argument on job for Docker build
所以我正在尝试设置我的 Gitlab CI 以在 git push
上触发一个作业来构建和部署我的 Docker。这是我根据 Gitlab 文档 (Elixir yml) 中的示例使用的 .gitlab-ci.yml
文件。
stages:
- build
build:
before_script:
- docker build -f Dockerfile.build -t ci-project-build-$CI_PROJECT_ID:$CI_BUILD_REF .
- docker create
-v /build/deps
-v /build/_build
-v /build/rel
-v /root/.cache/aceapp/
--name build_data_$CI_PROJECT_ID_$CI_BUILD_REF busybox /bin/true
tags:
- docker
stage: build
script:
- docker run --volumes-from build_data_$CI_PROJECT_ID_$CI_BUILD_REF --rm -t ci-project-build-$CI_PROJECT_ID:$CI_BUILD_REF
推送到 GitLab 实例时的输出是这样的:
Running with gitlab-runner 10.7.2 (b5e03c94)
on my.host.rhel.runner 8f724ea7
Using Shell executor...
Running on my.host.local...
Fetching changes...
HEAD is now at 14351c4 Merge branch 'Development' into 'master'
From https://my.host.example/zalmosc/ace-app
14351c4..9fa2d43 master -> origin/master
Checking out 9fa2d435 as master...
Skipping Git submodules setup
$ # Auto DevOps variables and functions # collapsed multi-line command
$ setup_docker
$ build
Logging to GitLab Container Registry with CI credentials...
Login Succeeded
Building Dockerfile-based application...
invalid argument "/master:9fa2d4358e6c426b882e2251aa5a49880013614b" for t: Error parsing reference: "/master:9fa2d4358e6c426b882e2251aa5a49880013614b" is not a valid repository/tag: invalid reference format
See 'docker build --help'.
ERROR: Job failed: exit status 1
我知道 docker 标签无效(before_script:
真的是根据名称触发的吗?),我正在寻求有关 a) 解决方案 b) 我如何可以详细了解基于默认设置构建 docker 的管道的要求。我是否需要在本地标记我的 docker 图像,然后以某种方式将其添加到我的 git 提交中?
事情 -t
是标记您的 Docker 图片。请参阅文档 here。
标签的格式应类似于 name:version
,而您给它的 /master:9fa2d4358e6c426b882e2251aa5a49880013614b
不是有效标签。您可以尝试在 master
之前删除 /
您的标签不能以“/”开头:
$ docker build -f Dockerfile.build -t /master:9fa2d4358e6c426b882e2251aa5a49880013614b .
invalid argument "/master:9fa2d4358e6c426b882e2251aa5a49880013614b" for "-t, --tag" flag: invalid reference format
See 'docker build --help'.
# remove '/'
$ docker build -f Dockerfile.build -t master:9fa2d4358e6c426b882e2251aa5a49880013614b .
Sending build context to Docker daemon 3.584kB
Step 1/3 : FROM ubuntu:16.04
---> 14f60031763d
...
如果您不使用内置注册表,则可能需要将 CI_REGISTRY_IMAGE 值设置为某个值。似乎如果你不这样做,它就会被设置为 /master 并导致这个错误。您可以在 CI 设置页面或创建新管道时进行设置。例如 CI_REGISTRY_IMAGE gitlab.com/user/project
所以我正在尝试设置我的 Gitlab CI 以在 git push
上触发一个作业来构建和部署我的 Docker。这是我根据 Gitlab 文档 (Elixir yml) 中的示例使用的 .gitlab-ci.yml
文件。
stages:
- build
build:
before_script:
- docker build -f Dockerfile.build -t ci-project-build-$CI_PROJECT_ID:$CI_BUILD_REF .
- docker create
-v /build/deps
-v /build/_build
-v /build/rel
-v /root/.cache/aceapp/
--name build_data_$CI_PROJECT_ID_$CI_BUILD_REF busybox /bin/true
tags:
- docker
stage: build
script:
- docker run --volumes-from build_data_$CI_PROJECT_ID_$CI_BUILD_REF --rm -t ci-project-build-$CI_PROJECT_ID:$CI_BUILD_REF
推送到 GitLab 实例时的输出是这样的:
Running with gitlab-runner 10.7.2 (b5e03c94)
on my.host.rhel.runner 8f724ea7
Using Shell executor...
Running on my.host.local...
Fetching changes...
HEAD is now at 14351c4 Merge branch 'Development' into 'master'
From https://my.host.example/zalmosc/ace-app
14351c4..9fa2d43 master -> origin/master
Checking out 9fa2d435 as master...
Skipping Git submodules setup
$ # Auto DevOps variables and functions # collapsed multi-line command
$ setup_docker
$ build
Logging to GitLab Container Registry with CI credentials...
Login Succeeded
Building Dockerfile-based application...
invalid argument "/master:9fa2d4358e6c426b882e2251aa5a49880013614b" for t: Error parsing reference: "/master:9fa2d4358e6c426b882e2251aa5a49880013614b" is not a valid repository/tag: invalid reference format
See 'docker build --help'.
ERROR: Job failed: exit status 1
我知道 docker 标签无效(before_script:
真的是根据名称触发的吗?),我正在寻求有关 a) 解决方案 b) 我如何可以详细了解基于默认设置构建 docker 的管道的要求。我是否需要在本地标记我的 docker 图像,然后以某种方式将其添加到我的 git 提交中?
事情 -t
是标记您的 Docker 图片。请参阅文档 here。
标签的格式应类似于 name:version
,而您给它的 /master:9fa2d4358e6c426b882e2251aa5a49880013614b
不是有效标签。您可以尝试在 master
/
您的标签不能以“/”开头:
$ docker build -f Dockerfile.build -t /master:9fa2d4358e6c426b882e2251aa5a49880013614b .
invalid argument "/master:9fa2d4358e6c426b882e2251aa5a49880013614b" for "-t, --tag" flag: invalid reference format
See 'docker build --help'.
# remove '/'
$ docker build -f Dockerfile.build -t master:9fa2d4358e6c426b882e2251aa5a49880013614b .
Sending build context to Docker daemon 3.584kB
Step 1/3 : FROM ubuntu:16.04
---> 14f60031763d
...
如果您不使用内置注册表,则可能需要将 CI_REGISTRY_IMAGE 值设置为某个值。似乎如果你不这样做,它就会被设置为 /master 并导致这个错误。您可以在 CI 设置页面或创建新管道时进行设置。例如 CI_REGISTRY_IMAGE gitlab.com/user/project