Skip to content

GitHub Actions

Tumia GitHub Actions unapotaka repositori kutafsiri nyaraka zilizobadilika moja kwa moja na kufungua pull request yenye matokeo yaliyotengenezwa.

Repositoti nyingi zinapaswa kutumia usanidi wa kawaida wa GITHUB_TOKEN. Tumia usanidi wa GitHub App tu wakati shirika lako linapozuia ruhusa za tokeni ya chaguo-msingi au linahitaji uthibitisho kwa kutumia app.

Prerequisites

Kabla ya kuunda workflow, sanidi siri za huduma za AI ambazo mchakato wako wa tafsiri unazitaka.

Tafsiri ya maandishi inahitaji mtoa huduma mmoja wa mfano wa lugha:

  • 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

Tafsiri ya picha inahitaji pia Azure AI Vision:

  • AZURE_AI_SERVICE_API_KEY
  • AZURE_AI_SERVICE_ENDPOINT

Tazama Usanidi na Usanidi wa Azure AI kwa maelezo ya usanidi wa eneo-kazi.

Standard Setup

Tumia usanidi huu kwa repositoti nyingi za umma na binafsi.

Step 1: Add Repository Secrets

Katika repositori lengwa lako, fungua Mipangilio > Siri na vigezo > Actions, kisha ongeza siri za mtoa huduma ambazo workflow yako itatumia.

Chagua siri za Actions

Step 2: Enable Workflow Permissions

Fungua Mipangilio > Actions > Msingi.

Under Ruhusa za workflow:

  1. Chagua Ruhusa za kusoma na kuandika.
  2. Wezesha Ruhusu GitHub Actions kuunda na kuidhinisha pull requests.
  3. Hifadhi mipangilio.

Mazingira ya ruhusa za workflow

Step 3: Add the Workflow

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/

Badilisha translate -l "es fr de" -y kwa lugha lengwa na vigezo vya yaliyomo mradi wako unahitaji. Kwa repositoti kubwa, ongeza kichujio cha paths: chini ya on: ili workflow ianze tu wakati nyaraka za maelezo zitabadilika.

GitHub App Setup

Tumia usanidi huu wakati GITHUB_TOKEN haiwezi kuunda commits au pull requests ndani ya shirika lako.

Step 1: Create or Install a GitHub App

Unda GitHub App yenye ruhusa za kusoma/kuandika kwa Contents na Pull requests, au sakinisha app iliyotolewa na shirika ikiwa shirika lako linayo tayari.

Rekodi:

  • App ID
  • Yaliyomo ya ufunguo wa kibinafsi

Zihifadhi kama siri za repositori:

  • GH_APP_ID
  • GH_APP_PRIVATE_KEY

Step 2: Generate an App Token

Tumia workflow ile ile kama kwenye usanidi wa kawaida, lakini ongeza hatua ya app-token kabla ya hatua ya 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

Runners zinazotolewa na GitHub zina muda wa kazi wa juu. Repositoti kubwa au lugha nyingi lengwa zinaweza kuvuka kikomo hicho.

Kwa kazi kubwa za tafsiri:

  • Tafsiri lugha chache kwa kila mchakato.
  • Tumia vigezo vya yaliyomo kama -md, -nb, au -img.
  • Tumia runner mwenyeji mwenyewe wakati ukubwa wa repositori au ucheleweshaji wa mfano unafanya runners za mwenyeji zisitegemeke.

Review in CI

Tumia co-op-review wakati pull request inapaswa kuthibitisha tafsiri zilizotengenezwa bila kuita watoa huduma wa LLM au Vision.

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

co-op-review ni amri ya hakiki ya beta isiyobadilika. Ukaguzi wake na muundo wa matokeo yanaweza kubadilika, lakini imeundwa kuwa salama kwa CI kwa sababu haiandiki faili wala kuita watoa huduma wa mfano.