코드/CI-CD-Docker

[CI/CD] Gitlab stop action

Yeah-Panda 2024. 7. 29. 19:55

CI pipeline 에서 머지 리퀘스트 발생시마다 테스트 환경을 동적으로 생성할수 있다.

반대로 그렇게 테스트된 환경 형상이 마스터 브랜치 혹은 develop 로 머지될때 동적인 환경을 제거할 수 있다.

 

아래는 deploy review job 이 중지되면 stop review 잡을 시작하는 ci 설정이다.

머지 리퀘스트가 생성되면 deploy review 가 활성화되고

머지되면 stop review 잡이 활성화 된다.

variables:
  $VITEPRESS_DOC_ROOT=./.vitepress/dist
  
deploy review:
  stage: deploy
  only: 
    - merge_requests
  environment:
    - name: reviews/$CI_COMMIT_REF_NAME
    - url: https://aggressive-language-$CI_COMMIT_REF_NAME.surge.sh
    - on_stop: stop review
  before_script:
    - corepack enable
    - SHELL="$(which bash)" pnpm setup
    - source /root/.bashrc
    - pnpm add -g surge
  script:
    - surge --project $VITEPRESS_DOC_ROOT --domain aggressive-language-$CI_ENVIRONMENT_SLUG.surge.sh

stop review:
  stage: deploy
  only:
    - merge_requests
  variables:
    GIT_STRATEGY: none
  environment:
    - name: reviews/$CI_COMMIT_REF_NAME
    - url: https://aggressive-language-$CI_COMMIT_REF_NAME.surge.sh
    - action: stop
  before_script:
    - corepack enable
  script:
    - SHELL="$(which bash)" pnpm setup
    - source /root/.bashrc
    - pnpm add -g surge
    - surge teardown aggressive-language-$CI_ENVIRONMENT_SLUG.surge.sh
  when: manual

 

주요한 것은 environment 의 on_stop, action 키워드다.

environment 의 name 은 각각 트리깅 하는 잡과 액션을 진행하는 잡이 동일해야 한다.

 

 

아래는 참고 링크

https://docs.gitlab.com/ee/ci/environments/index.html#stop-an-environment-when-a-branch-is-deleted

 

Environments and deployments | GitLab

GitLab product documentation.

docs.gitlab.com

https://docs.gitlab.com/ee/ci/yaml/index.html#environmenton_stop

 

CI/CD YAML syntax reference | GitLab

GitLab product documentation.

docs.gitlab.com

 

https://docs.gitlab.com/ee/ci/yaml/index.html#environment

 

CI/CD YAML syntax reference | GitLab

GitLab product documentation.

docs.gitlab.com