在Gitlab CI/CD中,如何提交和发布运行阶段的docker容器

在Gitlab CI/CD中,如何提交和发布运行阶段的docker容器,docker,automation,continuous-integration,gitlab,gitlab-ci,Docker,Automation,Continuous Integration,Gitlab,Gitlab Ci,我正在学习使用docker executor使用gitlab CI/CD 下面是我的gitlab ci.yml文件 image:registry.gitlab.com/vbrin-office/components/karma-tests 阶段: -试验 测试: 阶段:测试 脚本: -节点——版本 -git——版本 -pwd -ls -cd/T测试 -ls -npx业力开始 每次管道完成执行时,我都希望提交容器并将其推送到GitLab注册表,以便以后可以访问它 因为我们实际上在docker容器

我正在学习使用docker executor使用gitlab CI/CD

下面是我的
gitlab ci.yml
文件

image:registry.gitlab.com/vbrin-office/components/karma-tests
阶段:
-试验
测试:
阶段:测试
脚本:
-节点——版本
-git——版本
-pwd
-ls
-cd/T测试
-ls
-npx业力开始
每次管道完成执行时,我都希望提交容器并将其推送到GitLab注册表,以便以后可以访问它


因为我们实际上在docker容器中,我想为其创建一个图像。我怎么能这么做?甚至可能吗?

是的,是的,但是相对于您的gitlab注册表路径,映像必须具有特定的名称。您可以这样做:

docker-build:
  stage: package
  script:
    - docker build -t $CI_REGISTRY_IMAGE:latest .
    - docker tag $CI_REGISTRY_IMAGE:latest $CI_REGISTRY_IMAGE:latest
    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
    - docker push $CI_REGISTRY_IMAGE:latest
  only:
    - master

这只会在管道在主分支上运行时推送映像。

是的,但映像必须具有与gitlab注册表路径相关的特定名称。您可以这样做:

docker-build:
  stage: package
  script:
    - docker build -t $CI_REGISTRY_IMAGE:latest .
    - docker tag $CI_REGISTRY_IMAGE:latest $CI_REGISTRY_IMAGE:latest
    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
    - docker push $CI_REGISTRY_IMAGE:latest
  only:
    - master

这只会在管道在主分支上运行时推送映像。

您能详细解释一下吗?“docker build.”命令是否从当前目录创建包含所有文件的图像?它有我在前一阶段运行的内容吗?或者我应该创建一个工件吗?它基于同一目录中的dockerfile创建一个图像。这个表示放置映像的路径。因此,执行管道每个阶段的docker容器中是否包含dockerfile?是的,它从存储库中提取代码,您可以查看日志。您能详细解释一下吗?“docker build.”命令是否从当前目录创建包含所有文件的图像?它有我在前一阶段运行的内容吗?或者我应该创建一个工件吗?它基于同一目录中的dockerfile创建一个图像。这个表示放置映像的路径。因此,执行管道每个阶段的docker容器中是否包含dockerfile?是的,它从存储库中提取代码,您可以查看日志。