Skip to content

GitHub Actions

ใช้ GitHub Actions เมื่อคุณต้องการให้ที่เก็บแปลเอกสารที่มีการเปลี่ยนแปลงโดยอัตโนมัติและเปิด pull request พร้อมผลลัพธ์ที่สร้างขึ้น

โดยปกติที่เก็บส่วนใหญ่ควรใช้การตั้งค่า GITHUB_TOKEN มาตรฐาน ใช้การตั้งค่า GitHub App เฉพาะเมื่อองค์กรของคุณจำกัดสิทธิ์ของโทเค็นเริ่มต้นหรือจำเป็นต้องใช้การยืนยันตัวตนแบบแอป

Prerequisites

ก่อนสร้าง workflow ให้กำหนดค่า secrets ของบริการ AI ที่การรันการแปลของคุณต้องการ

การแปลข้อความต้องการผู้ให้บริการโมเดลภาษาอย่างน้อยหนึ่งราย:

  • Azure OpenAI: AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_MODEL_NAME, AZURE_OPENAI_CHAT_DEPLOYMENT_NAME, AZURE_OPENAI_API_VERSION
  • OpenAI: OPENAI_API_KEY, OPENAI_CHAT_MODEL_ID, plus optional OPENAI_ORG_ID and OPENAI_BASE_URL

การแปลภาพยังต้องการ Azure AI Vision เพิ่มเติม:

  • AZURE_AI_SERVICE_API_KEY
  • AZURE_AI_SERVICE_ENDPOINT

ดู การกำหนดค่า และ การตั้งค่า Azure AI สำหรับรายละเอียดการกำหนดค่าแบบโลคัล

Standard Setup

ใช้การตั้งค่านี้สำหรับที่เก็บสาธารณะและส่วนตัวส่วนใหญ่

Step 1: Add Repository Secrets

ในที่เก็บเป้าหมายของคุณ ให้เปิด Settings > Secrets and variables > Actions แล้วเพิ่ม secrets ของผู้ให้บริการที่ workflow ของคุณจะใช้

เลือก Secrets ของ Actions

Step 2: Enable Workflow Permissions

เปิด Settings > Actions > General

ภายใต้ Workflow permissions:

  1. เลือก Read and write permissions
  2. เปิดใช้งาน Allow GitHub Actions to create and approve pull requests
  3. บันทึกการตั้งค่า

การตั้งค่าสิทธิ์ของ Workflow

Step 3: Add the Workflow

สร้าง .github/workflows/co-op-translator.yml:

name: Co-op Translator

on:
  push:
    branches:
      - main

jobs:
  co-op-translator:
    runs-on: ubuntu-latest

    permissions:
      contents: write
      pull-requests: write

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: "3.10"

      - name: Install Co-op Translator
        run: |
          python -m pip install --upgrade pip
          pip install co-op-translator

      - name: Run Co-op Translator
        env:
          PYTHONIOENCODING: utf-8
          AZURE_AI_SERVICE_API_KEY: ${{ secrets.AZURE_AI_SERVICE_API_KEY }}
          AZURE_AI_SERVICE_ENDPOINT: ${{ secrets.AZURE_AI_SERVICE_ENDPOINT }}
          AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY }}
          AZURE_OPENAI_ENDPOINT: ${{ secrets.AZURE_OPENAI_ENDPOINT }}
          AZURE_OPENAI_MODEL_NAME: ${{ secrets.AZURE_OPENAI_MODEL_NAME }}
          AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: ${{ secrets.AZURE_OPENAI_CHAT_DEPLOYMENT_NAME }}
          AZURE_OPENAI_API_VERSION: ${{ secrets.AZURE_OPENAI_API_VERSION }}
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
          OPENAI_ORG_ID: ${{ secrets.OPENAI_ORG_ID }}
          OPENAI_CHAT_MODEL_ID: ${{ secrets.OPENAI_CHAT_MODEL_ID }}
          OPENAI_BASE_URL: ${{ secrets.OPENAI_BASE_URL }}
        run: |
          translate -l "es fr de" -y

      - name: Create Pull Request with translations
        uses: peter-evans/create-pull-request@v5
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          commit-message: "Update translations via Co-op Translator"
          title: "Update translations via Co-op Translator"
          body: |
            This PR updates translations for recent changes to the main branch.

            Generated by Co-op Translator.
          branch: update-translations
          base: main
          labels: translation, automated-pr
          delete-branch: true
          add-paths: |
            translations/
            translated_images/

เปลี่ยน translate -l "es fr de" -y เป็นภาษาปลายทางและธงเนื้อหาที่โครงการของคุณต้องการ สำหรับที่เก็บขนาดใหญ่ ให้เพิ่มตัวกรอง paths: ภายใต้ on: เพื่อให้ workflow ทำงานเฉพาะเมื่อเอกสารมีการเปลี่ยนแปลง

GitHub App Setup

ใช้การตั้งค่านี้เมื่อ GITHUB_TOKEN ไม่สามารถสร้าง commits หรือ pull requests ในองค์กรของคุณได้

Step 1: Create or Install a GitHub App

สร้าง GitHub App ที่มีสิทธิ์อ่าน/เขียนสำหรับ Contents และ Pull requests หรือ ติดตั้งแอปที่องค์กรจัดเตรียมไว้หากองค์กรของคุณมีแอปอยู่แล้ว

บันทึก:

  • App ID
  • Private key contents

จัดเก็บเป็น secrets ของที่เก็บ:

  • GH_APP_ID
  • GH_APP_PRIVATE_KEY

Step 2: Generate an App Token

ใช้ workflow เดียวกันกับการตั้งค่ามาตรฐาน แต่เพิ่มขั้นตอน app-token ก่อนขั้นตอน pull request:

      - name: Authenticate GitHub App
        id: generate_token
        uses: tibdex/github-app-token@v1
        with:
          app_id: ${{ secrets.GH_APP_ID }}
          private_key: ${{ secrets.GH_APP_PRIVATE_KEY }}

      - name: Create Pull Request with translations
        uses: peter-evans/create-pull-request@v5
        with:
          token: ${{ steps.generate_token.outputs.token }}
          commit-message: "Update translations via Co-op Translator"
          title: "Update translations via Co-op Translator"
          branch: update-translations
          base: main
          delete-branch: true
          add-paths: |
            translations/
            translated_images/

Runner Limits

GitHub-hosted runners มีระยะเวลาการทำงานสูงสุด ที่เก็บขนาดใหญ่หรือหลายภาษาปลายทางอาจเกินขีดจำกัดนั้นได้

สำหรับงานแปลที่มีปริมาณมาก:

  • แปลภาษาน้อยลงต่อการรันหนึ่งครั้ง
  • ใช้ธงเนื้อหา เช่น -md, -nb, หรือ -img
  • ใช้ runner ที่โฮสต์เองเมื่อขนาดที่เก็บหรือความหน่วงของโมเดลทำให้ runner ที่โฮสต์ไม่เชื่อถือได้

Review in CI

ใช้ co-op-review เมื่อ pull request ควรตรวจสอบการแปลที่สร้างขึ้นโดยไม่เรียกผู้ให้บริการ LLM หรือ Vision

      - name: Review translated outputs
        run: |
          co-op-review --changed-from "origin/${{ github.base_ref }}" --format github

co-op-review เป็นคำสั่งการตรวจทานเชิงกำหนด (beta) การตรวจสอบและสคีมาผลลัพธ์ของมันอาจพัฒนาได้ แต่ถูกออกแบบให้ปลอดภัยสำหรับ CI เพราะมันไม่เขียนไฟล์หรือเรียกผู้ให้บริการโมเดล