Skip to main content
설명서에 자주 업데이트를 게시하며 이 페이지의 번역이 계속 진행 중일 수 있습니다. 최신 정보는 영어 설명서를 참조하세요.

스크립트를 사용하여 실행기에서 코드 테스트

CI(연속 통합)를 위해 필수 GitHub Actions 기능을 사용하는 방법입니다.

참고: GitHub 호스트 실행기는 현재 GitHub Enterprise Server에서 지원되지 않습니다. GitHub public roadmap에 예정된 향후 지원에 대해 자세히 알아볼 수 있습니다.

예제 개요

이 문서에서는 예제 워크플로를 사용하여 GitHub Actions의 주요 CI 기능 중 일부를 보여 줍니다. 이 워크플로가 트리거되면 GitHub Docs 사이트에 끊어진 링크가 있는지 여부를 확인하는 스크립트가 자동으로 실행됩니다.

다음 다이어그램에서는 워크플로의 단계와 작업 내에서 실행되는 방법에 대한 개략적인 보기를 보여 줍니다.

워크플로 단계의 개요 다이어그램

이 예제에서 사용되는 기능

예제 워크플로는 GitHub Actions의 다음 기능을 보여 줍니다.

기능구현
워크플로가 자동으로 실행되도록 트리거push

예제 워크플로

다음 워크플로는 GitHub Docs Engineering 팀에서 만들었습니다. github/docs 리포지토리에서 이 파일의 최신 버전을 검토하려면 다음을 참조하세요. check-broken-links-github-github.yml.

참고: 이 워크플로의 각 줄은 다음 섹션의 "예제 이해"에 설명되어 있습니다.

YAML
name: 'Link Checker: All English'

# **What it does**: Renders the content of every page and check all internal links.
# **Why we have it**: To make sure all links connect correctly.
# **Who does it impact**: Docs content.

on:
  workflow_dispatch:
  push:
    branches:
      - main
  pull_request:

permissions:
  contents: read
  # Needed for the 'trilom/file-changes-action' action
  pull-requests: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
  cancel-in-progress: true

jobs:
  check-links:
    runs-on: ${{ fromJSON('["ubuntu-latest", "self-hosted"]')[github.repository == 'github/docs-internal'] }}
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Setup node
        uses: actions/setup-node@v3
        with:
          node-version: 16.13.x
          cache: npm

      - name: Install
        run: npm ci

      # Creates file "$/files.json", among others
      - name: Gather files changed
        uses: trilom/file-changes-action@a6ca26c14274c33b15e6499323aac178af06ad4b
        with:
          fileOutput: 'json'

      # For verification
      - name: Show files changed
        run: cat $HOME/files.json

      - name: Link check (warnings, changed files)
        run: |
          ./script/rendered-content-link-checker.mjs \
            --language en \
            --max 100 \
            --check-anchors \
            --check-images \
            --verbose \
            --list $HOME/files.json

      - name: Link check (critical, all files)
        run: |
          ./script/rendered-content-link-checker.mjs \
            --language en \
            --exit \
            --verbose \
            --check-images \
            --level critical

예제 이해

다음 표에서는 GitHub Actions 워크플로를 만들 때 이러한 각 기능을 사용하는 방법을 설명합니다.

코드 설명
YAML
name: 'Link Checker: All English'

GitHub 리포지토리의 “작업” 탭에 표시되는 워크플로 이름입니다.

YAML
on:

on 키워드를 사용하면 워크플로를 실행할 때 트리거되는 이벤트를 정의할 수 있습니다. 여기에서 여러 이벤트를 정의할 수 있습니다. 자세한 내용은 "워크플로 트리거"을 참조하세요.

YAML
  workflow_dispatch:

UI에서 이 워크플로를 수동으로 실행할 수 있도록 하려면 workflow_dispatch 이벤트를 추가합니다. 자세한 내용은 workflow_dispatch를 참조하세요.

YAML
  push:
    branches:
      - main

커밋이 main 분기에 푸시될 때마다 워크플로가 자동으로 실행되도록 push 이벤트를 추가합니다. 자세한 내용은 push를 참조하세요.

YAML
  pull_request:

끌어오기 요청을 만들거나 업데이트할 때마다 워크플로가 자동으로 실행되도록 pull_request 이벤트를 추가합니다. 자세한 내용은 pull_request를 참조하세요.

YAML
permissions:
  contents: read
  pull-requests: read

