2017-02-06 3 views
1

내부 Gitlab 설치 프로젝트가 있습니다.이슈를 사용하지 않고 이전 단계의 결과를 기반으로 무대 재생을 제어하는 ​​방법은 무엇입니까?

프로젝트의 파이프 라인은 3 단계가 있습니다

  • 빌드
  • 테스트를
  • 배포

목적은 숨기기에 또는 배포 무대 이 테스트가 실패 할 때을 해제

enter image description here

문제는 시스템을 재부팅 할 때마다 유실되기 때문에 유물을 사용할 수 없다는 것입니다.

내 질문 :이 작업을 수행하기위한 아티팩트에 대한 대안 솔루션이 있습니까?

사용 된 .gitlab-ci.yml은 다음과 같습니다

stages: 
    - build 
    - tests 
    - deploy 

build_job: 
    stage: build 
    tags: 
     # - .... 
    before_script: 
     # - .... 
    script: 
     # - .... 
    when: manual 
    only: 
     - develop 
     - master 

all_tests: 
    stage: tests 
    tags: 
     # - .... 
    before_script: 
     # - .... 
    script: 
     # - .... 
    when: manual 
    only: 
     - develop 
     - master 


prod: 
    stage: deploy 
    tags: 
     # - .... 
    script: 
     # - .... 
    when: manual 
    environment: prod 

답변

1

난 당신이 내장 된 CI의 목적을 오해 한 것 같아요. 목표는 각 커밋 또는 적어도 모든 푸시에서 자동화 된 모든 것을 빌드하고 테스트하는 것입니다. 모든 작업을 수동 실행으로 설정하면 Jenkins 나 Bamboo와 같은 외부 CI 도구보다 거의 이점이 없습니다. 현재 목표를 지역에서 실행하는 유일한 방법은 중앙에서 가시성을 확보하는 것입니다.

그렇다면 CI 작업을 조건부로 표시하거나 숨길 수있는 방법이 없다는 것은 기본 아이디어에 위배되기 때문입니다. 자신의 아이디어를 고집한다면, 이전 단계의 산출물을 검색하고 잘못된 것이있는 경우 수동 실행을 중단 할 수 있습니다.

문제는 그들이 때마다 손실 때문에 우리가 우리의 기계는

AFAIK 아티팩트 마스터에 업로드하고 주자에 저장되지 않습니다 재부팅 유물을 사용할 수 없다는 것입니다. 당신은 당신의 유물을 무대에서 무대로 옮겨야합니다.

덧붙여 when의 기본값은 on_success입니다. 즉, 은 이전 단계의 모든 빌드가 성공한 경우에만 빌드를 실행합니다.

+0

감사합니다. 당신이 나에게주는 정보 "그런데, 언제의 기본값은 on_success이며 이는 이전 단계의 빌드가 모두 성공했을 때만 빌드를 실행한다는 것을 의미합니다." 내가 찾는거야. –

+0

여기에 설명 된대로 https://docs.gitlab.com/ce/ci/yaml/#when > on_success - 이전 단계의 모든 빌드가 성공한 경우에만 빌드를 실행합니다. 이것이 기본값입니다. –

+0

(어떻게 든)'on_success'와'manual' 옵션을 결합 할 수 있습니까? 목적은 on_success ** 및 **만을 수동으로 빌드하는 것입니다. 왜냐하면 나는 (테스트가 녹색 일지라도) 커밋을 할 때마다 생산에 들어가기를 원하지 않기 때문입니다. –