پست

منتشر کردن یک پلاگین در Jetbrains Rider

منتشر کردن یک پلاگین در Jetbrains Rider

اگر می‌خواهید افزونه خود را برای یکی از IDE های شرکت Jetbrains منتشر کنید این راهنما برای شما هست.

قدم اول: نصب Gradle با نسخه مشخص

پلاگین‌های IntelliJ Platform (که Rider هم روی همین پلتفرم ساخته شده) با Gradle IntelliJ Plugin مدیریت می‌شوند. برای اینکه سازگاری کامل داشته باشید، بهتر است نسخه Gradle را دقیق مشخص کنید:

1
choco install gradle --version 8.10 -y

این دستور با استفاده از Chocolatey (مدیر پکیج ویندوز)، نسخه ۸.۱۰ گریدل را روی سیستم نصب می‌کند. مشخص کردن نسخه اهمیت دارد؛ چون سازگاری بین Gradle و IntelliJ Platform Gradle Plugin موضوعی حساس است و نسخه‌های ناهماهنگ می‌توانند باعث خطاهای عجیب در فاز build شوند.
حجم دانلود شده تقریبا 200 مگابایت است.

قدم دوم: تأیید نصب

بعد از نصب، همیشه بهتر است مطمئن شوید نصب به‌درستی انجام شده:

1
gradle -v

این دستور نسخه Gradle، نسخه JVM، و اطلاعات محیط اجرا را نمایش می‌دهد. اگر خروجی این دستور نسخه ۸.۱۰ را نشان ندهد، یعنی یا نصب کامل نشده یا نسخه دیگری از قبل روی سیستم فعال است.

قدم سوم: ساخت Gradle Wrapper

اینجا نکته‌ای هست که خیلی از دولوپرهای تازه‌کار از آن غافل می‌شوند. پروژه‌های IntelliJ Platform معمولاً نباید به نسخه Gradle نصب‌شده روی سیستم شما وابسته باشند؛ به‌جای آن باید از Gradle Wrapper استفاده کنند تا هر کسی که پروژه را clone می‌کند، همان نسخه دقیق Gradle را بدون نصب دستی داشته باشد:

1
gradle wrapper --gradle-version 8.10

این دستور فایل‌های gradlew و gradlew.bat را در ریشه پروژه می‌سازد و پیکربندی نسخه را در gradle/wrapper/gradle-wrapper.properties ذخیره می‌کند. از این نقطه به بعد، شما دیگر مستقیم با دستور gradle کار نمی‌کنید؛ بلکه از wrapper پروژه استفاده می‌کنید.
این بخش هم در حد چند مگابایت دانلود دارد.

قدم چهارم: ساخت فایل نهایی افزونه

حالا وقت رسیدن به هدف اصلی است:

1
.\gradlew.bat buildPlugin

طبق داکیومنت رسمی IntelliJ Platform Plugin SDK، تسک buildPlugin، پروژه را می‌سازد و آرشیو ZIP نهایی افزونه را آماده می‌کند. این تسک خروجی تسک prepareSandbox (که شامل ماژول‌ها و وابستگی‌های پروژه است) و همچنین خروجی jarSearchableOptions را می‌گیرد و در نهایت یک فایل ZIP در مسیر build/distributions قرار می‌دهد.
بیشترین حجم دانلود در این بخش است که 3.3 گیگابایت موارد مورد نیاز برای بیلد دانلود می‌شود.

همین فایل ZIP است که برای موارد زیر استفاده می‌شود:

  • نصب دستی روی IDE از طریق گزینه Install Plugin from Disk
  • بارگذاری در یک Custom Plugin Repository شخصی
  • آپلود اولیه و دستی روی JetBrains Marketplace

نکته مهم که باید بدانید: مرحله بعد از buildPlugin

طبق داکیومنت رسمی JetBrains، فایل ZIP ساخته‌شده به‌تنهایی روی Marketplace منتشر نمی‌شود. اولین بار باید این فایل را به‌صورت دستی از طریق حساب کاربری در Marketplace آپلود کنید. فقط بعد از این آپلود اولیه است که می‌توانید از تسک publishPlugin برای انتشارهای بعدی به‌صورت خودکار استفاده کنید.

فرآیند بررسی هم شامل چند مرحله است: بررسی خودکار در زمان آپلود، تست سازگاری با Plugin Verifier، تست‌های خودکار و در نهایت بازبینی دستی توسط تیم Marketplace. طبق اعلام رسمی، معمولاً پاسخ ظرف دو روز کاری به ایمیل حساب Marketplace شما ارسال می‌شود.

اگر پروژه شما از قابلیت Plugin Signing استفاده می‌کند، به‌جای buildPlugin باید از تسک signPlugin استفاده کنید تا خروجی به‌درستی امضا شود.

استفاده از Pipeline

با توجه به اینکه برای استفاده لوکال نیاز است حداقل 4 گیگ فایل دانلود شود برای حل این مورد می‌توانید از پایپ لاین گیتهاب استفاده کنید تا در چند دقیقه فایل Zip نهایی ساخته شود.
کافی است در پایپ لاین این کد را قرار دهید:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# Builds the plugin and uploads the resulting zip as an artifact.
# Run manually from the "Actions" tab in GitHub.

name: Build Plugin

on:
  workflow_dispatch:

jobs:
  build:
    name: Build Rider Plugin
    runs-on: windows-latest

    permissions:
      contents: read

    steps:
      - name: Checkout source
        uses: actions/checkout@v4

      - name: Set up JDK 17
        uses: actions/setup-java@v4
        with:
          distribution: temurin
          java-version: "17"

      - name: Set up Gradle cache
        uses: gradle/actions/setup-gradle@v6
        with:
          cache-disabled: false

      - name: Build plugin
        run: .\gradlew.bat buildPlugin --build-cache --no-daemon

      - name: Upload plugin ZIP
        uses: actions/upload-artifact@v4
        with:
          name: rider-demystified-links
          path: build/distributions/*.zip
          if-no-files-found: error
          retention-days: 30

نمونه پروژه و پایپ لاین در لینک زیر موجود است.

جمع‌بندی

نمونه سورس افزونه:
rider-demystified-links

لینک پابلیش دستی افزونه:
jetbrains