안녕하세요 진상팀 입니다.
Dev/Ops를 하는 과정에서 GitHub는 많이 사용되고 있습니다.
그리고 만약 web을 사용한 프로젝트라면 javascript가 빠질순 없겠죠?
이번포스팅은 GitHub Script가 무엇인지 알려드릴겁니다.
GitHub Script란 무엇일까요?
GitHub Script는 인증된 octokit 클라이언트를 제공하고 워크플로 파일에서 JavaScript를 바로 쓸 수 있도록 하는 작업입니다. Node.js에서 실행되므로 스크립트를 작성할 때 플랫폼의 기능을 사용할 수 있습니다.
Octokit란 무엇일까요?
Octokit는 GitHub API용 클라이언트의 공식 컬렉션입니다. 이러한 클라이언트에 속하는 rest.js는 GitHub의 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는 github라는 사전 인증된 octokit/rest.js를 제공한다는 것입니다.
따라서 다음 항목 대신
octokit.issues.createComment({
다음을 사용하게 됩니다.
github.issues.createComment({
github 변수 외에 다음 변수도 제공됩니다.
- context는 워크플로 실행 컨텍스트를 포함하는 개체입니다.
- core는 @actions/core 패키지에 대한 참조입니다.
- io는 @actions/io 패키지에 대한 참조입니다.
GitHub Script를 사용하는 워크플로 작성
GitHub Script 작업은 다른 작업처럼 워크플로에 잘 어울립니다. 따라서 CI/CD용으로 이미 설정된 워크플로를 포함한 기존 워크플로와 혼합할 수도 있습니다. 이 작업이 얼마나 편리한지 설명하기 위해 지금부터는 새로 생성된 문제에 GitHub Script를 사용하여 설명을 자동으로 게시하는 완료된 워크플로를 만들어보겠습니다.
먼저 문제가 열리면 이 워크플로가 실행된다고 지정하는 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!!!"
})
actions/github-script@0.8.0 사용
GitHub Script라고도 하는 actions/github-script@0.8.0 작업은 GitHub API와의 통합 관련 중요 작업을 모두 수행합니다.
이 작업을 수행하려면 요청 인증을 위해 런타임 시 제공되는 github-token이 필요합니다. 이 작업은 자동으로 수행되므로 코드를 그대로 사용할 수 있습니다.
github에 저장된 octokit/rest/js 클라이언트를 사용하는 거의 모든 JavaScript가 script 매개 변수가 될 수 있습니다. 이 경우에는 하드 코딩된 설명을 만드는 (가독성을 위해 여러 줄로 분할된) 한 줄입니다.
워크플로가 실행되면 GitHub Script는 작업 탭에서 검토할 수 있도록 자신이 실행한 코드를 기록합니다.
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}))
'INFRA > DevOps' 카테고리의 다른 글
Github의 이해 2 (0) | 2022.07.12 |
---|---|
[Docker] Docker container storage (0) | 2022.07.11 |
[Docker] Docker container resource 관리 (0) | 2022.07.05 |
Github의 이해 1 (0) | 2022.07.01 |
Ingress 란? - 1 (0) | 2022.06.27 |
댓글