GitHub Actions

GitHub Actions 및 Lingo.dev CI/CD를 활용한 AI 번역

GitHub Actions란 무엇인가요?

GitHub Actions는 GitHub에 내장된 CI/CD 및 자동화 플랫폼입니다. 사용자는 YAML 파일로 워크플로우를 정의하여 코드를 빌드, 테스트, 배포하거나 리포지토리 이벤트에 의해 트리거되는 작업을 자동화할 수 있습니다.

Lingo.dev CI/CD란 무엇인가요?

Lingo.dev CI/CD는 CI/CD에서 앱과 콘텐츠를 현지화하는 AI 기반 도구로, 번역이 절대 오래되지 않도록 보장합니다. GitHub의 경우, Lingo.dev는 통합을 간소화하는 맞춤형 GitHub Action을 제공합니다.

이 가이드에 대하여

이 가이드는 Lingo.dev GitHub Action과 Lingo.dev Engine을 사용하여 Lingo.dev CI/CD를 설정하는 방법을 설명합니다.

1단계. Lingo.dev CLI 설정

시작하려면 Lingo.dev CLI빠른 시작을 따르세요.

다음 항목을 준비해야 합니다:

  • Lingo.dev용 API 키
  • 번역 파이프라인의 동작을 구성하는 i18n.json 파일
  • npx lingo.dev@latest run로 콘텐츠를 번역할 수 있는 기능

2단계. 리포지토리 시크릿 구성

  1. Settings > Secrets and variables > Actions로 이동합니다.
  2. New repository secret을 클릭합니다.
  3. Name 필드에 LINGODOTDEV_API_KEY을 입력합니다.
  4. Secret 필드에 Lingo.dev API 키를 입력합니다.
  5. Add secret을 클릭합니다.

3단계. 워크플로우 선택

다양한 워크플로우를 지원하기 위해 Lingo.dev CI/CD를 여러 방식으로 설정할 수 있습니다. 다음은 권장하는 워크플로우입니다(예제 제공):

  • 콘텐츠가 main에 병합될 때, 번역을 main에 커밋
  • 콘텐츠가 main에 병합될 때, main에서 풀 리퀘스트 생성
  • 콘텐츠가 기능 브랜치에 병합될 때, 번역을 해당 브랜치에 커밋
  • 콘텐츠가 기능 브랜치에 병합될 때, 해당 브랜치에서 풀 리퀘스트 생성

하지만 "최고의" 워크플로우는 없습니다. 모두 장단점이 있습니다. 어디서부터 시작해야 할지 확실하지 않다면 첫 번째 옵션부터 시작하는 것을 권장합니다. 가장 간단하고 눈에 띄지 않는 워크플로우입니다.

4단계. 워크플로우 설정하기

  1. 저장소에 .github/workflows 디렉터리를 생성합니다:

    mkdir -p .github/workflows
    

    .github 앞에 .를 반드시 포함해야 합니다.

  2. .github/workflows 디렉터리에 YAML 파일을 생성합니다:

    touch .github/workflows/translate.yml
    

    파일 이름은 중요하지 않습니다.

  3. 예제 워크플로우 중 하나를 파일에 복사합니다.

  4. 워크플로우가 풀 리퀘스트를 생성하는 경우:

    1. 설정 > 액션 > 일반으로 이동합니다.
    2. GitHub Actions가 풀 리퀘스트를 생성하고 승인하도록 허용을 활성화합니다.
    3. 저장을 클릭합니다.
  5. 변경 사항을 main 브랜치에 커밋하고 푸시합니다:

    git add  .github/workflows/translate.yml
    git commit -m "feat: GitHub action for Lingo.dev"
    git push
    

(선택 사항) 5단계. 워크플로우 커스터마이징

Lingo.dev CI/CD는 대부분의 경우 커스터마이징할 필요가 없는 기본값을 가지고 있습니다. GitHub Action에 입력값을 전달하여 이를 재정의할 수 있습니다:

사용 가능한 입력값:

  • version: Lingo.dev CLI 버전 (기본값: "latest")
  • api-key: Lingo.dev 플랫폼 API 키 (필수)
  • pull-request: 변경 사항으로 풀 리퀘스트 생성 (기본값: false)
  • commit-message: 커스텀 커밋 메시지 (기본값: "feat: update translations via @LingoDotDev")
  • pull-request-title: 커스텀 풀 리퀘스트 제목 (기본값: "feat: update translations via @LingoDotDev")
  • commit-author-name: Git 커밋 작성자 이름 (기본값: "Lingo.dev")
  • commit-author-email: Git 커밋 작성자 이메일 (기본값: "[email protected]")
  • working-directory: 작업 디렉터리 (기본값: ".")
  • process-own-commits: 이 액션으로 생성된 커밋 처리 (기본값: false)
  • parallel: 병렬 모드로 실행 (기본값: false)

커스텀 입력값을 사용한 예제:

- name: Lingo.dev
  uses: lingodotdev/lingo.dev@main
  with:
    api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
    commit-message: "My custom commit message!"
    parallel: true

예제 워크플로우

메인에 커밋

콘텐츠가 main에 병합될 때, 번역을 main에 커밋합니다.

name: Translate

on:
  push:
    branches: [main]

permissions:
  contents: write

jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Lingo.dev
        uses: lingodotdev/lingo.dev@main
        with:
          api-key: ${{ secrets.LINGODOTDEV_API_KEY }}

GitHub에서 보기

main에서 풀 리퀘스트

콘텐츠가 main에 병합될 때, main에서 풀 리퀘스트를 생성합니다.

name: Translate

on:
  push:
    branches: [main]

permissions:
  contents: write
  pull-requests: write

jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Lingo.dev
        uses: lingodotdev/lingo.dev@main
        with:
          api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
          pull-request: true
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

GitHub에서 보기

기능 브랜치에 커밋

콘텐츠가 기능 브랜치에 병합될 때, 번역을 해당 브랜치에 커밋합니다.

name: Translate

on:
  push:
    branches-ignore: [main]

permissions:
  contents: write

jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Lingo.dev
        uses: lingodotdev/lingo.dev@main
        with:
          api-key: ${{ secrets.LINGODOTDEV_API_KEY }}

GitHub에서 보기

기능 브랜치에서 풀 리퀘스트

콘텐츠가 기능 브랜치에 병합될 때, 해당 브랜치에서 풀 리퀘스트를 생성합니다.

name: Translate

on:
  push:
    branches-ignore: [main]

permissions:
  contents: write
  pull-requests: write

jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Lingo.dev
        uses: lingodotdev/lingo.dev@main
        with:
          api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
          pull-request: true
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

GitHub에서 보기