2017-04-08 80 views
0

我正在手動進行gitlab中的生產部署。我正在使用碼頭集裝箱。 點擊管道列表中的「播放」按鈕應該進行部署。 但是,如何獲取所選容器的版本?做這個腳本總是試圖拉latest版本,這不應該。我想拉動'selected'容器。GitLab CI:如何拉動部署特定碼頭集裝箱

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

你是什麼意思的選擇? –

+0

在我的管道列表中,有多個構建。在手動部署時,我必須選擇其中一個版本(通常是最新版本),然後單擊播放按鈕。所以這個版本應該被部署。你明白我的意思嗎? – user3142695

+0

所以你正在建造碼頭圖像管道?使用與製作時完全相同的名稱。 –

回答

1

正如在評論你的問題中提到,只需使用相同的腳本你用來推的形象,把它拉在部署階段。

下面是一個例子pull.sh腳本:

#!/bin/sh 
args=("[email protected]") 
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