2017-04-08 2 views
0

gitlab에서 생산적 배포를 수동으로 수행하고 있습니다. 나는 도커 컨테이너를 사용하고있다. 파이프 라인 목록에서 '재생'버튼을 클릭하면 배포가 수행됩니다. 그러나 선택한 컨테이너의 버전을 얻으려면 어떻게해야합니까? 이 스크립트를 수행하면 항상 그렇지 않아야하는 latest 버전을 가져 오려고 시도합니다. 나는 '선택된'컨테이너를 당기고 싶다.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

귀하의 질문에 언급 된 것처럼 이미지를 푸시하는 데 사용한 스크립트와 동일한 스크립트를 사용하여 배포 단계에서 가져 오기 만하면됩니다.

#!/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 

주의 대신 마지막 줄에 pushpull :

여기에 예를 들어 pull.sh 스크립트입니다.

다음과 같이 당신의 배포 작업을 수정할 : 선택에 의해

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