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 변수 외에 다음 변수도 제공됩니다.
-
context는 워크플로 실행의 컨텍스트를 포함하는 개체입니다. -
core는 @actions/core 패키지에 대한 참조입니다. -
io는 @actions/io 패키지에 대한 참조입니다.
GitHub 스크립트를 사용하는 워크플로 만들기
GitHub Script 작업은 다른 작업처럼 워크플로에 잘 어울립니다. 따라서 CI/CD에 대해 이미 설정한 워크플로와 같은 기존 워크플로와 혼합할 수도 있습니다. GitHub 스크립트의 편의를 설명하기 위해 이제 새로 만든 모든 문제에 댓글을 자동으로 게시하는 데 사용하는 전체 워크플로를 생성합니다.
먼저 문제가 열리면 이 워크플로가 실행된다고 지정하는 name 및 on 절을 준비합니다.
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 스크립트 시나리오를 충족하기 위해 상당한 양의 코드를 사용해야 할 수 있습니다. 이 경우 스크립트 전체를 인라인으로 넣는 대신 스크립트를 개별 파일에 보관하고 워크플로에서 참조해도 됩니다.
다음은 해당 기술을 사용하는 간단한 워크플로의 예입니다.
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 예시를 확인해 보세요.