GitLab CI/CD

GitLab CI/CD 및 Lingo.dev CI/CD를 사용한 AI 번역

GitLab CI/CD란 무엇인가요?

GitLab CI/CD는 GitLab에 내장된 지속적 통합 및 배포 플랫폼입니다. 사용자가 YAML 파일로 파이프라인을 정의하여 코드를 빌드, 테스트, 배포하거나 리포지토리 이벤트에 의해 트리거되는 작업을 자동화할 수 있습니다.

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

Lingo.dev CI/CD는 CI/CD에서 앱과 콘텐츠를 현지화하는 AI 기반 도구로, 번역이 절대 오래되지 않도록 보장합니다. Lingo.dev CLI 위에 구축되었으며 ci 명령을 통해 사용할 수 있습니다:

npx lingo.dev@latest ci --help

이 가이드에 대하여

이 가이드는 GitLab CI/CD 및 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단계. 액세스 토큰 받기

GitLab CI/CD에서 액세스 토큰은 파이프라인 내에서 특정 작업을 수행하는 데 필요합니다.

액세스 토큰에는 두 가지 유형이 있습니다:

둘 다 사용할 수 있지만, 개인 액세스 토큰만 GitLab의 무료 사용자에게 제공됩니다.

개인 액세스 토큰

  1. 왼쪽 사이드바에서 아바타를 선택합니다.

  2. 프로필 편집을 선택합니다.

  3. 왼쪽 사이드바에서 액세스 토큰을 선택합니다.

  4. 새 토큰 추가를 선택합니다.

  5. 토큰 이름에 토큰의 이름을 입력합니다(예: "Lingo.dev").

  6. 다음 범위를 활성화합니다.

    • api
    • read_repository
    • write_repository
  7. 개인 액세스 토큰 생성을 선택합니다.

프로젝트 액세스 토큰

  1. GitLab에서 프로젝트로 이동합니다.

  2. 설정 > 액세스 토큰을 선택합니다.

  3. 새 토큰 추가를 선택합니다.

  4. 토큰 이름에 이름을 입력합니다.

  5. 토큰의 역할을 선택합니다.

  6. 다음 범위를 활성화합니다.

    • api
    • read_repository
    • write_repository
  7. 프로젝트 액세스 토큰 생성을 선택합니다.

2단계. CI/CD 변수 구성

GitLab에서 CI/CD 변수를 사용하면 파이프라인이 민감한 값에 액세스할 수 있습니다. GitLab CI/CD에서 Lingo.dev를 사용하려면 Lingo.dev API 키와 GitLab 액세스 토큰이 모두 변수로 제공되어야 합니다.

경고: 기본적으로 CI/CD 변수는 보호된 브랜치에서만 사용할 수 있습니다. 보호된 브랜치를 사용하지 않는 경우 변수 생성 시 변수 보호 옵션을 비활성화하세요.

Lingo.dev API 키

  1. 설정 > CI/CD로 이동합니다.
  2. 변수 섹션을 확장합니다.
  3. 변수 추가를 클릭합니다.
  4. 필드에 LINGODOTDEV_API_KEY를 입력합니다.
  5. 필드에 Lingo.dev API 키를 입력합니다.
  6. 가시성 > 마스킹됨을 선택합니다.
  7. 변수 추가를 클릭합니다.

GitLab 액세스 토큰

  1. 설정 > CI/CD로 이동합니다.
  2. 변수 섹션을 확장합니다.
  3. 변수 추가를 클릭합니다.
  4. 필드에 GL_TOKEN를 입력합니다.
  5. 필드에 GitLab 액세스 토큰을 입력합니다.
  6. 가시성 > 마스킹됨을 선택합니다.
  7. 변수 추가를 클릭합니다.

3단계. 워크플로 선택

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

  • 콘텐츠가 main에 병합되면 main에 번역을 커밋
  • 콘텐츠가 main에 병합되면 main에서 병합 요청 생성
  • 콘텐츠가 기능 브랜치에 병합되면 해당 브랜치에 번역을 커밋
  • 콘텐츠가 기능 브랜치에 병합되면 해당 브랜치에서 병합 요청 생성

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

4단계. 파이프라인 설정

  1. 저장소 루트에 .gitlab-ci.yml 파일을 생성합니다:

    touch .gitlab-ci.yml
    
  2. 예제 파이프라인 중 하나를 파일에 복사합니다.

  3. 변경 사항을 커밋하고 main 브랜치에 푸시합니다:

    git add .gitlab-ci.yml
    git commit -m "feat: GitLab CI pipeline for Lingo.dev"
    git push
    

(선택 사항) 5단계. 파이프라인 커스터마이징

Lingo.dev CI/CD는 대부분의 경우 커스터마이징할 필요가 없는 기본값을 가지고 있습니다. 하지만 ci 명령의 CLI 플래그를 사용하여 재정의할 수 있습니다.

npx lingo.dev@latest ci --api-key "$LINGODOTDEV_API_KEY" --commit-message "My custom commit message!"

사용 가능한 모든 옵션을 보려면 CLI 명령을 참조하세요.

예제 파이프라인

main에 커밋

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

image:
  name: lingodotdev/ci-action:latest
  entrypoint: [""]

stages: [translate]

translate:
  stage: translate
  script:
    - npx lingo.dev@latest ci --api-key "$LINGODOTDEV_API_KEY"
  only:
    - main

main에서 병합 요청

콘텐츠가 main에 병합될 때, main에서 병합 요청을 생성합니다.

image:
  name: lingodotdev/ci-action:latest
  entrypoint: [""]

stages: [translate]

translate:
  stage: translate
  script:
    - npx lingo.dev@latest ci --pull-request --api-key "$LINGODOTDEV_API_KEY"
  only:
    - main

기능 브랜치에 커밋

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

image:
  name: lingodotdev/ci-action:latest
  entrypoint: [""]

stages: [translate]

translate:
  stage: translate
  script:
    - npx lingo.dev@latest ci --api-key "$LINGODOTDEV_API_KEY"
  only:
    - branches
  except:
    - main

기능 브랜치에서 병합 요청

콘텐츠가 기능 브랜치에 병합될 때, 해당 브랜치에서 병합 요청을 생성합니다.

image:
  name: lingodotdev/ci-action:latest
  entrypoint: [""]

stages: [translate]

translate:
  stage: translate
  script:
    - npx lingo.dev@latest ci --pull-request --api-key "$LINGODOTDEV_API_KEY"
  except:
    - main