IBM Cloud Docs
애플리케이션에 GitHub 이벤트 전송

애플리케이션에 GitHub 이벤트 전송

GitHub 이벤트 (예: 새 문제 또는 IBM Cloud® Code Engine 애플리케이션에 대한 커미트) 를 전송하도록 웹훅을 설정할 수 있습니다. 애플리케이션은 공용 엔드포인트를 사용하여 웹훅 POST 요청을 수신해야 합니다.

GitHub 웹훅에 대한 자세한 정보는 웹훅 정보를 참조하십시오. GitHub, 대한 자세한 내용은 GitHub 문서를 참조하세요.

전제조건

시작하기 전에 계정을 설정하고 명령행 환경을 설치하십시오. 콘솔을 사용하여 애플리케이션을 작성할 수 있지만 이 예제에서는 CLI를 사용합니다.

모든 Code Engine 사용자에게는 종량과금제 계정이 있어야 합니다. 튜토리얼은 비용이 부과될 수 있습니다. 비용 추정기를 사용하여 예상 사용량을 기반으로 한 비용 추정을 생성하십시오. 자세한 정보는 Code Engine 가격을 참조하십시오.

애플리케이션 작성

ibmcloud ce app create 명령을 사용하여 github 라는 이미지를 사용하는 my-github-app 라는 GitHub 이벤트를 수신하는 애플리케이션을 작성하십시오. 이 앱은 GitHub 저장소에서 발생하는 각 커미트 이벤트를 로그합니다. 이미지는 IBM Cloud Code Engine GitHub 저장소의 샘플에서 사용 가능한 github.go 에서 빌드됩니다.

ibmcloud ce application create --name my-github-app --image icr.io/codeengine/github --min-scale 1

애플리케이션이 작성된 후 애플리케이션이 Ready 상태인지 확인하고 애플리케이션 URL을 찾으십시오.

ibmcloud ce application get --name my-github-app

애플리케이션 URL은 예제 출력의 URL 필드에 있습니다.

Name:               my-github-app  
ID:                 abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name:       myproject  
Project ID:         01234567-abcd-abcd-abcd-abcdabcd1111  
Age:                20h  
Created:            2022-11-28T13:16:49-06:00  
URL:                https://my-github-app.abcdabcdabc.us-south.codeengine.appdomain.cloud  
Cluster Local URL:  http://my-github-app.abcdabcdabc.svc.cluster.local  
Console URL:        https://cloud.ibm.com/codeengine/project/us-south/abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f/application/my-github-app/configuration  
Status Summary:     Application deployed successfully
...

웹훅 작성

GitHub 웹훅을 작성하여 GitHub 이벤트에 애플리케이션을 등록하십시오. 하나 이상의 웹훅 이벤트에 등록할 수 있습니다. 구독하는 이벤트가 발생하면 GitHub 가 애플리케이션에 페이로드를 전송합니다. 자세한 정보는 Webhook 이벤트 및 페이로드를 참조하십시오.

GitHub 웹훅을 만들려면 다음 단계를 따르세요.

  1. GitHub 저장소로 이동하여 설정을 선택하십시오.
  2. 웹훅- > 웹훅 추가를 선택하십시오. GitHub 저장소는 웹훅대신 후크 를 사용할 수 있습니다.
  3. 애플리케이션 URL을 페이로드 URL 로 입력하십시오.
  4. 애플리케이션에 필요한 컨텐츠 유형 을 선택하십시오. 샘플 github 앱을 사용하는 경우 컨텐츠 유형으로 application/json 를 선택하십시오.
  5. 선택사항입니다. 웹훅에 시크릿을 추가하십시오. 자세한 정보는 웹훅 보안을 참조하십시오.
  6. SSL 검증 사용을 선택하십시오.
  7. 푸시 이벤트만 을 선택하여 웹후크를 트리거하십시오.
  8. 활성화가 선택되어 있는지 확인합니다. 선택 표시를 제거하여 웹훅을 삭제하지 않고 사용 안함으로 설정할 수 있습니다.
  9. 웹훅 추가를 클릭하십시오.

