Skip to content

GitHub Actions

మీరు రిపోజిటరీలో మారిన డాక్యుమెంటేషన్‌ను ఆటోమేటిగ్గా అనువదించి, రూపొందించిన ఫైళ్లతో ఒక పుల్ రిక్వెస్ట్ తెరవాలనుకుంటే GitHub Actions ను ఉపయోగించండి.

బహుళ రిపోజిటరీలు సాధారణంగా సాధారణ GITHUB_TOKEN సెటప్ ఉపయోగించాలి. మీ సంస్థ డిఫాల్ట్ టోకెన్ అనుమతులను పరిమితం చేస్తే లేదా యాప్-ఆధారిత గుర్తింపు అవసరమైతే మాత్రమే GitHub App సెటప్ ఉపయోగించండి.

ముందస్తు అవసరాలు

వర్క్‌ఫ్లోని సృష్టించే ముందు, మీ అనువాద రన్‌కు అవసరమైన 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, అదనంగా ఐచ్ఛికంగా OPENAI_ORG_ID మరియు OPENAI_BASE_URL

చిత్ర అనువాదానికి అదనంగా Azure AI Vision అవసరం:

  • AZURE_AI_SERVICE_API_KEY
  • AZURE_AI_SERVICE_ENDPOINT

లోకల్ కాన్ఫిగరేషన్ వివరాల కోసం కాన్ఫిగరేషన్ మరియు Azure AI సెటప్ చూడండి.

ప్రామాణిక సెటప్

బహుళ పబ్లిక్ మరియు ప్రైవేట్ రిపోజిటరీలకు ఈ సెటప్ ఉపయోగించండి.

దశ 1: రిపోజిటరీ సీక్రెట్స్ జోడించండి

లక్ష్య రిపోజిటరీలో Settings > Secrets and variables > Actions ను తెరుచుకొని, మీ వర్క్‌ఫ్లో ఉపయోగించుకునే ప్రొవైడర్ సీక్రెట్‌లను జోడించండి.

Actions సీక్రెట్లను ఎంచుకోండి

దశ 2: వర్క్‌ఫ్లో అనుమతులను సక్రియం చేయండి

Settings > Actions > General ను తెరవండి.

Under Workflow permissions:

  1. Read and write permissions ను ఎంచుకోండి.
  2. Allow GitHub Actions to create and approve pull requests ని సక్రియం చేయండి.
  3. సెట్టింగ్‌ను సేవ్ చేయండి.

వర్క్‌ఫ్లో అనుమతి సెట్టింగ్

దశ 3: వర్క్‌ఫ్లోని జోడించండి

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/

translate -l "es fr de" -y ను మీ లక్ష్య భాషలు మరియు మీ ప్రాజెక్ట్‌కు అవసరమైన కంటెంట్ ఫ్లాగుల ప్రకారం మార్చండి. పెద్ద రిపోజిటరీలకు, వర్క్‌ఫ్లో డాక్యుమెంటేషన్ మార్చినప్పుడే మాత్రమే నడవడానికి on: కింద paths: ఫిల్టర్‌ను జోడించండి.

GitHub App సెటప్

మీ సంస్థలో GITHUB_TOKEN కమిట్స్ లేదా పుల్ రిక్వెస్టులను సృష్టించలేకపోతే ఈ సెటప్ ఉపయోగించండి.

దశ 1: GitHub App సృష్టించండి లేదా ఇన్‌స్టాల్ చేయండి

Contents మరియు Pull requests కు read/write యాక్సెస్ ఉన్న GitHub App ను సృష్టించండి, లేదా మీ సంస్థ ఇప్పటికే ఒకటి నిర్వహిస్తుంటే సంస్థ-ప్రదత్త యాప్‌ను ఇన్‌స్టాల్ చేయండి.

నోట్ చేయండి:

  • App ID
  • ప్రైవేట్ కీ యొక్క కంటెంట్

ఇవన్నీ రిపోజిటరీ సీక్రెట్స్‌గా నిల్వ చేయండి:

  • GH_APP_ID
  • GH_APP_PRIVATE_KEY

దశ 2: యాప్ టోకెన్ రూపొందించండి

ప్రామాణిక సెటప్‌లా అదే వర్క్‌ఫ్లో ఉపయోగించండి, గానీ పుల్ రిక్వెస్ట్ దశకి ముందు ఒక app-token దశను జోడించండి:

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

రన్నర్ పరిమితులు

GitHub హోస్టెడ్ రన్నర్‌లకు గరిష్ట జాబ్ వ్యవధి ఉంటుంది. పెద్ద రిపోజిటరీలు లేదా అనేక లక్ష్య భాషలు ఆ పరిమితిని మించవచ్చు.

పెద్ద అనువాద పని భారాల కోసం:

  • ప్రతి రన్‌లో తక్కువ భాషలను అనువదించండి.
  • -md, -nb, లేదా -img వంటి కంటెంట్ ఫ్లాగ్లు ఉపయోగించండి.
  • రిపోజిటరీ పరిమాణం లేదా మోడల్ లేటెన్సీ హోస్టెడ్ రన్నర్‌లను నమ్మకమేౖనవి కాకుండా చేస్తే సెల్ఫ్-హోస్టెడ్ రన్నర్‌ను ఉపయోగించండి.

CIలో సమీక్ష

పుల్ రిక్వెస్ట్ LLM లేదా Vision ప్రొవైడర్‌లను కాల్ చేయకుండానే రూపొందించిన అనువాదాలను ధృవీకరించాలి అయితే co-op-review ను ఉపయోగించండి.

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

co-op-review ఒక బీటా డిటర్మినిస్టిక్ రివ్యూ కమాండ్. దాని చెక్లు మరియు అవుట్‌పుట్ స్కీమా కాలంతో పరిణామం చెందవచ్చు, కానీ ఇది ఫైళ్లను రాయదు లేదా మోడల్ ప్రొవైడర్‌లను కాల్ చేయదు కనుక CI కోసం సురక్షితంగా రూపొందించబడింది.