İçeriğe atla

GitHub depoların için CI
kendi işlettiğimiz sunucularda.

Her push ve pull request, testlerini iş geldiğinde zaten çalışan Enzonic donanımındaki bir sandbox'ta çalıştırır; canlı loglar ve GitHub'da bir kontrol ile. Kısa bir .enzonic/ci.yml yaz veya mevcut GitHub Actions iş akışlarını koru.

Ayda 3.000 dakika ücretsiz. Kart gerekmez.

$ git push origin maina41c9e2Çalıştırma #128, 2 dk 18 sn'de geçtilint22stest (node 20)1m 08stest (node 22)1m 21sdeploy26spostgres:17 · healthyTüm kontroller geçti4 iş · Enzonic CI
Aylık CI dakikası
aynı anda iş
iş başına
bağımlılık önbelleğinin

Bir pipeline'ın ihtiyaç duyduğu her şey, takip edilecek bir şey yok

Runner'lar, servisler, önbellekler ve loglar ürünün bir parçası. Sen yalnızca adımları yazarsın.

Zaten çalışan sandbox'lar

Her iş, Enzonic'in işlettiği donanımda kendi sandbox'ını alır; önceden başlatılır ve iş geldiğinde hazır hale getirilir.

Matris işleri ve needs

Node 20 ve 22'de aynı anda test et, ardından yalnızca her hücre geçtiğinde deploy et. İşler ihtiyaç duydukları işleri bekler.

Postgres ve Valkey servisleri

Testlerinin yanında tek satırla gerçek bir veritabanı başlat; ilk adımdan önce sağlık kontrolü yapılır.

Önbellekler

node_modules, pip wheel'leri veya derleme çıktısını, lockfile'ından oluşturulan bir anahtarla çalıştırmalar arasında sakla.

Artifact'ler

Kapsam raporlarını, derlemeleri ve ekran görüntülerini sakla, sonraki işlere aktar ve günlerce indirilebilir tut.

Canlı loglar

Her adımı çalışırken renkli olarak izle; adımlara göre gruplanmış, başarısız adımlar senin için açık.

GitHub'da kontroller

Her iş, pull request üzerinde açıklamalarla birlikte bir kontrol bildirir; dal koruması için hazırdır.

İş akışların, değişmeden

GitHub Actions iş akışlarının büyük bölümü olduğu gibi çalışır: matris, servisler, konteynerler ve yaygın kurulum action'ları.

Zamanlamalar

UTC cinsinden bir cron satırıyla gece testleri veya haftalık bağımlılık kontrolleri.

Enzica başarısız çalıştırmaları düzeltir

Başarısız bir işte tek tıklama: Enzica nedeni bulur, bir düzeltme dalı push eder ve pipeline'ı onda çalıştırır.

Bekleme ortadan kalktı, yani çalıştırma senin adımlarından ibaret

CI süresinin çoğu bir makine başlatmaya, klonlamaya ve bağımlılıkları indirmeye gider. Enzonic CI bu işi, işin gelmesinden önce yapar.

  1. 01

    Sandbox'lar açılmaz, hazır hale getirilir

    Sandbox havuzu önceden başlatılır. Bir iş geldiğinde hazır bir sandbox çözülür ve ona verilir; bu yüzden başlatılacak bir makine yoktur.

  2. 02

    Checkout'lar yerel bir aynadan yapılır

    Her runner deponun bir aynasını tutar ve her iş için GitHub'dan klonlamak yerine yalnızca değişenleri çeker.

  3. 03

    Önbellekler yerel diskten bağlanır

    Bağımlılık önbellekleri runner üzerinde kalır ve işe bağlanır; önce indirilip açılmazlar.

Her iş, süresinin nereye gittiğini gösterir: kuyruk, sandbox, checkout, bağımlılıklar, servisler, önbellek ve adımlar.

Deponda tek bir dosya

