سناریویی که گفته شده یکی از موارد رایج و روزمره در CI/CD با Odoo و حتی سیستمهای مشابهای است که ساختار modular دارند. بنابر این این راهکار را می توان برای مسائل مشابه نیز استفاده کرد.
برای اینکه در زمان تست یک ماژول در یک مخزن از گیتهاب بتوانید به یک مخزن خصوصی دیگر مثل brand دسترسی داشته باشد، چند روش استاندارد وجود دارد. در ادامه یک راهحل گامبهگام کامل بر اساس بهترین روشها آوردهایم.
🎯 هدف
پروژه connector در GitHub Action باید در هنگام اجرای تستها، به کدهای یک مخزن خصوصی دیگر (brand) دسترسی داشته باشد تا آن را clone یا به عنوان addon استفاده کند.
برای این کار ما گامهایی را در فرآیند ساخت اضافه میکنیم که در آن قبل از اجرای تستها ماژولهای مورد نیاز کلون شده و در مسیرهای مناسب قرار گیرد.
مراحل انجام این کار گام به گام توضیح داده شده است.
🧩 گام ۱: ساخت یک Personal Access Token (PAT)
از انجا که این پروژهها خصوصی هستند نیاز است که توکنهایی برای دسترسی به آنها ایجاد شود. در این گام نحوه ایجاد توکن دسترسی به مخزن خصوصی را توصیف کردهایم
-
وارد GitHub شوید.
-
برو به Settings → Developer settings → Personal access tokens → Fine-grained tokens.
-
یک token جدید بساز:
-
Repository access → فقط برای مخزن brand (یا همه مخازن در صورت نیاز).
-
Permissions → Contents: read (کافی است).
-
Token را کپی کن.
نکته اینکه این توکن تنها یک بار نمایش داده میشود پس باید آن را در جای مناسب ذخیره و نگهداری کنید.
🧱 گام ۲: ذخیره Token در GitHub Secrets
در مخزن connector:
-
برو به Settings → Secrets and variables → Actions → New repository secret
-
نام secret را بگذار مثلاً:
ODOONIX_REPO_ACCESS_TOKEN
-
مقدار آن را همان توکن ساختهشده بگذار.
⚙️ گام ۳: استفاده از 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
🧠 نکات مهم