인프라

[gitlab] CI/CD 배포 설정시 내가 원할때 배포하기

소행성왕자 2025. 1. 8. 14:59

커밋 메시지에 "[배포]"라는 시작 단어를 포함하면 배포되는 방법입니다.

deploy-to-main-server:
  stage: deploy
  rules:
    - if: '$CI_COMMIT_BRANCH == "main" && '$CI_COMMIT_MESSAGE =~ /^\[배포\]/'  # 커밋 메시지가 '[배포]'로 시작하면 실행
  script:
    - pwd
    - id
    - cd /home/cof/wts/ && git checkout main && git pull origin main && ./gradlew build -x test && cp -f build/libs/wts-0.0.1-SNAPSHOT.war /home/cor/webapps/ROOT.war
    - /opt/tomcat/bin/shutdown.sh && /opt/tomcat/bin/startup.sh
  tags:
    - deploy

이외에도 배포를 원하는 시점에만 배포를 실행할 수 있는 몇 가지 좋은 방법이 있습니다.

1.수동배포(Manual Trigger)

이 방식은 배포를 자동으로 실행하지 않고, 사용자가 GitLab UI에서 버튼을 클릭하여 배포 작업을 수동으로 실행할 수 있도록 합니다.

수동 배포는 매우 유용한 방법으로, 실수로 잘못 배포되는 것을 방지하고, 배포 시점을 명확하게 통제할 수 있습니다.

deploy-to-main-server:
  stage: deploy
  script:
    - pwd
    - id
  when: manual  # 수동으로 실행할 수 있도록 설정
  tags:
    - deploy

2. 배포 태그 기반 배포 (git tag를 사용)

deploy-to-main-server:
  stage: deploy
  rules:
    - if: '$CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+$/'  # 'v1.0.0' 형식의 태그가 푸시될 때만 배포
  script:
    - pwd
    - id
  tags:
    - deploy

이 방식은 버전 태그가 푸시될 때만 배포를 실행합니다.

예를 들어, v1.0.0, v2.1.0와 같은 태그를 푸시하면 자동으로 배포가 트리거됩니다.

이 방식은 배포를 명확히 관리할 수 있고, 배포의 일관성을 유지할 수 있습니다.

git tag -a v0.0.2 -m "배포 v0.0.2"
git push origin v0.0.2