GitHub Script란 무엇일까요?

완료됨

이 단원에서는 GitHub Actions 워크플로를 사용하여 GitHub 스크립트를 사용하여 일반적인 GitHub 프로세스를 자동화하는 방법을 알아봅니다.

GitHub Script란 무엇일까요?

GitHub 스크립트 는 인증된 Octokit 클라이언트를 제공하고 JavaScript를 워크플로 파일에 직접 쓸 수 있게 하는 작업입니다. Node.js실행되므로 스크립트를 작성할 때 해당 플랫폼의 기능을 사용할 수 있습니다.

Octokit란?

Octokit는 GitHub API에 대한 클라이언트의 공식 컬렉션입니다. 이러한 클라이언트 중 하나인 rest.jsGitHub REST 인터페이스에 대한 JavaScript 액세스를 제공합니다.

octokit/rest.js를 통해 언제든 GitHub API를 자동화할 수 있지만 올바르게 설정하고 유지 관리하기는 쉽지 않습니다. GitHub Script를 사용하는 가장 큰 이점은 이러한 오버헤드를 모두 처리하기 때문에 API를 바로 사용할 수 있다는 점입니다. 종속성, 구성이나 인증을 신경 쓸 필요가 없습니다.

octokit/rest.js는 어떤 일을 할 수 있습니까?

간단히 대답하자면 GitHub 자동화에 관한 거의 모든 작업을 수행할 수 있습니다. 커밋, 끌어오기 요청 및 문제에 액세스할 수 있을 뿐만 아니라 사용자, 프로젝트 및 조직에 대한 액세스 권한도 있습니다. 인기 있는 라이선스나 .gitignore 파일 같은 자주 사용하는 파일 목록을 검색할 수 있습니다. Markdown도 렌더링할 수 있습니다.

GitHub를 통합하는 항목을 만드는 경우 전체 octokit/rest.js 설명서에서 원하는 내용을 찾을 수 있습니다.

GitHub Script를 사용하는 방법은 octokit/rest.js와는 어떻게 다릅니까?

사용의 주요 차이점은 GitHub Script가 사전 인증된 형태로 이름이 지정된 octokit/rest.js 클라이언트를 github 제공한다는 것입니다.

따라서 대신

octokit.issues.createComment({

다음을 사용합니다.

github.issues.createComment({;

github 변수 외에 다음 변수도 제공됩니다.

GitHub 스크립트를 사용하는 워크플로 만들기

GitHub Script 작업은 다른 작업처럼 워크플로에 잘 어울립니다. 따라서 CI/CD에 대해 이미 설정한 워크플로와 같은 기존 워크플로와 혼합할 수도 있습니다. GitHub 스크립트의 편의를 설명하기 위해 이제 새로 만든 모든 문제에 댓글을 자동으로 게시하는 데 사용하는 전체 워크플로를 생성합니다.

먼저 문제가 열리면 이 워크플로가 실행된다고 지정하는 nameon 절을 준비합니다.

name: Learning GitHub Script

on:
  issues:
    types: [opened]

다음으로, 일련의 단계를 사용하여 Linux에서 실행되는 명명된 comment 작업을 정의합니다.

jobs:
  comment:
    runs-on: ubuntu-latest
    steps:

이 경우에는 GitHub Script 작업이라는 단계만 존재합니다.

      - uses: actions/github-script@0.8.0
        with:
          github-token: ${{secrets.GITHUB_TOKEN}}
          script: |
            github.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: "🎉 You've created this issue comment using GitHub Script!!!"
            })

GitHub Actions를 사용하면 리포지토리에서 발생하는 이벤트를 자동화하는 데 도움이 될 수 있습니다. 리포지토리 방문자가 중요한 버그에 대한 정보가 포함된 새 문제를 열었다고 상상해 보세요. 버그를 알려준 것에 대해 감사를 표하려고 할 수도 있지만, 리포지토리에 더 많은 방문자가 모이면 이 간단한 작업조차 부담스러워질 수 있습니다. 문제 주석을 자동화하면 매번 방문자에게 감사하는 프로세스를 자동화할 수 있습니다.

actions/github-script@0.8.0 사용

GitHub 스크립트라고도 하는 이 actions/github-script@0.8.0 작업은 GitHub API와의 통합을 위해 어려운 모든 작업을 수행합니다.

이 작업을 수행하려면 요청 인증을 위해 런타임 시 제공되는 github-token이 필요합니다. 이 작업은 자동으로 수행되므로 코드를 그대로 사용할 수 있습니다.

script에 저장된 octokit/rest/js 클라이언트를 사용하는 거의 모든 JavaScript가 github 매개 변수가 될 수 있습니다. 이 경우에는 하드 코딩된 설명을 만드는 (가독성을 위해 여러 줄로 분할된) 한 줄입니다.

워크플로가 실행되면 GitHub 스크립트는 작업 탭에서 검토를 위해 실행된 코드를 기록합니다.

완료된 GitHub 스크립트 워크플로의 스크린샷

개별 파일에서 실행

경우에 따라 GitHub 스크립트 시나리오를 충족하기 위해 상당한 양의 코드를 사용해야 할 수 있습니다. 이 경우 스크립트 전체를 인라인으로 넣는 대신 스크립트를 개별 파일에 보관하고 워크플로에서 참조해도 됩니다.

다음은 해당 기술을 사용하는 간단한 워크플로의 예입니다.

on: push

jobs:
  echo-input:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/github-script@v2
        with:
          script: |
            const path = require('path')
            const scriptPath = path.resolve('./path/to/script.js')
            console.log(require(scriptPath)({context}))

다른 GitHub Script 예시를 확인해 보세요.