.enzonic/ci.yml dosyasını commit et ve push et. İşler needs ile belirlenen sırayla çalışır; matris hücreleri paralel çalışır ve her birinin kendi servisleri, önbelleği ve artifact'leri olur.

  • lint önce çalışır; geçtiğinde her iki test hücresi başlar
  • her test hücresi localhost üzerinde ve postgres:5432 olarak kendi Postgres'ini alır
  • npm indirmeleri package-lock.json anahtarlı önbellekten gelir
  • testler başarısız olsa bile kapsam korunur
  • deploy yalnızca main'de çalışır, loglarda hiç gösterilmeyen bir gizli diziyle
name: CI

on:
  push:
    branches: [main]
  pull_request:

jobs:
  lint:
    image: node:22
    steps:
      - run: npm ci
      - run: npm run lint

  test:
    needs: lint
    image: node:${{ matrix.node }}
    matrix:
      node: [20, 22]
    services:
      postgres:
        image: postgres:17-alpine
        env: { POSTGRES_PASSWORD: postgres }
    env:
      DATABASE_URL: postgres://postgres:postgres@postgres:5432/postgres
    cache:
      key: npm-${{ hashFiles('package-lock.json') }}
      paths: [~/.npm]
    steps:
      - run: npm ci
      - run: npm test
    artifacts:
      - name: coverage-node${{ matrix.node }}
        paths: [coverage/]
        when: always

  deploy:
    needs: test
    if: github.ref == 'refs/heads/main'
    steps:
      - run: npx enzonic deploy --prod
        env:
          ENZONIC_TOKEN: ${{ secrets.DEPLOY_TOKEN }}

Zaten GitHub Actions kullanıyor musun?

Depoyu bağla; aşağıda listelenenleri kullandıkları sürece .github/workflows dosyaların burada değişiklik yapılmadan çalışır. Diğer her şey açık bir mesajla reddedilir, sessizce atlanmaz.

Olduğu gibi çalışır

  • actions/checkoutÇalıştırmanın commit'i her zaman checkout edilir
  • actions/setup-node, setup-python, setup-go, setup-javaİş imajını seç; cache: paket yöneticisi önbelleğini ekler
  • oven-sh/setup-bun, pnpm/action-setupBun imajı, pnpm kurulu
  • actions/cache (and /restore, /save)İş önbelleği: önce geri yüklenir, en sonda kaydedilir
  • actions/upload-artifact, download-artifactArtifact'ler çalıştırmayla birlikte saklanır ve işler arasında aktarılır
  • strategy.matrix, needs, if, services, containerinclude / exclude ve fail-fast dahil

Desteklenmiyor

  • Diğer kullanımlar: action'lar, Docker action'ları, bileşik action'lar ve yeniden kullanılabilir iş akışları
  • Adım ve iş çıktıları (steps.*.outputs, needs.*.outputs)
  • Windows ve macOS runner'ları
  • pull_request_target
Tam uyumluluk listesi

Fiyatlandırma

CI, Deploy ve Databases'i kapsayan Enzonic Cloud planınla birlikte gelir. Ücretsiz planla başla; daha fazla dakikaya veya daha büyük runner'lara ihtiyacın olduğunda yükselt. Yalnızca Linux runner'lar.

Enzonic CI planları
Her Cloud planında CI dahildir
Free
$0
Starter
$5 / ay
Yıllık faturalandırmayla ayda $4,17
Önerilen
Pro
$10 / ay
Yıllık faturalandırmayla ayda $8,33
Growth
$19 / ay
Yıllık faturalandırmayla ayda $15,83
Business
$29 / ay
Yıllık faturalandırmayla ayda $24,17
Aylık CI dakikası3.0005.0006.00015.00060.000
Aynı anda iş2461020
En uzun iş360 dk360 dk360 dk480 dk720 dk
Bağımlılık önbelleği2 GB5 GB10 GB20 GB50 GB
Saklanan artifact'ler90 gün90 gün90 gün180 gün400 gün
Saklanan loglar14 gün30 gün30 gün60 gün90 gün

Geliştiriciler için hibeler

