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

GitLab CI: How to pull specific docker container for deployment

我正在 gitlab 中手动进行生产部署。我正在使用 docker 容器。 单击管道列表中的 'Play'-按钮应该进行部署。 但是如何获取所选容器的版本呢?做这个脚本总是试图拉取 latest 版本,这是不应该的。我想拉 'selected' 容器。

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

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

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

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

PACKAGE_VERSION=$(cat package.json \
| grep version \
  | head -1 \
  | awk -F: '{ print  }' \
  | 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