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

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

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

예제 개요

이 문서에서는 예제 워크플로를 사용하여 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의 리포지토리에 저장된 스크립트를 실행하고 다른 매개 변수 집합을 전달합니다.

다음 단계