IT 개발,관리,연동,자동화

SSH 기반 Git 레포지토리의 Pull 이벤트 시 MS Teams 알림 설정 가이드

_Blue_Sky_ 2024. 11. 17. 18:14
728x90
728x90

SSH를 통해 관리되는 Git 레포지토리에 Pull 이벤트가 발생할 때마다 MS Teams 채널에 알림을 받고 싶은 상황입니다. 이는 개발팀의 협업을 원활하게 하고, 코드 변경 사항을 실시간으로 파악하는 데 도움이 됩니다.

해결 방안:

다음과 같은 방법들을 활용하여 SSH 기반 Git 레포지토리의 Pull 이벤트 시 MS Teams에 알림을 설정할 수 있습니다.

1. GitHub Actions 활용

  • 장점: GitHub의 강력한 자동화 기능을 활용하여 유연하게 설정 가능
  • 방법:
    1. 워크플로 생성: 해당 레포지토리에 .github/workflows 디렉토리를 생성하고, YAML 파일을 작성하여 워크플로를 정의합니다.
    2. 트리거 설정: on 키워드를 사용하여 push 이벤트를 트리거로 설정합니다.
    3. Power Automate 호출: actions/github-script 액션을 사용하여 GitHub API를 호출하여 webhook URL을 가져온 후, Power Automate 흐름을 호출하는 액션을 추가합니다.
    4. Power Automate 설정: Power Automate에서 HTTP 요청 트리거를 만들고, GitHub에서 받은 webhook payload를 기반으로 MS Teams 채널에 알림을 보내는 흐름을 구성합니다.

예시 YAML:

 
name: Send notification on push

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Send notification to Teams
      uses: actions/github-script@v6
      with:
        script: |
          const github = require('@actions/github');
          const core = require('@actions/core');

          const webhookUrl = core.getInput('webhook-url');

          // ... (Power Automate 호출 로직)
 
 

2. GitLab CI/CD 활용

  • 장점: GitLab의 CI/CD 파이프라인을 활용하여 유연하게 설정 가능
  • 방법:
    1. 파이프라인 설정: GitLab CI/CD 파이프라인을 설정하고, .gitlab-ci.yml 파일을 작성합니다.
    2. 잡 생성: push 이벤트를 트리거로 하는 잡을 생성합니다.
    3. 커스텀 스크립트 실행: 잡 내에서 커스텀 스크립트를 실행하여 HTTP 요청을 보내 MS Teams에 알림을 전송합니다.
    4. Webhook URL 설정: MS Teams Incoming Webhook을 생성하고, 해당 URL을 커스텀 스크립트에서 사용합니다.

3. 외부 서비스 활용

  • Zapier: 다양한 서비스를 연결하여 자동화 작업을 수행하는 도구입니다. GitHub의 webhook 이벤트를 트리거로 설정하고, MS Teams에 메시지를 보내는 액션을 추가할 수 있습니다.
  • IFTTT (If This Then That): Zapier와 유사하게 다양한 서비스를 연결하여 자동화 작업을 수행하는 도구입니다.

주의사항:

  • 보안: webhook URL은 안전하게 관리해야 합니다.
  • 알림 내용: 알림 내용에 필요한 정보(브랜치 이름, 커밋 메시지 등)를 포함시켜야 합니다.
  • 오류 처리: 오류 발생 시 적절한 오류 처리를 해야 합니다.
  • 성능: 너무 많은 이벤트가 발생할 경우 시스템에 부하가 걸릴 수 있으므로, 필요한 이벤트만 필터링하여 처리해야 합니다.

추가 고려 사항:

  • 복잡한 로직: 복잡한 로직이 필요한 경우, Node.js, Python 등의 스크립팅 언어를 사용하여 커스텀 스크립트를 작성할 수 있습니다.
  • 다양한 채널: Slack, Discord 등 다른 채널에도 알림을 보내고 싶다면 해당 채널의 webhook API를 활용할 수 있습니다.

결론:

위에서 제시된 방법들을 활용하여 SSH 기반 Git 레포지토리의 Pull 이벤트 시 MS Teams에 알림을 설정할 수 있습니다. 각 방법마다 장단점이 있으므로, 프로젝트의 특성과 환경에 맞는 방법을 선택하여 사용하면 됩니다.

 
 

 

