Yayın: kod nasıl yayına girer
Devoplus One'da kod sizin makinenizden yayımlanmaz. Uygulamanın deposu Devoplus'ın dışa kapalı GitLab'ındadır; ona erişmeniz gerekmez. Kodu Devoplus API'si depoya yazar, platformun hattı kapılardan geçirir ve yayımlar.
Akış
- Uygulamanın kök dizininde
one publishçalıştırın ya da yapay zeka aracınıza söyleyin. Komut projenin tam görüntüsünü test ortamının deposuna yükler (dizin bir git deposuysa.gitignoregit'in kurallarıyla uygulanır) ve yayını başlatır. Bağımlılıklar, yerel durum klasörleri,.gitlab-ci.ymlve sır dosyaları (.env,.env.*,.dev.vars) yüklenmez. - Yükleme test dalına tek commit olarak yazılır; commit'te sizin adınız ve
--messageile verdiğiniz açıklama durur. - Hat kapılardan geçer ve test ortamına yayımlar. Hat durursa
one pipelinehangi işin neden durduğunu gösterir. - Ortam sırası test, uat ve canlıdır. Test'ten uat'a
one promoteile (uat ortamında oturum açarak) siz ya da yapay zeka aracınız taşır. Canlıya terfiyi uygulamanın sahibi Portal'daki Devoplus One Uygulamalarım ekranından, şirket yöneticisi Devoplus Console'dan yapar; yapay zeka aracı canlıda yayın isteyemez.
Hattı uygulama deposu tanımlamaz: deponuza .gitlab-ci.yml ya da başka bir hat dosyası yazılmaz, platformun hattı koşar. pnpm-lock.yaml depoya girer; postinstall gibi kurulum betikleri eklenmez.
Kapılar: yayını durduran şeyler
| Kapı | Durdurur | Ne yapmalısınız |
|---|---|---|
| Doğrulama | Geçersiz one.manifest.json, eksik README.md ya da AGENTS.md | Manifest kurallarına uyun |
| Yapay zeka rehberi | Manifest agent.tools beyan ediyor ama AGENT_GUIDE.md yok ya da eksik (uyarı değil, hata) | Rehberi yazın |
| Veri modeli | one.data.json değişmiş ama one data generate çalıştırılmamış (şema değişikliği dosyası, tipler ya da anlık görüntü güncel değil) | one data generate çalıştırıp üretilen dosyaları depoya ekleyin |
| Arayüz | Satır içi <script>, başka adresten betik, satır içi olay işleyicisi (onclick="..."), javascript: adresi | Betikleri uygulamayla birlikte sunun, olayları köprü ya da betik dosyasında bağlayın |
| Sır taraması | Depoya girmiş API anahtarı, belirteç, parola, özel anahtar, .env ya da .dev.vars | Sır yazmayın; gerçek olmayan bulgu .one-secrets-ignore dosyasına parmak izi ve gerekçeyle yazılır |
| Kod güvenliği | Yüksek önemli güvenlik bulgusu (ör. kullanıcı girdisinin eval ya da innerHTML'e gitmesi) | Kodu düzeltin; gerçek olmayan bulgu .one-sast-ignore dosyasına parmak izi ve gerekçeyle yazılır |
| Bağımlılık | Bilinen açığı olan paket | Sürümü yükseltin; günlük taramanın önerdiği yama için aşağıdaki "Bağımlılık açığı" |
| Süreklilik | Uygulanmış bir şema değişikliği dosyasının değişmesi, sıra dışı dosya, DROP TABLE, ALTER ... DROP/RENAME ya da WHERE'siz DELETE | Yeni numaralı bir şema değişikliği dosyası ekleyin; eski sütunu bir sonraki sürümde kaldırın |
| Sürüm | Yayındakinden düşük sürüm | app.version'ı artırın |
| Terfi (platform açtıysa) | Canlıya, uat'ta doğrulanmamış sürüm | Önce uat'a dağıtın |
Bir kapı durduğunda hattın çıktısını one pipeline ile okuyun, düzeltin ve yeniden yükleyin.
Hattan önce reddedilen yayın (bu denetim Devoplus'ın uygulamalar arası okuma güncellemesiyle gelir; o yayına alınana kadar yayın eskisi gibi hatta denetlenir ve başarısız yayında one pipeline incelenir): Devoplus her yayın ve terfide, hat başlamadan yayınlanacak commit'teki manifesti denetler (ONE-APP-E-164 her uygulamada; -162 ve -163 yalnız exports beyan eden uygulamada). Bu durumda hat açılmaz, one pipeline incelenecek bir iş göstermez; yanıt doğrudan 409 ve hata kodudur (manifest "Yayın kuralları"). Geri almada bu denetim yapılmaz:
| Kod | Neden | Ne yapmalısınız |
|---|---|---|
ONE-APP-E-163 | Aynı ad ve sürümdeki bir dışa açımın açıklaması, izni ya da şeması değişmiş | Değişikliği yeni bir version ile beyan edin; eskisini alan uygulamalar geçene kadar birlikte sunun |
ONE-APP-E-162 | Aynı portalda onaylı olarak okunan bir dışa açım sürümü kaldırılmış (yanıt alan uygulamayı adlandırır) | Sürümü geri ekleyin; alan uygulama yeni sürüme geçip onay alana kadar ikisini birlikte sunun |
ONE-APP-E-164 | Yayınlanacak commit'teki one.manifest.json yok, başka uygulamaya ait ya da exports / imports geçersiz | Manifesti düzeltip yeniden yükleyin |
SDK sürümü (uyarı, yayını durdurmaz): kurulu @devoplus/one-sdk asgari sürümden (bugün 0.2.0-next.158) eskiyse ya da sürümü okunamıyorsa (kilit dosyası yoksa) hat çıktısında ⚠ SDK: ile başlayan bir satır görünür. SDK'yı güncelleyin (pnpm add @devoplus/one-sdk@latest (kurulu SDK ön sürümse @next), ardından npx one upgrade (sürümü tam sabitler, one.manifest.json sdkVersion alanını ve AGENTS.md'nin platform kuralları bölümünü yazar)), testleri çalıştırın ve pnpm-lock.yaml, one.manifest.json, one.platform-state.json ve AGENTS.md'yi de yükleyin. Platform bu denetimi ileride zorlayıcı yapabilir; o zaman eski SDK yayını durdurur.
SDK beyanı: one.manifest.json'daki sdkVersion uygulamanın derlendiği SDK sürümüdür ve elle yazılmaz. Kurulu SDK sürümünden farklıysa yayın durur (ONE-RULE-007); SDK 0.3.0 ve sonrasında alan eksikse de durur (ONE-RULE-008). İkisinin çaresi npx one upgrade'dir. Ayrıntı: Manifest.
Güncelleme döngüsü: var olan bir uygulamaya yeni sürüm çıkarılırken SDK güncellenir (pnpm add @devoplus/one-sdk@latest (kurulu SDK ön sürümse @next), ardından npx one upgrade), yapay zeka aracınız Devoplus One sunucusundan işlenmiş durumdan bu yana gelen kuralları ve sürüm notlarını okur, npx one doctor bulgularını düzeltir ve npx one upgrade --complete ... ile işlenmiş durumu ilerletir. Sunucunun listesi hattınkinden eski olabilir; esas olan hattın çıktısıdır. Komutun ayrıntısı SDK başvurusundadır.
Yerel denetim: npx one doctor, hattın kataloğa bağlı kapılarını (manifest, veri modeli, arayüz, SDK beyanı) kurulu SDK'nın katalog kopyasıyla yerelde çalıştırır ve bulguları kural kimliği, düzeyi, konumu ve düzeltme satırıyla yazar; dosyaya dokunmaz, zorunlu bulguda çıkış kodu 1'dir. Belge ve ajan rehberi kapıları, giriş dosyası denetimi, SDK asgari sürüm denetimi, sır, bağımlılık, kod güvenliği ve süreklilik taramaları yalnız hatta çalışır. Katalog kopyası hattınkinden eski olabileceği için esas olan hattın çıktısıdır.
Silme (uyarı, yayını durdurmaz): kodda ya da migration'da DELETE FROM (kalıcı silme) ya da onay sorulmadan gönderilen DELETE isteği hat çıktısında ⚠ arayüz: ile başlayan bir satır olarak görünür. Kural yine zorunludur: yumuşak silin (deleted_at), isteği one.remove(...) ile gönderin; gerçekten gerekiyorsa ya da uyarı yanlışsa gerekçeli yorum yazın (Silme ve pasife alma). Tarama her biçimi yakalamaz, bu yüzden yayını durdurmaz. Veri modelinde (one.data.json) gerekçesiz "softDelete": false ise uyarı değildir: veri modeli kapısı yayını durdurur.
Tek komutla yayın, önizleme, terfi ve geri alma
GitLab'a girmeniz gerekmez: yayını siz istersiniz, Devoplus isteği kaydeder ve hattı kendisi başlatır. Hattın kapıları (yukarıdaki tablo) bu yolda da aynen çalışır; hiçbiri atlanmaz. Yapay zeka aracınız aynı işleri Devoplus One bağlantısı üzerinden yapabilir.
| İş | Komut |
|---|---|
| Kodu yükleyip test ortamına yayınlama (önizleme) | one publish [--portal <anahtar>] [--message <açıklama>] |
| Depodaki kodu yeniden yayınlama (yüklemeden) | one publish --no-upload |
| Hat ve iş günlüğü | one pipeline [--deployment <kimlik>] [--job <iş>] |
| Test'ten uat'a terfi | one promote [--portal <anahtar>] (uat oturumuyla) |
| Önceki sürüme geri alma (test, uat) | one rollback [--portal <anahtar>] [--to <x.y.z>] --yes |
| Yayın isteklerinin durumu | one deployments [--portal <anahtar>] |
| Bağımlılık taraması ve önerilen yama | one deps patch [--ref test|uat|main] [--apply] |
- Komutlar
one loginoturumuyla çalışır; uygulamanın kısa adıone.manifest.json'dan okunur (--appile de verilebilir).--portalverilmezse istek portal anahtarı taşımaz ve kurulumu sunucu seçer. - Kodu yalnız uygulamanın sahibi (ya da platform yöneticisi) yükleyebilir. Yayın isteğini sahip ya da o portalın şirket yöneticisi gönderebilir. Vekalet ya da Yerine Görüntüle oturumunda yükleme ve istek gönderilmez.
- Önizleme test ortamıdır.
one publishher zaman test ortamına yayınlar. Hat bittiğinde uygulamahttps://<kısa-ad>-<portal>.test-one.devoplus.devadresinde çalışır ve test Portal'ından açılır; bu adres paylaşılabilir önizlemedir. - Terfi yalnız bir önceki ortamda doğrulanmış ve başarıyla yayınlanmış kodu taşır (terfi kapısı).
- Geri alma uygulamayı önceki sürüme (ya da
--toile verilen sürüme) döndürür. Kod sürüm etiketinden alınır; etiketi Devoplus her terfide kendisi yazar (v<sürüm>, sürümone.manifest.jsoniçindekiapp.version). Hiç terfi etmemiş sürüme dönülemez;--toverilmezse dalın ucundaki sürümden küçük en büyük etiket seçilir. Geri alınan kod da bütün kapılardan yeniden geçer. ⛔ Veritabanı da o sürümün yapısına dönmek zorundaysa dönülen noktadan sonra kaydedilen veriler kaybolur ve bu geri alınamaz; komut bu yüzden--yesolmadan çalışmaz. - Yanıt "Yayın hattı bu ortamda yapılandırılmamış" derse o ortamda tek komutla yayın henüz açık değildir.
- İsteğin sonucunu
one deployments, hattın işlerinione pipelineile izleyin; hat durursa günlüğü okuyun, düzeltin ve yeniden yükleyin.
Bağımlılık açığı: günlük tarama ve yama
Devoplus uygulamanızın bağımlılıklarını her gün bilinen güvenlik açıklarına karşı tarar (test dalı; uat ve main varsa onlar da). Açık bulunursa ve düzeltilmiş sürüm varsa platform bir yama önerir (package.json ve pnpm-lock.yaml). Yama kendiliğinden uygulanmaz ve depoda birleştirme isteği açılmaz: kodun doğru kaynağı sizin yerel kopyanızdır.
one deps patchbulguları ve yamayı gösterir, hiçbir dosya yazmaz.--refverilmezse test; yama yalnız test için önerilir, uat ve main yalnız taranır.one deps patch --applyyamayı uygulamanın dizinine uygular: yalnız bu iki dosya değişir, commit atılmaz. Bu dosyalarda kaydedilmemiş değişiklik varsa, git yoksa ya da yama yerel koda uymuyorsa hiçbir dosyaya dokunulmaz.- Sonra bağımlılıkları kurun,
pnpm testveone buildçalıştırın veone publishile yükleyin. Yapay zeka aracınız aynı işi Devoplus One bağlantısı üzerinden yapabilir. - Bulguları yalnız uygulamanın sahibi ya da platform yöneticisi görebilir.
Yayından sonra
- Uygulamanın görünmesi için kurulum ve menü izni gerekir (başlangıç, 5. adım).
- Olay ve hata kayıtları platform günlüğündedir (
logEvent,logError); kişisel veri ya da sır yazmayın. - Kullanım ve hatalar kullanım ve hata panosunda görünür; bir sorun bildirildiğinde önce oraya bakın.
- Yedekleme platform ekibinin işidir; sizden bir adım beklenmez.