InfoGrab Docs

외부 배포 도구의 배포 추적

요약

GitLab은 기본 제공 배포 솔루션을 제공하지만 Heroku나 ArgoCD와 같은 외부 배포 도구를 선호할 수 있습니다. GitLab은 해당 외부 배포를 승인하고 활용할 수 없으므로 보호된 환경, 배포 승인, 배포 안전성, 배포 롤백을 포함한 일부 기능은 사용할 수 없습니다.

GitLab은 기본 제공 배포 솔루션을 제공하지만 Heroku나 ArgoCD와 같은 외부 배포 도구를 선호할 수 있습니다. GitLab은 이러한 외부 도구에서 배포 이벤트를 받아 GitLab 내에서 배포를 추적할 수 있습니다. 예를 들어, 추적을 설정하면 다음과 같은 기능을 사용할 수 있습니다:

Note

GitLab은 해당 외부 배포를 승인하고 활용할 수 없으므로 보호된 환경, 배포 승인, 배포 안전성, 배포 롤백을 포함한 일부 기능은 사용할 수 없습니다.

배포 추적 설정 방법#

외부 배포 도구는 일반적으로 배포 상태가 변경될 때 추가 API 요청을 실행하는 웹훅을 제공합니다. GitLab 배포 API에 요청을 보내도록 도구를 구성할 수 있습니다. 이벤트 및 API 요청 흐름의 개요는 다음과 같습니다:

Note

GitLab API 인증을 위해 프로젝트 액세스 토큰을 생성할 수 있습니다.

예시: ArgoCD 배포 추적#

ArgoCD 웹훅을 사용하여 배포 이벤트를 GitLab 배포 API에 전송할 수 있습니다. 다음은 ArgoCD가 새 리비전을 성공적으로 배포할 때 GitLab에 success 배포 레코드를 생성하는 예시 설정입니다:

  1. 새 웹훅을 생성합니다. 다음 매니페스트 파일을 저장하고 kubectl apply -n argocd -f <manifiest-file-path>로 적용할 수 있습니다:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: argocd-notifications-cm
    data:
      trigger.on-deployed: |
        - description: Application is synced and healthy. Triggered once per commit.
          oncePer: app.status.sync.revision
          send:
          - gitlab-deployment-status
          when: app.status.operationState.phase in ['Succeeded'] and app.status.health.status == 'Healthy'
      template.gitlab-deployment-status: |
        webhook:
          gitlab:
            method: POST
            path: /projects/<your-project-id>/deployments
            body: |
              {
                "status": "success",
                "environment": "production",
                "sha": "{{.app.status.operationState.operation.sync.revision}}",
                "ref": "main",
                "tag": "false"
              }
      service.webhook.gitlab: |
        url: https://gitlab.com/api/v4
        headers:
        - name: PRIVATE-TOKEN
          value: <your-access-token>
        - name: Content-type
          value: application/json
    
  2. 애플리케이션에 새 구독을 생성합니다:

    kubectl patch app <your-app-name> -n argocd -p '{"metadata": {"annotations": {"notifications.argoproj.io/subscribe.on-deployed.gitlab":""}}}' --type merge
    
Note

배포가 예상대로 생성되지 않은 경우 argocd-notifications 도구로 문제를 해결할 수 있습니다. 예를 들어, argocd-notifications template notify gitlab-deployment-status <your-app-name> --recipient gitlab:argocd-notifications는 API 요청을 즉시 트리거하고 GitLab API 서버에서 오류 메시지가 있으면 렌더링합니다.

외부 배포 도구의 배포 추적

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

GitLab은 기본 제공 배포 솔루션을 제공하지만 Heroku나 ArgoCD와 같은 외부 배포 도구를 선호할 수 있습니다. GitLab은 해당 외부 배포를 승인하고 활용할 수 없으므로 보호된 환경, 배포 승인, 배포 안전성, 배포 롤백을 포함한 일부 기능은 사용할 수 없습니다.

GitLab은 기본 제공 배포 솔루션을 제공하지만 Heroku나 ArgoCD와 같은 외부 배포 도구를 선호할 수 있습니다. GitLab은 이러한 외부 도구에서 배포 이벤트를 받아 GitLab 내에서 배포를 추적할 수 있습니다. 예를 들어, 추적을 설정하면 다음과 같은 기능을 사용할 수 있습니다:

Note

GitLab은 해당 외부 배포를 승인하고 활용할 수 없으므로 보호된 환경, 배포 승인, 배포 안전성, 배포 롤백을 포함한 일부 기능은 사용할 수 없습니다.

배포 추적 설정 방법#

외부 배포 도구는 일반적으로 배포 상태가 변경될 때 추가 API 요청을 실행하는 웹훅을 제공합니다. GitLab 배포 API에 요청을 보내도록 도구를 구성할 수 있습니다. 이벤트 및 API 요청 흐름의 개요는 다음과 같습니다:

Note

GitLab API 인증을 위해 프로젝트 액세스 토큰을 생성할 수 있습니다.

예시: ArgoCD 배포 추적#

ArgoCD 웹훅을 사용하여 배포 이벤트를 GitLab 배포 API에 전송할 수 있습니다. 다음은 ArgoCD가 새 리비전을 성공적으로 배포할 때 GitLab에 success 배포 레코드를 생성하는 예시 설정입니다:

  1. 새 웹훅을 생성합니다. 다음 매니페스트 파일을 저장하고 kubectl apply -n argocd -f <manifiest-file-path>로 적용할 수 있습니다:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: argocd-notifications-cm
    data:
      trigger.on-deployed: |
        - description: Application is synced and healthy. Triggered once per commit.
          oncePer: app.status.sync.revision
          send:
          - gitlab-deployment-status
          when: app.status.operationState.phase in ['Succeeded'] and app.status.health.status == 'Healthy'
      template.gitlab-deployment-status: |
        webhook:
          gitlab:
            method: POST
            path: /projects/<your-project-id>/deployments
            body: |
              {
                "status": "success",
                "environment": "production",
                "sha": "{{.app.status.operationState.operation.sync.revision}}",
                "ref": "main",
                "tag": "false"
              }
      service.webhook.gitlab: |
        url: https://gitlab.com/api/v4
        headers:
        - name: PRIVATE-TOKEN
          value: <your-access-token>
        - name: Content-type
          value: application/json
    
  2. 애플리케이션에 새 구독을 생성합니다:

    kubectl patch app <your-app-name> -n argocd -p '{"metadata": {"annotations": {"notifications.argoproj.io/subscribe.on-deployed.gitlab":""}}}' --type merge
    
Note

배포가 예상대로 생성되지 않은 경우 argocd-notifications 도구로 문제를 해결할 수 있습니다. 예를 들어, argocd-notifications template notify gitlab-deployment-status <your-app-name> --recipient gitlab:argocd-notifications는 API 요청을 즉시 트리거하고 GitLab API 서버에서 오류 메시지가 있으면 렌더링합니다.