Power Automate를 활용한 SSH 기반 Git 레포지토리 Pull 이벤트 시 MS Teams 알림 상세 가이드

1단계: GitHub Actions에서 Power Automate 호출 설정

앞서 설명한 GitHub Actions 워크플로에서 Power Automate 호출 로직을 추가하는 부분을 상세히 설명하겠습니다.

 
# ... (생략)

      with:
        script: |
          const github = require('@actions/github');
          const core = require('@actions/core');

          const webhookUrl = core.getInput('webhook-url'); // Power Automate webhook URL

          const payload = JSON.stringify({
            // Power Automate 흐름에 전달할 데이터
            repository: github.context.repo,
            ref: github.context.ref,
            sender: github.context.actor,
            commits: github.context.payload.commits
          });

          const response = await fetch(webhookUrl, {
            method: 'POST',
            headers: {
              'Content-Type': 'application/json'
            },
            body: payload
          });

          if (!response.ok) {
            core.setFailed(`Failed to send notification: ${response.statusText}`);
          }
 
 
  • webhookUrl: Power Automate에서 생성한 webhook URL을 입력합니다.
  • payload: Power Automate 흐름에 전달할 데이터를 JSON 형식으로 구성합니다. 필요에 따라 추가적인 정보를 포함할 수 있습니다.
  • fetch API: webhook URL로 HTTP POST 요청을 보내 데이터를 전달합니다.

2단계: Power Automate 흐름 구성

  • 트리거: HTTP 요청 트리거를 생성하고, GitHub Actions에서 전달한 webhook URL을 입력합니다.
  • 데이터 추출: HTTP 요청 본문에서 필요한 데이터(레포지토리 이름, 브랜치, 커밋 메시지 등)를 추출합니다.
  • MS Teams 채널에 알림: 추출한 데이터를 이용하여 MS Teams 채널에 알림 메시지를 보냅니다.

Power Automate 흐름 예시:

  1. HTTP 요청 트리거: GitHub에서 전달된 HTTP 요청을 받습니다.
  2. JSON 파싱: HTTP 요청 본문의 JSON 데이터를 파싱하여 필요한 정보를 추출합니다.
  3. 변수 초기화: 추출한 정보를 변수에 저장합니다.
  4. Teams 커넥터: MS Teams 커넥터를 사용하여 채널에 메시지를 보냅니다.
{
  "@context": "http://schema.org",
  "@type": "MessageCard",
  "summary": "새로운 코드가 커밋되었습니다!",
  "sections": [
    {
      "facts": [
        {
          "name": "레포지토리",
          "value": "https://github.com/{owner}/{repo}"
        },
        {
          "name": "브랜치",
          "value": "{ref}"
        },
        {
          "name": "커밋 메시지",
          "value": "{commitMessage}"
        }
      ]
    }
  ]
}
  • {owner}, {repo}, {ref}, {commitMessage}는 Power Automate에서 추출한 변수입니다.

추가 고려 사항

  • 오류 처리: Power Automate 흐름에서 오류가 발생할 경우, 해당 오류를 기록하거나 사용자에게 알림을 보내도록 설정할 수 있습니다.
  • 보안: webhook URL은 안전하게 관리해야 하며, 필요한 경우 인증을 추가할 수 있습니다.
  • 커스터마이징: 알림 메시지의 형식을 다양하게 변경하여 더욱 풍부한 정보를 제공할 수 있습니다.
  • 다양한 이벤트: Pull Request 생성, Merge Request 승인 등 다양한 이벤트에 대해 알림을 설정할 수 있습니다.

결론

Power Automate를 활용하여 GitHub Actions에서 발생하는 이벤트를 MS Teams에 알릴 수 있습니다. 이를 통해 개발팀의 협업을 더욱 효율적으로 만들고, 코드 변경 사항을 실시간으로 파악할 수 있습니다. 위에 제시된 가이드를 참고하여 자신에게 맞는 설정을 구성해 보세요.

 

728x90
728x90