Yayına Çıkar
Shoutbox makinenizde çalışıyor: bir tablo, bir API, bir widget, bir panel sayfası ve çeviriler. Onu gerçek, kurulabilir bir eklentiye dönüştürme — ve dünyanın önüne çıkarma zamanı. Bu, bitiş çizgisi.
Derinlik için referans sayfaları: Derleme ve Yayınlama ve Premium Eklentiler ve Lisanslama.
Tüm iş, sırayla
Bunun çoğu tek seferlik bir kurulumdur. Ondan sonra, gelecekteki her yayın yalnızca son adımdır — commit'leyip push'lamak.
- Bir jar üretildiğini doğrulamak için yerelde bir kez derleyin.
- panomc.com'da Marketplace kaynağınızı oluşturun.
- İki GitHub secret'ı ekleyin —
PANO_PROD_TOKENveTOKEN_GITHUB. - Pano yayınlama eklentisiyle
.releaserc.jsonekleyin. - Yayın workflow'una bir kurulum adımı ekleyin.
- Bir conventional-commit mesajıyla commit'leyip
main'e push'layın.
Adım 1 — yayın derlemesi
Bir yayın derlemesi, Kotlin backend'inizi derler ve Svelte arayüzünü derleyip tek bir kendi kendine yeten jar'a gömer. Bu, düz bir:
./gradlew buildBUILD SUCCESSFUL ve build/libs/pano-plugin-shoutbox-local-build.jar konumunda bir jar görmelisiniz. Yerelde sürüm her zaman local-build'tir; gerçek sürüm numaraları CI'dan gelir.
Yayın jar'ları arayüze ihtiyaç duyar — asla -Pnoui kullanmayın
-Pnoui, arayüz derlemesini atlar. Bir yayın için bu, bozuk bir eklenti gönderir: ya hiç arayüz yok (onu hiç derlemediyseniz) ya da bayat bir arayüz (eski bir derleme geride bir plugin-ui.zip bıraktıysa). -Pnoui yalnızca hızlı yalnızca-backend geliştirme döngüsü içindir. Hiçbir eski arayüzün yeniden kullanılmadığından emin olmak için ./gradlew clean build çalıştırın.
Adım 2 — sürümleme otomatiktir
Her yayının 1.0.0 gibi bir sürümü vardır. Onu elle yükseltmezsiniz. Sürümler, Conventional Commits commit'lerinizden gelir — her commit feat: (bir özellik), fix: (bir hata düzeltmesi) veya chore: (bakım) gibi bir sözcükle başlar:
fix:→ yamayı (patch) yükseltir (1.0.0→1.0.1)feat:→ minör'ü yükseltir (1.0.0→1.1.0)- bir
BREAKING CHANGE:altbilgisiylefeat:→ majör'ü yükseltir (1.0.0→2.0.0)
gradle.properties'deki version'ı local-build'te bırakın — CI, gerçek numarayı commit geçmişinizden enjekte eder. Onu elle düzenlemek otomasyonu bozar.
Dal tarafından seçilen iki yayın kanalı
Boilerplate, dev'e push'ladığınızda bir ön yayın (1.1.0-dev.3), main'e push'ladığınızda ise bir kararlı yayın (1.1.0) yayınlar. Sunucu sahipleri yalnızca kararlıyı görür. İlk eklentinizi mi yayınlıyorsunuz? Basit tutun ve yalnızca main'e yayınlayın.
Adım 3 — Marketplace kaynağını oluşturun
panomc.com üzerindeki Marketplace, sunucu sahiplerinin eklentileri panellerinden keşfedip kurduğu yerdir.
- panomc.com'da kaydolun (veya giriş yapın).
- Create Resource'u açın ve türü Plugin seçin.
- Bir kategori seçin, başlık ve açıklamayı doldurun.
- Fiyatlandırmayı seçin: ücretsiz veya ücretli (ücretli, sona premium adımını ekler).
Artık eklentinizin sayfasını boş bir sürüm listesiyle görmelisiniz — push'ladığınızda otomasyon onu doldurur.
Kaynak kimliğiniz eklenti kimliğinizdir
Eklentiler için, Marketplace resourceId'si tam olarak pluginId'nizdir — pano-plugin-shoutbox. (Temalar rastgele bir UUID kullanır; eklentiler kullanmaz.) Aşağıdaki yapılandırmanın "resourceId": "pano-plugin-shoutbox" kullanmasının nedeni budur.
Adım 4 — gerekli iki secret'ı ekleyin
GitHub deponuzda, Settings → Secrets and variables → Actions'a gidin ve ekleyin:
PANO_PROD_TOKEN— panomc.com'dan bir API token'ı (Profile → Settings → API Tokens → Create). Yalnızca bir kez gösterilir; onu hemen kopyalayın.TOKEN_GITHUB— GitHub Settings → Developer settings altında oluşturduğunuz bir Personal Access Token (klasik,repokapsamıyla). Boilerplate workflow'u bunu, sürüm dry-run'ı dahil birkaç yerde okur.
TOKEN_GITHUB'ı kaçırın ve her yayın en ilk adımda başarısız olur
GitHub'ın yerleşik GITHUB_TOKEN'ı o adla açığa çıkarılmaz, dolayısıyla PAT'ı kendiniz oluşturmalısınız. Ve API token'ını asla commit'lemeyin — onu yalnızca bir GitHub secret'ı olarak saklayın.
Adım 5 — .releaserc.json'ı yapılandırın
.releaserc.json, yayın aracının (semantic-release) yapılandırıldığı yerdir. Boilerplate, GitHub yayınını oluşturan bir tane getirir; Marketplace'e de yayınlamak için @PanoMC/semantic-release-pano eklentisini ekleyin. İşte Shoutbox için eksiksiz dosya:
{
"branches": [{ "name": "dev", "prerelease": true }, "main"],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
["@semantic-release/github", {
"assets": [
{ "path": "build/libs/*.jar", "label": false },
{ "path": "LICENSE", "label": false }
]
}],
["@PanoMC/semantic-release-pano", {
"file": "build/libs/pano-plugin-shoutbox-${version}.jar",
"panoVersion": "1.0.0",
"useGitHubLink": true,
"repositoryUrl": "https://github.com/YourName/pano-plugin-shoutbox.git",
"configs": [
{
"resourceId": "pano-plugin-shoutbox",
"panoUrl": "https://api.panomc.com",
"tokenVar": "PANO_PROD_TOKEN",
"branches": ["main"]
}
]
}]
],
"repositoryUrl": "https://github.com/YourName/pano-plugin-shoutbox.git"
}Yer tutucuları değiştirin
YourName'i (her iki repositoryUrl satırında) GitHub kullanıcı adınızla değiştirin ve pano-plugin-shoutbox'ın (file yolu ve resourceId) kendi pluginId'niz olduğundan emin olun. Eklentileri bu sırada tutun — GitHub eklentisi Pano eklentisinden önce çalışmalıdır ki useGitHubLink jar'a ihtiyaç duyduğunda jar zaten ekli olsun. useGitHubLink: true, Marketplace'i yeniden yüklemek yerine GitHub yayınınızda zaten bulunan jar'a yönlendirir — ücretsiz bir eklenti için idealdir.
Alan alan tam anlatım ve isteğe bağlı dev sandbox kanalını nasıl ekleyeceğiniz Derleme ve Yayınlama sayfasında.
Adım 6 — Pano eklentisini workflow'da kurun
@PanoMC/semantic-release-pano npm'de değildir, dolayısıyla onu .releaserc.json'da listelemek yeterli değildir — siz onu kurana kadar semantic-release "Cannot find module @PanoMC/semantic-release-pano" ile başarısız olur.
Bu tek satırı .github/workflows/release.yml'deki her iki işe (sürüm dry-run işi ve yayın işi), her işin semantic-release adımından önce ekleyin:
- run: npm install -D git+https://github.com/PanoMC/semantic-release-pano.gitHer iki iş de, yoksa kaçırdığınızda başarısız olur
Onu yalnızca bir işe eklerseniz, çalıştırma diğerinde aynı "Cannot find module" hatasıyla başarısız olur. Bu, gerekli tek workflow düzenlemesidir — boilerplate workflow'undaki diğer her şeye dokunmazsınız.
Adım 7 — push'layın ve yayınlanmasını izleyin
Kaynak oluşturulmuş, her iki secret eklenmiş ve .releaserc.json artı workflow adımı yerinde olduğunda, yayınlamak yalnızca bir conventional-commit ve bir push'tur:
git push origin mainDeponuzun Actions sekmesini açın. Pano Plugin Build adlı bir çalıştırma bir dakika içinde belirir ve bitmesi birkaç dakika sürer.
- Yeşil onay = yayınlandı. Kaynağınızı panomc.com'da açın — yeni sürüm listelenmiş ve sunucu sahipleri güncellemeyi Panel → Eklentiler altında görüyor.
- Kırmızı X = başarısız olan adıma tıklayın. En yaygın iki hata, "Cannot find module" hatası (bir işte kurulum adımını kaçırdınız) ve ilk adımda bir kimlik doğrulama hatasıdır (eksik veya yanlış bir
TOKEN_GITHUB).
Elle de dağıtabilirsiniz
Jar tamamen kendi kendine yettiği için, onu bir GitHub yayınına ekleyebilir veya bir sunucu sahibine Panel → Eklentiler → Yükle üzerinden yüklemesi için verebilirsiniz. Marketplace eklentileri bir doğrulanmış rozeti ve otomatik güncelleme teslimi alır; elle verilen jar'lar almaz — dolayısıyla herkese açık bir eklenti için Marketplace kesinlikle tercih edilir.
İsteğe bağlı — Shoutbox'ı premium bir eklenti olarak satın
Onun için ücret almak mı istiyorsunuz? Yayın akışı aynıdır, artı iki küçük parça: jar'ı bir lisans anahtarıyla derleyin ve boilerplate'in çalışma zamanı lisans kontrolünü koruyun. Kısaca:
- panomc.com'un herkese açık doğrulama anahtarının jar'a gömülmesi için
./gradlew build -PlicenseServer=prodile derleyin (veya CI'daPANO_LICENSE_SERVERayarlayın). onStart()'ın en üstündelicenseClient.requireValidLicense()'ı koruyun — taze bir boilerplate onu zaten içerir ve ücretsiz derlemelerde bir no-op'tur.- Kaynağı ücretli fiyatlandırın ve Marketplace'in ana jar'ı tutup SHA-256'sını kaydetmesi için
useGitHubLink: falseayarlayın.
Tam anlatım — anahtarı gömme, çalışma zamanı kontrolü ve onu kendi hesabınıza karşı test etme — Premium Eklentiler ve Lisanslama sayfasında.
Hiçbir lisans sistemi mutlak değildir
Hiçbir DRM kodu %100 korumaz — son kullanıcıya ulaşan her kod, yeterince kararlı biri tarafından parçalarına ayrılabilir. Amaç, yetkisiz kullanımı büyük çoğunluk için zorlaştırmaktır, imkansız kılmak değil. Eklentinizi bu gerçeği aklınızda tutarak fiyatlandırın ve destekleyin.
Başardınız
Shoutbox, klonlanmış bir şablondan çalışan bir eklentiye dönüştü — bir veritabanı tablosu, bir JSON API, bir izin, bir ana sayfa widget'ı, bir panel sayfası, çeviriler — kendi Pano'nuza kuruldu ve Marketplace'te yayınlandı. Baştan sona tüm yolculuk budur.
Referans dokümanlarında daha derine nereden inebilirsiniz:
- Backend API Referansı — her backend genişletme noktası ada göre.
- Arayüz API Referansı — her kanca, görünüm yuvası ve SDK dışa aktarımı.
- Çeviriler ve Premium — son iki sayfanın tam sürümleri.
İyi eklentilemeler. 🚀
Sıradaki: Eklenti referansı: Başlangıç →