Skip to Content

خوش آمدید!

بهترین محتوا و ایده‌های جدید بازاریابی خود را به اشتراک بگذارید، پروفایل حرفه‌ای خود را ایجاد کنید و به بازاریاب بهتری تبدیل شوید.

ثبت نام

شما نیاز به ثبت‌نام دارید تا بتوانید با جامعه تعامل داشته باشید.
این سوال علامت‌گذاری شده است
1 پاسخ
3 نماها

من یک مخزن از نرم‌افزارها و افزونه‌های اودوو دارم که connector نام دارد. این پروژه نیاز دارد که در زمان تست به یک مخزن خصوصی addon دیگر به نام brand دسترسی داشته باشد.

از github action برای اجرای خودکار تست‌ها استفاده می‌کنم.

چطور می‌توانم این تست را پیاده سازی کنم؟



آواتار
رها کردن
مولف پاسخ برتر

 سناریویی که گفته شده یکی از موارد رایج و روزمره در CI/CD با Odoo  و حتی سیستم‌های مشابه‌ای است که ساختار modular دارند. بنابر این این راهکار را می توان برای مسائل مشابه نیز استفاده کرد.

برای اینکه در زمان تست یک ماژول در یک مخزن از گیت‌هاب بتوانید به یک مخزن خصوصی دیگر مثل brand دسترسی داشته باشد، چند روش استاندارد وجود دارد. در ادامه یک راه‌حل گام‌به‌گام کامل بر اساس بهترین روش‌ها آورده‌ایم.

🎯 هدف

پروژه connector در GitHub Action باید در هنگام اجرای تست‌ها، به کدهای یک مخزن خصوصی دیگر (brand) دسترسی داشته باشد تا آن را clone یا به عنوان addon استفاده کند.

برای این کار ما گام‌هایی را در فرآیند ساخت اضافه می‌کنیم که در آن قبل از اجرای تست‌ها ماژولهای مورد نیاز کلون شده و در مسیر‌های مناسب قرار گیرد.

مراحل انجام این کار گام به گام توضیح داده شده است.


🧩 گام ۱: ساخت یک Personal Access Token (PAT)

از انجا که این پروژه‌ها خصوصی هستند نیاز است که توکن‌هایی برای دسترسی به آنها ایجاد شود. در این گام نحوه ایجاد توکن دسترسی به مخزن خصوصی را توصیف کرده‌ایم

  1. وارد GitHub شوید.
  2. برو به Settings → Developer settings → Personal access tokens → Fine-grained tokens.
  3. یک token جدید بساز:
    • Repository access → فقط برای مخزن brand (یا همه مخازن در صورت نیاز).
    • Permissions → Contents: read (کافی است).
  4. Token را کپی کن.

نکته اینکه این توکن تنها یک بار نمایش داده می‌شود پس باید آن را در جای مناسب ذخیره و نگهداری کنید.



🧱 گام ۲: ذخیره Token در GitHub Secrets

در مخزن connector:

  1. برو به Settings → Secrets and variables → Actions → New repository secret
  2. نام secret را بگذار مثلاً:
    ODOONIX_REPO_ACCESS_TOKEN
    
  3. مقدار آن را همان توکن ساخته‌شده بگذار.


⚙️ گام ۳: استفاده از Token در Workflow

در فایل .github/workflows/test.yml (یا مشابه آن)، در مرحله setup یا قبل از اجرای تست‌ها، با استفاده از secret به مخزن brand دسترسی بگیر:

name: Test Odoo Addons

on:
  push:
  pull_request:

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout connector repo
        uses: actions/checkout@v4

      - name: Checkout brand private addon
        uses: actions/checkout@v4
        with:
          repository: your-org/brand
          token: ${{ secrets.BRAND_REPO_TOKEN }}
          path: addons/brand

      - name: Setup Python and dependencies
        uses: actions/setup-python@v5
        with:
          python-version: "3.10"

      - name: Install Odoo and dependencies
        run: |
          pip install -r requirements.txt

      - name: Run Odoo tests
        run: |
          export ODOO_ADDONS_PATH=addons,addons/brand
          odoo --test-enable --stop-after-init -i your_module

🧠 نکات مهم

  • دقت کن path: addons/brand همان جایی باشد که Odoo بتواند به آن دسترسی داشته باشد (داخل مسیر addons یا مسیر اضافه‌شده در ODOO_ADDONS_PATH).
  • اگر از Odoo Community Association (OCA) تست‌ها استفاده می‌کنی، می‌توانی از اسکریپت‌های oca-ci هم بهره ببری (پشتیبانی از private addon را دارد).
  • اگر از submodule استفاده می‌کنی، می‌توانی git submodule را هم با token احراز هویت کنی:
    - name: Init submodules
      run: |
        git submodule sync --recursive
        git -c "url.https://x-access-token:${{ secrets.BRAND_REPO_TOKEN }}@github.com/[email protected]:" submodule update --init --recursive
    




آواتار
رها کردن
logo-samandehi