Skip to content

GitHub Actions

Naudokite GitHub Actions, kai norite, kad saugykla automatiškai išverstų pakeistą dokumentaciją ir atidarytų pull request su sugeneruotais rezultatais.

Dauguma saugyklų turėtų naudoti standartinį GITHUB_TOKEN nustatymą. GitHub App nustatymą naudokite tik tada, kai jūsų organizacija apriboja numatytas žetono teises arba reikalauja autentifikacijos per programėlę.

Reikalingi dalykai

Prieš kuriant workflow, sukonfigūruokite AI paslaugų slaptus raktus, kurių reikės jūsų vertimo vykdymui.

Teksto vertimui reikalingas vienas kalbos modelio teikėjas:

  • 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

Vaizdų vertimui papildomai reikalinga Azure AI Vision:

  • AZURE_AI_SERVICE_API_KEY
  • AZURE_AI_SERVICE_ENDPOINT

Žr. Konfigūracija ir Azure AI nustatymas vietiniams konfigūracijos duomenims.

Standartinis nustatymas

Naudokite šį nustatymą daugumai viešų ir privačių saugyklų.

1 veiksmas: Pridėkite saugyklos slaptus raktus

Savo tikslinei saugyklai atidarykite Nustatymai > Slaptažodžiai ir kintamieji > Veiksmai, tada pridėkite paslaugos teikėjo slaptus raktus, kuriuos naudos jūsų darbo eiga.

Pasirinkite Veiksmai slaptažodžius

2 veiksmas: Įgalinkite darbo eigos teises

Atidarykite Nustatymai > Veiksmai > Bendra.

Skiltyje Darbo eigos leidimai:

  1. Pasirinkite Skaitymo ir rašymo teises.
  2. Įgalinkite Leisti GitHub Actions kurti ir patvirtinti pull request'us.
  3. Išsaugokite nustatymą.

Darbo eigos leidimų nustatymas

3 veiksmas: Pridėkite workflow

Sukurkite .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/

Pakeiskite translate -l "es fr de" -y į tikslines kalbas ir turinio parametrus, kurių reikia jūsų projektui. Didelėms saugykloms pridėkite paths: filtrą po on:, kad workflow būtų vykdomas tik tada, kai keičiasi dokumentacija.

GitHub App nustatymas

Naudokite šį nustatymą, kai GITHUB_TOKEN negali kurti commit'ų arba pull request'ų jūsų organizacijoje.

1 veiksmas: Sukurkite arba įdiekite GitHub App

Sukurkite GitHub App su skaitymo/rašymo prieiga prie Turinys ir Pull requests, arba įdiekite organizacijos suteiktą programėlę, jei jūsų organizacija jau tokią palaiko.

Užsirašykite:

  • Programėlės ID
  • Privataus rakto turinys

Išsaugokite juos kaip saugyklos slaptus raktus:

  • GH_APP_ID
  • GH_APP_PRIVATE_KEY

2 veiksmas: Sugeneruokite programėlės žetoną

Naudokite tą patį workflow kaip standartiniame nustatyme, bet pridėkite app-token žingsnį prieš pull request žingsnį:

      - 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/

Vykdytojų apribojimai

GitHub talpinami vykdytojai turi maksimalų darbo trukmės limitą. Didelės saugyklos arba daug tikslinių kalbų gali viršyti tą limitą.

Dideliems vertimo darbų kiekiams:

  • Versti mažiau kalbų vienu paleidimu.
  • Naudokite turinio žymes, pvz. -md, -nb arba -img.
  • Naudokite savarankiškai talpinamą vykdytoją, kai saugyklos dydis arba modelio vėlavimas daro talpinamus vykdytojus nepatikimais.

Peržiūra CI

Naudokite co-op-review, kai pull request turėtų patikrinti sugeneruotus vertimus nenaudodamas LLM arba Vision teikėjų.

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

co-op-review yra beta deterministinis peržiūros įrankis. Jo patikrinimai ir išvesties schema gali keistis, tačiau jis sukurtas būti saugus CI, nes neįrašo failų ir nekviečia modelių teikėjų.