Cloudflare Workers로 Slack 봇 구축

8034 단어 codegengraphql

This article was published on Wednesday, October 12, 2022 by @ The Guild Blog



Cloudflare Workers로 Slack 봇 구축



소개



크거나 작은 회사는 복잡한 시스템입니다. 모든 회사는 효율적으로 작업할 수 있는 올바른 방법을 찾아야 합니다. 일상 업무를 효율적으로 관리하는 데 도움이 되는 많은 응용 프로그램이 있습니다.
최근에 우리는 The Guild 직원 시스템 프로세스에서 최적화되지 않은 일부를 발견했습니다.

그래서 우리는 몇 가지 솔루션에 대해 생각했고 우리에게 도움이 되고 다른 사람들에게도 가치가 있을 수 있는 내부 도구를 만들기로 결정했습니다.

이러한 솔루션 중 하나는 Cloudflare Workers의 GitHub Slack 봇 알림이었습니다.

Cloudflare 작업자란 무엇입니까?



Cloudflare Workers는 서버리스 실행 환경을 제공하는 플랫폼입니다. 이 환경에서는 전체 응용 프로그램을 만들 수 있습니다.
이 플랫폼은 전 세계 클라우드 네트워크에서 실행됩니다.

Cloudflare Workers로 무엇을 할 수 있나요?



Workers 플랫폼에는 설계하려는 배포 흐름에 직접 통합할 수 있는 새로운 도구 세트와 멋진 API가 함께 제공됩니다. 높은 수준에서 멋진 기능을 많이 만들 수 있습니다.
  • 전체 Slack 봇 구축
  • 작은 HTML 페이지 반환
  • JSON 반환
  • HTML/JSON 가져오기
  • A/B 테스트
  • 헤더가 있는 인증
  • 일정 처리
  • 그리고 더 많은 예가 있습니다... ( You can find a lot of examples in Cloudflare docs )

  • 시작하기 - 설치 설정



    Cloudflare는 쉽고 빠른 설치를 제공합니다 - You can find it here .

    모든 요구 사항을 설치 및 설정한 후 Slack 봇을 만들기 위해 수행한 작업에 대해 이야기해 보겠습니다.

    모든 Cloudflare 패키지를 설치하고 wrangler init를 실행하면 다음index.ts 파일이 생성됩니다.

    export default {
      async fetch(request) {
        return new Response('Hello World!')
      }
    }
    


    이 함수는 작업자 URL의 변경 사항을 가져옵니다.

    The Guild는 Cloudflare Workers로 무엇을 구축하고 있나요?



    Cloudflare는 일부 기능을 예약하는 옵션도 제공합니다. 이 함수를 인덱스 파일에 추가할 수 있습니다.

    ```ts 파일명="index.ts"
    비동기 예약(
    컨트롤러: ScheduledController,
    환경: 환경,
    ctx: 실행 컨텍스트
    ): 약속하다 {
    실행 대기(env);
    }

    
    
    
    The `run` function is our main function that gets the `ENV` environment variable secret and executes the code we create.
    
    Here you can see the `run` function, we can write any code we want to schedule in the Cloudflare Workers. We create a Slack bot that sends a daily message about all open pull requests.
    
    
    
    ```ts filename="index.ts"
    export async function run(env: Env) {
      const slack = createSlackClient(env.SLACK_TOKEN)
      // We use Slack Client to send messages
      const octokit = new Octokit({ auth: env.GH_BOT_TOKEN })
      // We use Octokit to use GitHub API
      // ... WRITE ANY CODE YOU WANT HERE
    }
    

    Cloudflare Worker에서 기능을 예약하려면 어떻게 해야 하나요?



    설치를 마친 후 Cloudflare는 toml 파일도 생성합니다. 이 파일에는 name , main , compatibility_datetriggers 가 포함되어 있습니다. 트리거를 사용하기 위해 Cloudflare는 Cron을 지원하며 다음과 같습니다.

    [triggers]
    crons = ["0 10 * * *"]
     // This trigger will execute the function scheduled in the index
     //  file every day at 10:00 UTC
    


    GitHub에서 데이터를 어떻게 가져올 수 있습니까?



    GitHub에서 데이터를 가져오기 위해 GraphQL 쿼리를 생성합니다. GitHub는 몇 가지 쉽고 멋진 탐색기 도구를 제공합니다. 여기에서 다음 예제와 함께 사용할 수 있습니다.

    {
      organization(login: "the-guild-org") {
        membersWithRole(first: 30) {
          totalCount
          edges {
            node {
              login
              name
            }
          }
        }
      }
    }
    


    쿼리를 만든 후에는 데이터를 사용해야 합니다. 이를 위해 GraphQL Code Generator을 사용하여 쿼리를 기반으로 유형을 생성합니다.

    schema:
      - https://api.github.com/graphql:
          headers:
            Authorization: Bearer ${GH_BOT_TOKEN}
    documents: 'src/**/*.ts'
    generates:
      types.ts:
        config:
          scalars:
            URI: string
        plugins:
          - typescript
          - typescript-operations
    


    위의 예와 같이 스키마 경로를 정의하고 헤더에 Authorization을 추가한 다음 스키마를 생성하고 run 함수에서 사용할 유형을 생성합니다.


    GraphQL 코드 생성기를 사용한 이유는 무엇입니까?
  • GraphQL 코드 생성기는 유형 기반 스키마를 생성합니다. 유형은 완전히 유형 안전합니다.
  • GraphQL 코드 생성기를 프로젝트에 추가하는 프로세스는 쉽고 빠르며 유형 오류를 줄입니다.

  • Cloudflare Workers로 무엇을 할 수 있나요? (힌트? 요가)



    GraphQL Yoga The Guild에서 가장 뛰어난 도구 중 하나인 GraphQL 서버를 제공합니다.

    우리의 초점은 쉬운 설정, 성능 및 뛰어난 개발자 경험에 있습니다.

    플랫폼에 구애받지 않는 디자인 덕분에 Yoga는 추가 패키지 없이 Cloudflare Workers에서도 GraphQL 서버를 어디에서나 실행할 수 있습니다!

    Cloudflare 작업자를 GraphQL Yoga와 통합하는 방법에 대한 자세한 정보 및 자습서를 찾을 수 있습니다 - link .

    좋은 웹페이지 즐겨찾기