MR 병합 시 자동으로 배포 미리보기 환경 닫기 [GitLab] [Review Apps]

세 줄로 개요



지난번 기사에서는 배포 미리보기 후에 "여기에 배포했습니다!"라고 알려주는 설정 방법을 살펴 보았습니다. 그렇지만 이대로라면 배포 미리보기용으로 세운 환경이 남아 버리므로, 환경을 멈추는 설정이 필요합니다. 이번에는 그 설정을 해 나갑니다

자동으로 멈추다



수동으로 멈추는 설정도 할 수 있습니다만, 지금까지의 내용을 슬라이드에 정리하고 있을 때, @ tnir 님 에 자동으로 멈추는 설정도 할 수 있는 것 같아요, 라고 가르쳐 주셨으므로 해 보았습니다. 공식 설명 페이지는 여기입니다. 이것도 상당히 간단하므로 꼭 해보세요.

↓가 .gitlab-ci.yml에서 관련 부분을 추출한 것입니다.

.gitlab-ci.yml
deploy_review:
    stage: deploy
    environment:
        name: review/${CI_COMMIT_REF_NAME}
        url: https://${CI_COMMIT_REF_NAME}.${APP_ID}.amplifyapp.com
        on_stop: stop_review
    only:
        - branches
    except:
        - master
    script:
        - aws amplify update-branch --app-id ${APP_ID} --branch-name ${CI_BUILD_REF_NAME}
stop_review:
    stage: deploy
    variables:
        GIT_STRATEGY: none
    when: manual
    environment:
        name: review/${CI_COMMIT_REF_NAME}
        action: stop
    script:
        - aws amplify delete-branch --app-id ${APP_ID} --branch-name ${CI_BUILD_REF_NAME}


그러면 포인트마다 보고 싶습니다.
1. 정지하는 job는 환경을 배치하는 job과 같은 stage에 배치한다deploy_reviewstop_reviewstage: deploy입니다.

2. 배포할 job 환경에서 on_stop로 중지할 job 설정
"이것이 없으면 수동으로 "환경 중지"를 누르면 정지하는 작업이 실행되지 않습니다.
  on_stop: stop_review 로 설정하고 있습니다.

3. 작업을 실행할 조건 설정
배포 미리보기 자체는 배포 작업 실행 타이밍을 only: merge_requests로 설정해도 움직이지만 정지하는 작업은 배포 작업 실행 타이밍을
   only:
        - branches
   except:
        - master

하지 않으면 실행되지 않았습니다. 조금 이 근처, 2개의 조건의 차이를 잘 모르기 때문에 좀 더 공부하지 않으면 안 되는 것 같습니다.

4. 정지하는 job의 variables에 GIT_STRATEGY: none 를 설정한다

대체로 이런 느낌입니다. 기본적으로는 상기 공식 링크의 샘플을 참고로 하면 문제 없게 움직인다고 생각합니다. 이렇게 설정하면 MR 병합 후 AWS Console에서 Amplify를 보러 갈 때 배포 배포 검토를 위해 생성된 환경이 목록에서 사라지는지 확인할 수 있습니다. 이것으로 완성됩니다

완결



그래서 무사히 MR 작성 → 배치 미리보기 환경을 작성 → MR에 환경 정보를 통지 → 병합 후에 삭제라는 기본적인 흐름을 할 수 있게 되었기 때문에 배포 미리보기 시리즈는 일단 완결됩니다 (시리즈화하지 않았다. 하지만).
이것을 시도하고 싶기 때문에 자신의 포트폴리오의 리포지토리를 GitLab에 복사 해 왔으므로 드디어에 올려 둡니다. 최종 형태는 여기입니다.

남은 과제



그렇다고는 해도 아직 잔재 과제도 있습니다. 현재 내 .gitlab-ci.yml

▶︎create-job
1. amplify에 branch 만들기
2. amplify의 job를 start시킨다

▶︎deploy_review
1. amplify branch를 update
create-joballow_failure: true로 설정됩니다.
이것은 왜냐하면 MR 작성 후에 새로운 push가 있었을 경우, branch만은 이미 amplify상에 있기 때문에 에러가 되기 때문입니다. 진짜는 amplify의 branch의 리스트를 취득해, 거기에 있으면 update이고, 없으면 create라고 하는 흐름이 좋다고 생각합니다만, 나의 yml 기술 스킬이 부족하기 때문에 실현할 수 없습니다 그래서, 만약 최종 형태로서 소개했다 .gitlab-ci.yml 를 참고로 되는 분이 있으면 이 점 주의해 주세요.

끝까지 눈을 통해 주셔서 감사합니다

좋은 웹페이지 즐겨찾기