Skip to content

GitHub Actions

Uporabite GitHub Actions, kadar želite, da repozitorij samodejno prevede spremenjeno dokumentacijo in odpre pull request z ustvarjenimi izhodi.

Večina repozitorijev naj uporablja standardno nastavitev GITHUB_TOKEN. Nastavitev GitHub App uporabite le, kadar vaša organizacija omejuje privzeta dovoljenja žetona ali zahteva overjanje na osnovi aplikacije.

Predpogoji

Pred ustvarjanjem workflowa konfigurirajte skrivnosti AI storitev, ki jih potrebuje vaše prevajanje.

Prevajanje besedila zahteva enega ponudnika jezikovnih modelov:

  • 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

Za prevajanje slik je dodatno potrebna Azure AI Vision:

  • AZURE_AI_SERVICE_API_KEY
  • AZURE_AI_SERVICE_ENDPOINT

Oglejte si Konfiguracija in Nastavitev Azure AI za podrobnosti o lokalni konfiguraciji.

Standardna nastavitev

To nastavitev uporabite za večino javnih in zasebnih repozitorijev.

Korak 1: Dodajte skrivnosti repozitorija

V ciljnih repozitoriju odprite Settings > Secrets and variables > Actions, nato dodajte skrivnosti ponudnika, ki jih bo uporabljal vaš workflow.

Izberite skrivnosti Actions

Korak 2: Omogočite dovoljenja za workflow

Odprite Settings > Actions > General.

Pod Workflow permissions:

  1. Izberite Read and write permissions.
  2. Omogočite Allow GitHub Actions to create and approve pull requests.
  3. Shranite nastavitev.

Nastavitev dovoljenj workflowa

Korak 3: Dodajte workflow

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

Spremenite translate -l "es fr de" -y na ciljne jezike in zastavice vsebine, ki jih zahteva vaš projekt. Za velike repozitorije dodajte filter paths: pod on:, da workflow teče le, ko se dokumentacija spremeni.

Nastavitev GitHub App

To nastavitev uporabite, kadar GITHUB_TOKEN ne more ustvarjati commitov ali pull requestov v vaši organizaciji.

Korak 1: Ustvarite ali namestite GitHub App

Ustvarite GitHub App z dostopom za branje/pisanje do Contents in Pull requests, ali namestite aplikacijo, ki jo zagotavlja vaša organizacija, če jo že imajo.

Zabeležite:

  • App ID
  • Vsebina zasebnega ključa

Shranjite jih kot skrivnosti repozitorija:

  • GH_APP_ID
  • GH_APP_PRIVATE_KEY

Korak 2: Ustvarite žeton aplikacije

Uporabite isti workflow kot pri standardni nastavitvi, vendar dodajte korak app-token pred korakom za 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/

Omejitve runnerjev

GitHub-hosted runnerji imajo največjo dovoljeno dolžino izvajanja opravila. Veliki repozitoriji ali veliko ciljnih jezikov lahko presežejo to omejitev.

Za velike prevajalske obremenitve:

  • Prevajajte manj jezikov na zagon.
  • Uporabite zastavice vsebine, kot so -md, -nb ali -img.
  • Uporabite self-hosted runner, ko velikost repozitorija ali latenca modela naredi hosted runnerje nezanesljive.

Pregled v CI

Uporabite co-op-review, kadar naj pull request preveri ustvarjene prevode brez klica LLM ali Vision ponudnikov.

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

co-op-review je beta deterministični ukaz za pregled. Njegove kontrole in izhodna shema se lahko razvijajo, vendar je zasnovan kot varen za CI, ker ne zapisuje datotek niti ne kliče ponudnikov modelov.