我正在手动进行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
答案 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