GITHUB_TOKEN에 부여된 기본 사용 권한을 수정합니다. 워크플로의 요구 사항에 따라 달라집니다. 자세한 내용은 "작업에 권한 할당"을 참조하세요.

YAML
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'

특정 이벤트에 대한 동시성 그룹을 만들고 || 연산자를 사용하여 대체 값을 정의합니다. 자세한 내용은 "동시성 사용"을 참조하세요.

YAML
  cancel-in-progress: true

동일한 동시성 그룹에서 현재 실행 중인 작업 또는 워크플로를 모두 취소합니다.

YAML
jobs:

워크플로 파일에서 실행되는 모든 작업을 함께 그룹화합니다.

YAML
  check-links:

jobs 키 내에 저장된 ID check-links를 사용하여 작업을 정의합니다.

YAML
    runs-on: ${{ fromJSON('["ubuntu-latest", "self-hosted"]')[github.repository == 'github/docs-internal'] }}

워크플로를 실행하는 리포지토리에 따라 GitHub 호스팅 실행기 또는 자체 호스팅 실행기에서 실행되도록 작업을 구성합니다. 이 예제에서는 리포지토리의 이름이 docs-internal로 지정되고 github 조직 내에 있는 경우 자체 호스팅 실행기에서 작업이 실행됩니다. 리포지토리가 이 경로와 일치하지 않으면 GitHub에서 호스트하는 ubuntu-latest 실행기에서 실행됩니다. 이러한 옵션에 대한 자세한 내용은 "작업에 대한 실행기 선택.

YAML
    steps:

check-links 작업의 일부로 실행될 모든 단계를 함께 그룹화합니다. 워크플로의 각 작업에는 고유한 steps 섹션이 있습니다.

YAML
      - name: Checkout
        uses: actions/checkout@v3

uses 키워드는 작업에 actions/checkout으로 이름이 지정된 작업을 검색하도록 지시합니다. 이 작업은 리포지토리를 체크 아웃하고 실행기로 다운로드하여 코드에 대해 작업(예: 도구 테스트)을 실행할 수 있도록 합니다. 워크플로가 리포지토리의 코드에 대해 실행되거나 리포지토리에 정의된 작업을 사용할 때마다 체크 아웃 작업을 사용해야 합니다.

YAML
      - name: Setup node
        uses: actions/setup-node@v3
        with:
          node-version: 16.13.x
          cache: npm

이 단계에서는 actions/setup-node 작업을 사용하여 실행기에서 지정된 버전의 Node.js 소프트웨어 패키지를 설치합니다. 그러면 npm 명령에 액세스할 수 있습니다.

YAML
      - name: Install
        run: npm ci

run 키워드는 실행기에서 명령을 실행하도록 작업에 지시합니다. 이 경우 npm ci를 사용하여 프로젝트에 대한 npm 소프트웨어 패키지를 설치합니다.

YAML
      - name: Gather files changed
        uses: trilom/file-changes-action@a6ca26c14274c33b15e6499323aac178af06ad4b
        with:
          fileOutput: 'json'

trilom/file-changes-action 작업을 사용하여 변경된 모든 파일을 수집합니다. 이 예제는 a6ca26c14274c33b15e6499323aac178af06ad4b SHA를 사용하여 특정 버전의 작업에 고정됩니다.

YAML
      - name: Show files changed
        run: cat $HOME/files.json

files.json의 내용을 나열합니다. 워크플로 실행 로그에 표시되며 디버깅에 유용할 수 있습니다.

YAML
      - name: Link check (warnings, changed files)
        run: |
          ./script/rendered-content-link-checker.mjs \
            --language en \
            --max 100 \
            --check-anchors \
            --check-images \
            --verbose \
            --list $HOME/files.json

이 단계에서는 run 명령을 사용하여 script/rendered-content-link-checker.mjs의 리포지토리에 저장된 스크립트를 실행하고 실행에 필요한 모든 매개 변수를 전달합니다.

YAML
      - name: Link check (critical, all files)
        run: |
          ./script/rendered-content-link-checker.mjs \
            --language en \
            --exit \
            --verbose \
            --check-images \
            --level critical

또한 이 단계에서는 run 명령을 사용하여 script/rendered-content-link-checker.mjs의 리포지토리에 저장된 스크립트를 실행하고 다른 매개 변수 집합을 전달합니다.

다음 단계