> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gorbit.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# عملية الإصدار والتحديثات

> عملية إصدار Gorbit، والإصدارات، وعملية التحديث الموصى بها

توضح هذه الصفحة عملية إصدار Gorbit، ونظام الإصدارات،
وكيف يتم تسليم التحديثات إلى قنوات النشر المختلفة.

## قنوات الإصدار

<Note>
  يحافظ Gorbit على قنوات إصدار متعددة لتوفير إصدارات مستقرة وتطويرية لحالات استخدام مختلفة.
</Note>

### GitHub

تنشر [إصدارات GitHub](https://github.com/gorbit-dot-app/gorbit/releases) صورًا إلى Docker Hub.
لدى Gorbit نوعان من الإصدارات:

* **أحدث إصدار مستقر** - إصدارات جاهزة للإنتاج
* **إصدار تجريبي** - إصدارات بيتا للاختبار

الفرع `main` من [مستودع Gorbit](https://github.com/gorbit-dot-app/gorbit) هو فرع التطوير لدينا.

<Warning>
  رغم أننا نحاول الحفاظ على `main` مستقرًا من خلال اختبارات CI/CD ومراجعات الكود،
  لا نوصي باستخدام `main` في بيئات الإنتاج.
</Warning>

### Docker Hub

يستضيف [Docker Hub](https://hub.docker.com/r/gorbitdotapp/gorbit) صور الحاويات الفعلية.
يتم نشر صور جديدة كل ليلة من فرع `main` وعند قطع إصدار جديد.

لتحديد أحدث الصور برمجيًا، استخدم نقطة نهاية API:

```
https://cloud.gorbit.app/api/versions
```

تعيد هذه النقطة الإصدارات المستقرة والتجريبية الحالية المتوفرة على Docker Hub.

<Tip>
  إذا لم تحدد إصدارًا عند نشر Gorbit، ستحصل على أحدث بنيات ليلية.
</Tip>

## نظام الإصدارات

يتبع Gorbit [الإصدارات الدلالية (SemVer)](https://semver.org/) بتنسيق واضح ومتوقع.

**تنسيق الإصدار القياسي:**

```
major.minor.hotfix
```

**تنسيق الإصدار التجريبي:**

```
major.minor.hotfix-beta.betahotfix
```

**أمثلة:**

* إصدار مستقر: `1.2.3`
* إصدار تجريبي: `1.3.0-beta.1`
* إصلاح تجريبي: `1.3.0-beta.2`

<Note>
  - **الإصدار الرئيسي** - يُزاد عند التغييرات الجذرية
  - **الإصدار الفرعي** - يُزاد عند الميزات الجديدة، وإصلاحات الأخطاء، والتغييرات المتوافقة مع الإصدارات السابقة
  - **إصدار الإصلاح** - يُزاد فقط عند إعادة إصلاحات الأخطاء إلى الإصدارات
</Note>

### ملفات Docker ومخططات Helm

تُزاد أرقام الإصدارات في ملفات Docker ومخططات Helm عند تغييرها.

## جدول الإصدارات

يتبع Gorbit دورة إصدار أسبوعية متوقعة.

**كل يوم إثنين:**

* يتم ترقية آخر إصدار تجريبي إلى مستقر
* يتم تجميد `main` كإصدار تجريبي جديد

### عملية الإصلاح العاجل

* إصلاحات الأخطاء الحرجة **تُعاد** إلى الإصدارات المستقرة حسب الضرورة
* الإصلاحات العاجلة تتجاوز الدورة الأسبوعية العادية للمشكلات الإنتاجية العاجلة
* كلا الفرعين المستقر والتجريبي يتلقيان إصلاحات عاجلة عند الاقتضاء

## أفضل ممارسات التحديث

للحفاظ على نشر مستقر، نوصي بالبقاء على أحدث إصدار مستقر.
هذه موسومة برقم إصدار مثل `v1.2.3`.

<Steps>
  <Step title="التحقق من API للإصدارات للحصول على علامة الإصدار المستقر">
    قارن إصدارك الحالي بعلامة إصدار أحدث إصدار مستقر.
    نقطة نهاية الإصدارات عامة ولا تتطلب مصادقة.

    ```bash theme={null}
    curl -X GET "https://cloud.gorbit.app/api/versions"
    ```

    ابحث عن مفتاح `stable: gorbit` في الاستجابة.

    ```json Example Response expandable theme={null}
    {
      "stable":{
        "gorbit":"v1.8.1",
        "relational_db":"postgres:15.2-alpine",
        "index":"vespaengine/vespa:8.277.17",
        "nginx":"nginx:1.23.4-alpine"},
        "dev":{
          "gorbit":"v1.9.0-beta.0",
          "relational_db":"postgres:15.2-alpine",
          "index":"vespaengine/vespa:8.277.17",
          "nginx":"nginx:1.23.4-alpine"
        },
        "migration":{
          "gorbit":"airgapped-intfloat-nomic-migration",
          "relational_db":"postgres:15.2-alpine",
          "index":"vespaengine/vespa:8.277.17",
          "nginx":"nginx:1.23.4-alpine"
        }
      }
    }
    ```
  </Step>

  <Step title="تشغيل Gorbit مع علامة الإصدار">
    كيفية تشغيل إصدار Gorbit المحدد ستعتمد على عملية نشرك.

    <Note>
      لا تنسَ البادئة `v`! مثلاً `v1.2.3` صحيح، `1.2.3` غير صحيح.
    </Note>

    <AccordionGroup>
      <Accordion title="سحب صور Docker">
        حدد علامة الإصدار في البيئة.

        ```bash theme={null}
        IMAGE_TAG=<v.MAJOR.MINOR.HOTFIX> docker compose -f docker-compose.dev.yml -p gorbit-stack up -d --pull always --force-recreate
        ```
      </Accordion>
    </AccordionGroup>

    <Accordion title="بناء صور Docker">
      اسحب فرع الإصدار من GitHub أو فقط الإصدار الموسوم وابنِ الصور.

      فرع الإصدار هو حيث يُنشر أحدث إصدار مستقر.
      تُسمى فروع الإصدار `release/v<MAJOR>.<MINOR>`.

      في مستودع Gorbit:

      ```bash From Release Branch theme={null}
      git fetch origin release/v1.2
      git switch release/v1.2

      docker compose -f docker-compose.dev.yml -p gorbit-stack up -d --build --force-recreate
      ```

      ```bash From Tagged Version theme={null}
      git fetch origin tag v1.2.3
      git switch --detach v1.2.3

      docker compose -f docker-compose.dev.yml -p gorbit-stack up -d --build --force-recreate
      ```
    </Accordion>

    <Accordion title="Helm">
      لتحديد إصدار عند النشر باستخدام Helm، اضبط قيمة `global: version` في ملف `values.yaml`.

      ```yaml values.yaml theme={null}
      global:
        version: "v1.2.3"
      ```
    </Accordion>
  </Step>
</Steps>
