GitLab CI:如何拉出特定的docker容器进行部署

时间:2017-04-08 22:45:36

标签: docker continuous-integration gitlab gitlab-ci

我正在手动进行gitlab的高效部署。我正在使用docker容器。 单击管道列表中的“播放”按钮应该进行部署。 但是如何获得所选容器的版本?执行此脚本始终尝试提取latest版本,而不应该这样做。我想拉“选定”的容器。

deploy_prod:
  stage: deploy
  script:
    - docker pull $CI_REGISTRY_IMAGE     # here selected version is missing
    # ...
  when: manual
  environment:
    name: productive
    url: https://example.com
  only:
    - master

1 个答案:

答案 0 :(得分:1)

如您对问题的评论中所述,只需使用您用于推送图片的相同脚本,即可在部署阶段将其拉出来。

这是一个示例pull.sh脚本:

#!/bin/sh
args=("$@")
CI_REGISTRY_IMAGE=${args[0]}

PACKAGE_VERSION=$(cat package.json \
| grep version \
  | head -1 \
  | awk -F: '{ print $2 }' \
  | sed 's/[",]//g' \
  | tr -d '[[:space:]]')
CONTAINER_RELEASE_IMAGE=$CI_REGISTRY_IMAGE\:$PACKAGE_VERSION
docker pull $CONTAINER_RELEASE_IMAGE

请注意pull而不是最后一行中的push

然后像这样修改部署作业:

deploy_prod:
  stage: deploy
  script:
    - ./pull.sh $CI_REGISTRY_IMAGE
    # ...
  when: manual
  environment:
    name: productive
    url: https://example.com
  only:
    - master