Skip to content

GitHub Actions

Bruk GitHub Actions når du vil at et repository skal oversette endret dokumentasjon automatisk og åpne en pull request med de genererte resultatene.

De fleste repositories bør bruke standardoppsettet med GITHUB_TOKEN. Bruk GitHub App-oppsettet bare når organisasjonen din begrenser standard token-tillatelser eller krever app-basert autentisering.

Forutsetninger

Før du oppretter arbeidsflyten, konfigurer AI-tjenestens secrets som oversettelseskjøringen din trenger.

Tekstoversettelse krever én språkmodellleverandør:

  • 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

Bildeoversettelse krever i tillegg Azure AI Vision:

  • AZURE_AI_SERVICE_API_KEY
  • AZURE_AI_SERVICE_ENDPOINT

Se Konfigurasjon og Azure AI-oppsett for detaljer om lokal konfigurasjon.

Standardoppsett

Bruk dette oppsettet for de fleste offentlige og private repositories.

Trinn 1: Legg til repository-secrets

I målrepositoriet ditt åpner du Innstillinger > Secrets and variables > Actions, og legger deretter til leverandørens secrets som arbeidsflyten din vil bruke.

Velg Actions-hemmeligheter

Trinn 2: Aktiver arbeidsflytstillatelser

Åpne Innstillinger > Actions > Generelt.

Under Arbeidsflytstillatelser:

  1. Velg Les- og skrivetillatelser.
  2. Aktiver Tillat GitHub Actions å opprette og godkjenne pull requests.
  3. Lagre innstillingen.

Innstilling for arbeidsflytstillatelser

Trinn 3: Legg til arbeidsflyten

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

Change translate -l "es fr de" -y to the target languages and content flags your project needs. For large repositories, add a paths: filter under on: so the workflow only runs when documentation changes.

GitHub App-oppsett

Bruk dette oppsettet når GITHUB_TOKEN ikke kan opprette commits eller pull requests i organisasjonen din.

Trinn 1: Opprett eller installer en GitHub App

Opprett en GitHub App med lese-/skrivetilgang til Contents og Pull requests, eller installer appen organisasjonen tilbyr hvis den allerede vedlikeholder en.

Noter:

  • App ID
  • Private key contents

Lagre dem som repository-secrets:

  • GH_APP_ID
  • GH_APP_PRIVATE_KEY

Trinn 2: Generer et app-token

Bruk samme arbeidsflyt som i standardoppsettet, men legg til et app-token-steg før pull request-steget:

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

Begrensninger for runnere

GitHub-hostede runnere har en maksimal jobbtid. Store repositories eller mange målspråk kan overskride denne grensen.

For store oversettelsesarbeidsmengder:

  • Oversett færre språk per kjøring.
  • Bruk innholdsflagg som -md, -nb, eller -img.
  • Bruk en self-hosted runner når repository-størrelse eller modellens latenstid gjør hostede runnere upålitelige.

Gjennomgang i CI

Bruk co-op-review når en pull request skal validere genererte oversettelser uten å kalle LLM- eller Vision-leverandører.

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

co-op-review er en beta deterministisk gjennomgangskommando. Dens sjekker og utdata-skjema kan endre seg, men den er designet for å være sikker for CI fordi den ikke skriver filer eller kaller modellleverandører.