GitHub Actions + Light AI를 사용하여 SlackBot 만들기

Github 액션이란?



작업의 공식 Github 정의는 다음과 같습니다.

GitHub Actions is a continuous integration and continuous delivery (CI/CD) platform that allows you to automate your build, test, and deployment pipeline. You can create workflows that build and test every pull request to your repository, or deploy merged pull requests to production.



Github용 SlackBot 만들기



우리는 Github용 SlackBot을 생성할 것입니다. 이 SlackBot은 풀 요청이 있을 때마다 Slack 채널로 메시지를 보낼 것입니다.

워크플로우 이해



GitHub Actions 워크플로에서 발생하는 모든 일을 분석해 보겠습니다.

Github 작업 구성



새 프로젝트 만들기 또는 기존 프로젝트로 이동
Add File를 클릭한 다음 Create New File를 클릭합니다.

이제 워크플로를 추가하고 다음을 복사하여 붙여넣습니다.
.github/workflows/slackbot.yml

워크플로 만들기



이 워크플로를 생성하기 위해 Light AI 베타를 사용하여 GitHub 작업을 생성할 것입니다. 이렇게 하면 시간이 절약됩니다.



Light Docs에서 Github Actions를 선택하고 Create a GitHub Actions that sends a slack notification on a pull request를 입력하겠습니다.



Light Docs™의 출력을 복사하여 작업 흐름에 붙여넣습니다. 무슨 일이 일어나고 있는지 더 잘 이해하기 위해 워크플로를 분석하는 데 시간을 할애하겠습니다.

name: SlackBot for Pull Requests 

  push:
    branches:
      - main
  pull_request:
    branches: [ "main" ]


여기서는 Github Action의 이름을 지정하고 PR을 위한 분기를 지정합니다.

작업 및 빌드 추가



워크플로우는 많은 작업으로 구성될 수 있습니다. 이 경우 빌드라는 단일 작업만 사용합니다.

jobs:
 build:
  runs-on:ubuntu-latest


단계 및 체크아웃



여기에서 체크아웃 코드인 한 단계만 추가합니다.

steps:
 - name: Check out Code 
   uses: actions/checkout@v2


Slack API 키 + 워크플로 추가



이제 이 마지막 단계가 작동하려면 슬랙 계정이 필요합니다. 이 부분은 조금 까다로울 수 있습니다.

 -name: Slack Notifcation 
    uses: rtCamp/action-slack-notify@master
    env:
      SLACK_WEBHOOK_URL:${{secrets.SLACK_WEBHOOK_URL}}
      MESSAGE: "A Pull Request was Made!!"


Here is the complete Github Action so your .yaml is written correctly.



name: Slack Notification on Pull Request

# Controls when the workflow will run
on:
  # Triggers the workflow on pull request events but only for the "main" branch
  push:
    branches:
      - main
  pull_request:
    branches: [ "main" ]

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
    # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
    - name: Check out code
      uses: actions/checkout@v2

    # Sends a Slack notification
    - name: Slack Notification
      uses: rtCamp/action-slack-notify@master
      env:
        SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK}}
        MESSAGE: "A new pull request was made!"



이제 이 워크플로가 있으므로 이를 커밋하면 빌드가 실패하게 됩니다. 다음 섹션에서 이 문제를 해결할 것입니다.

Github 비밀 생성 및 WebHook 설치



이제 Github Secret 를 노출하지 않도록 Slack WebHook 를 생성해야 합니다.
repo로 이동하여 settings를 클릭해 보겠습니다.
create a new repository secret를 클릭해야 합니다.

이름을 Secret SLACK_WEBHOOK
귀하의 slackurl/apps로 이동하십시오. 이 경우에는 light.slack.com/apps가 됩니다.



이제 검색 창으로 이동하여 Incoming WebHooks를 입력합니다.



Click Add to Slack and select your Workspace




Add Incoming WebHook Integration를 클릭하면 WebHook URL를 볼 수 있는 페이지로 이동합니다. 해당 URL을 복사하여 붙여넣고 Github Repo로 돌아갑니다.

URL은 하단을 향하고 다음과 같이 표시됩니다.


Settings를 클릭한 다음 아래로 내려가서 Secrets를 클릭한 다음 Actions를 클릭합니다.


New Repository Secret를 클릭한 다음 방금 복사한 WebHook URL을 추가합니다.

다음과 같아야 합니다.



이제 리포지토리를 복제하고 Visual Studio 코드에서 엽니다.

먼저 최신 변경 사항git pull을 가져옵니다. 그런 다음 풀 요청 기능을 테스트할 수 있도록 새 브랜치를 생성합니다.git checkout -b slack-branch
이제 빈 커밋을 사용하여 Github 작업을 트리거하겠습니다.git commit --allow-empty -m "dev: empty commit for testing"
Github 작업이 실행되고 완료되었음을 볼 수 있습니다. 완료되면 Slack으로 이동하여 이전 설정 프로세스에서 선택한 채널에 SlackBot 알림이 표시되는지 확인합니다.



이제 우리는 워크플로를 업데이트해야 합니다. 현재 푸시 및 풀에서만 작동하도록 설정되어 있고 풀 요청에서만 작동하기를 원하기 때문에 우리 팀의 누군가가 PR을 만들 때 알림을 받습니다.

푸시 트리거가 없는 업데이트된 흐름입니다.

name: Slack Notification on Pull Request

# Controls when the workflow will run
on:
  # Triggers the workflow on pull request events but only for the "main" branch
  pull_request:
    branches: [ "main" ]

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
    # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
    - name: Check out code
      uses: actions/checkout@v2

    # Sends a Slack notification
    - name: Slack Notification
      uses: rtCamp/action-slack-notify@master
      env:
        SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK}}
        MESSAGE: "A new pull request was made!"



다음 GitHub 커밋에서 풀 요청을 볼 수 있습니다. create a pull request 또는 new pull request 를 클릭합니다. Commit Changes 을 클릭합니다.

이제 슬랙 알림이 표시됩니다!


축하합니다. GitHub Actions + Light AI를 사용하여 SlackBot을 만들었습니다.

신용 거래:



Github Actions Output Generated by LightAI



질문이나 생각이 있으시면 [email protected]으로 연락해 주십시오.

좋은 웹페이지 즐겨찾기