Açık kaynak mı geliştiriyorsun, okuyor, öğretiyor ya da kâr amacı gütmeyen bir kuruluş mu yürütüyorsun? Deploy ve Veritabanları için ücretsiz Pro veya Business süresi ile Cloud kredisi başvurusu yap.

  • Deploy ve Veritabanları için birlikte, bir yıla kadar Pro veya Business planı
  • Cloud kredisi bakiyene eklenir
  • Kişisel hesabın veya tüm ekibin için
  • Bir insan okur, genellikle birkaç gün içinde yanıtlanır
  • Açık kaynak
  • Öğrenciler
  • Kâr amacı gütmeyenler
  • Girişimler
  • Eğitmenler
  • Hackathon'lar

Sorular

CI dakikası neyi sayar?

Bir işin çalışmaya başladığı her dakika, işe göre yukarı yuvarlanır. Orta boyutta bir runner'da bir dakika iki kez, büyükte dört kez sayılır. Kuyrukta geçen süre sayılmaz; yeniden çalıştırmanın önceki denemeden koruduğu işler ücretsizdir.

İşler nerede çalışır?

Enzonic'in kendi işlettiği sunucularda; Enzonic Deploy ve Databases'in de arkasında çalıştığı sunucularda. Her iş kendi dosya sistemi ve ağı olan kendi gVisor sandbox'ını alır; servis konteynerleri de yanında çalışır. İşler, bir makinenin çekirdeğini başka bir müşterinin koduyla asla paylaşmaz.

İşler neden bu kadar hızlı başlıyor?

Her iş için makine başlatmak yerine, sandbox'lar önceden başlatılır ve bir iş geldiğinde hazır hale getirilir. Checkout, deponun yerel aynasından yapılır; bağımlılık önbellekleri indirilmek yerine yerel diskten bağlanır. Bir çalıştırmanın büyük kısmı senin kendi adımlarındır.

İşler hangi işletim sistemlerini kullanabilir?

Yalnızca Linux. İşler Linux konteynerlerinde çalışır; Windows ve macOS runner'ları kullanılamaz.

GitHub Actions iş akışlarımı tutabilir miyim?

Desteklenen alt kümeye bağlı kaldıklarında evet: run adımları, matrix, needs, services, container ve checkout, setup-node, setup-python, setup-go, setup-java, setup-bun, pnpm, cache ve artifact action'ları. Başka bir şey kullanan iş akışı açık bir mesajla atlanır, diğer iş akışları çalışmaya devam eder.

Gizli diziler ve fork'lardan gelen pull request'lerle ne olur?

Gizli diziler şifrelenir, yalnızca bunları kullanan işlere ulaşır ve loglarda gizlenir. Fork'lardan gelen pull request'ler gizli dizi, GitHub token'ı ve önbellek kaydetme olmadan çalışır; istersen hiç çalışmaz.

Sonuçlar GitHub'a nasıl ulaşır?

GitHub App'in Checks izni varsa, başarısız satırlar pull request üzerinde açıklamalarla birlikte kontrol olarak. Bu izin yoksa commit durumu olarak. Dal koruma kuralları, diğer kontroller gibi bunları zorunlu kılabilir.

Bir çalıştırma başarısız olursa ne olur?

İstersen bir e-posta alırsın ve başarısız işte "Enzica ile düzelt" düğmesi olur. Enzica logu ve yapılandırmanı okur, düzeltmeyi yeni bir enzica/ci-fix dalına push eder ve pipeline'ı orada çalıştırır. Dalların asla değiştirilmez; düzeltme doğruysa birleştirirsin.

Uygulamamı Enzonic'te barındırmam gerekir mi?

Hayır. CI her GitHub deposuyla çalışır. Bir işten barındırdığın yere, token için bir gizli dizi kullanarak veya Enzonic Deploy'a deploy edebilirsin.

Bir iş hangi imajları kullanabilir?

Herkese açık herhangi bir konteyner imajı: node, python, golang, eclipse-temurin, oven/bun veya kendi imajın. postgres:17 ve valkey/valkey:8 gibi servisler adımlardan önce başlar ve localhost üzerinden ve servis adlarıyla erişilebilir.

Bir sonraki push'un burada çalışabilir.

Sonucu da yayınla: Enzonic Deploy web uygulamalarını ücretsiz barındırır.