완료한 후 애플리케이션의 로그 파일을 확인하여 애플리케이션이 등록되었는지 확인하십시오. 로그에 대한 자세한 정보는 CLI를 사용하여 로그 보기 를 참조하십시오.

ibmcloud ce app logs --name my-github-app

예제 출력에서 앱이 청취 중인 포트와 이벤트 유형을 찾으십시오.

my-github-app-00001-deployment-abcdabcdabc-1234/user-container:    
2022/12/02 17:07:27 Listening on port 8080  
2022/12/02 17:10:08 Event Type: ping  
2022/12/02 17:10:08 Not a 'push' event so exit

애플리케이션이 0으로 스케일링되면 실행 중인 앱의 인스턴스가 없다는 메시지를 수신할 수 있습니다. 이 앱의 최소 스케일은 1이므로 항상 실행 중인 인스턴스가 있습니다.

GitHub 이벤트 테스트

애플리케이션이 예상하는 이벤트를 트리거하여 웹훅을 테스트하십시오. 이 경우 애플리케이션은 GitHub 저장소에서 변경사항이 커미트될 것으로 예상합니다.

  1. GitHub 저장소에서 웹훅을 트리거하는 조치를 수행하십시오. github 앱의 경우 저장소의 파일에 대한 변경사항을 커미트하십시오.

  2. 1-2분후에 애플리케이션에 대한 로그를 찾으십시오. 애플리케이션이 0으로 스케일링된 경우 앱에 실행 중인 인스턴스가 없음을 나타내는 메시지가 표시될 수 있습니다. 애플리케이션이 이벤트를 수신하면 확장되므로 몇 분 후에 다시 시도하십시오. 로그에 대한 자세한 정보는 CLI를 사용하여 로그 보기 를 참조하십시오.

    ibmcloud ce app logs --name my-github-app
    

    예를 들어 다음 출력을 참조하세요.

    2022/11/28 19:45:28   
    Event:  {  
      "ref": "refs/heads/main",  
      "before": "0a11d22ebdaacdbb7bf5fdb6c92565c7c00fa97b",  
      "after": "af363efb8568874fe219bc73f3bccd0f4991907f",  
      "repository": {  
    
    ...
    
    "committer": {  
      "name": "GitHub",  
          "email": "noreply@github.com",  
          "username": "web-flow"  
        },  
        "added": [],  
        "removed": [],  
        "modified": [  
          "README.md"  
        ]  
      }  
    }  
    2022/11/28 19:45:28 kersten1 committed "af363efb8568874fe219bc73f3bccd0f4991907f" to "refs/heads/main" branch  
    2022/11/28 19:45:28 ibmcloud ce buildrun submit ...  
    
    

    출력은 사용하는 애플리케이션 및 웹훅이 포함된 GitHub 저장소에 따라 다릅니다.

웹훅이 작동 중입니다! 이제 GitHub 저장소에 파일을 커미트할 때마다 앱에서 알림을 수신합니다.

이 애플리케이션은 앱의 인스턴스가 항상 실행되도록 최소 스케일을 1로 설정합니다. 다음 명령으로 앱을 업데이트하여 스케일을 0으로 설정할 수 있습니다. ibmcloud ce app update --name my-github-app --min-scale 0

정리

이 튜토리얼을 완료한 후에는 다음 명령으로 작성한 리소스를 정리할 수 있습니다.

  1. 애플리케이션 삭제

    ibmcloud ce app delete --name my-github-app
    

    앱을 삭제하면 연관된 빌드 파일도 삭제됩니다.

  2. GitHub 설정 - > Webhook 을 열고 Webhook 이름 뒤에 삭제 를 클릭하여 Webhook을 삭제하십시오.

  3. IBM Cloud Container Registry 빌드가 생성한 이미지를 삭제합니다.

    1. IBM Cloud 콘솔에서 레지스트리 로 이동하십시오.
    2. 애플리케이션 이름을 검색하여 애플리케이션과 연관된 아카이브와 이미지를 찾으십시오.
    3. 아카이브 및 이미지를 선택한 후 삭제하십시오.