Zum Inhalt springen

CI für deine GitHub-Repositories
auf Servern, die wir selbst betreiben.

Jeder Push und Pull Request führt deine Tests in einer Sandbox auf Enzonic-Hardware aus, die bereits läuft, wenn der Job eintrifft, mit Live-Logs und einem Check auf GitHub. Schreib eine kurze .enzonic/ci.yml, oder behalte die GitHub-Actions-Workflows, die du schon hast.

3.000 Minuten pro Monat gratis. Keine Karte nötig.

Eine Konfiguration ansehen
$ git push origin maina41c9e2Lauf #128 bestanden in 2m 18slint22stest (node 20)1m 08stest (node 22)1m 21sdeploy26spostgres:17 · healthyAlle Checks bestanden4 Jobs · Enzonic CI
CI-Minuten pro Monat
Jobs gleichzeitig
pro Job
des Abhängigkeits-Caches

Alles, was eine Pipeline braucht, nichts, worum du dich kümmern musst

Runner, Services, Caches und Logs gehören zum Produkt. Du schreibst die Schritte.

Sandboxes, die schon laufen

Jeder Job bekommt seine eigene Sandbox auf Hardware, die Enzonic betreibt. Sie wird vorab gestartet und beim Eintreffen des Jobs aufgetaut.

Matrix-Jobs und needs

Teste auf Node 20 und 22 gleichzeitig und deploye erst, wenn jede Zelle bestanden hat. Jobs warten auf die Jobs, die sie brauchen.

Postgres- und Valkey-Services

Starte mit einer einzigen Zeile eine echte Datenbank neben deinen Tests, die vor dem ersten Schritt auf Bereitschaft geprüft wird.

Caches

Behalte node_modules, pip-Wheels oder Build-Ausgaben zwischen den Läufen mit einem Key, der aus deiner Lockfile gebaut wird.

Artefakte

Behalte Coverage-Berichte, Builds und Screenshots, gib sie an spätere Jobs weiter und lade sie tagelang herunter.

Live-Logs

Verfolge jeden Schritt während des Laufs, mit Farben, nach Schritten gruppiert, fehlgeschlagene Schritte sind für dich aufgeklappt.

Checks auf GitHub

Jeder Job meldet einen Check mit Annotationen am Pull Request, bereit für den Branch-Schutz.

Deine Workflows, unverändert

Ein großer Teil der GitHub-Actions-Workflows läuft unverändert: Matrix, Services, Container und die gängigen Setup-Actions.

Zeitpläne

Nächtliche Tests oder wöchentliche Abhängigkeitsprüfungen mit einer Cron-Zeile, in UTC.

Enzica behebt fehlgeschlagene Läufe

Ein Klick auf einen fehlgeschlagenen Job: Enzica findet die Ursache, pusht einen Korrektur-Branch und lässt die Pipeline darauf laufen.

Das Warten entfällt, der Lauf besteht aus deinen Schritten

Der größte Teil der CI-Zeit geht fürs Starten einer Maschine, fürs Klonen und fürs Herunterladen von Abhängigkeiten drauf. Enzonic CI erledigt diese Arbeit, bevor dein Job eintrifft.

  1. 01

    Sandboxes werden aufgetaut, nicht gestartet

    Ein Pool aus Sandboxes wird vorab gestartet. Kommt ein Job, wird eine davon aufgetaut und ihm übergeben, es muss also keine Maschine erst hochfahren.

  2. 02

    Checkouts aus einem lokalen Spiegel

    Jeder Runner hält einen Spiegel deines Repositorys und holt nur, was sich geändert hat, statt für jeden Job von GitHub zu klonen.

  3. 03

    Caches von der lokalen Festplatte verknüpft

    Abhängigkeits-Caches bleiben auf dem Runner und werden in den Job eingebunden, statt zuerst heruntergeladen und entpackt zu werden.

Jeder Job zeigt, wo seine Zeit geblieben ist: Warteschlange, Sandbox, Checkout, Abhängigkeiten, Services, Cache und Schritte.

Eine Datei in deinem Repository

Committe .enzonic/ci.yml und pushe sie. Die Jobs laufen in der Reihenfolge, die ihre needs vorgeben, Matrix-Zellen parallel, jeweils mit eigenen Services, Cache und Artefakten.

  • Lint läuft zuerst, beide Testzellen starten, sobald er bestanden ist
  • jede Testzelle bekommt ein eigenes Postgres auf localhost und als postgres:5432
  • npm-Downloads kommen aus dem Cache, dessen Key auf package-lock.json basiert
  • die Coverage wird auch dann behalten, wenn die Tests fehlschlagen
  • das Deploy läuft nur auf main, mit einem Secret, das nie in den Logs erscheint
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 }}

Nutzt du schon GitHub Actions?

Verbinde das Repository, dann laufen deine .github/workflows hier ohne Änderungen, solange sie nur das verwenden, was unten aufgelistet ist. Alles andere wird mit einer klaren Meldung abgelehnt, nie stillschweigend übersprungen.

Läuft unverändert

  • actions/checkoutDer Commit des Laufs wird immer ausgecheckt
  • actions/setup-node, setup-python, setup-go, setup-javaWähle das Job-Image; cache: fügt den Cache des Paketmanagers hinzu
  • oven-sh/setup-bun, pnpm/action-setupBun-Image, pnpm installiert
  • actions/cache (and /restore, /save)Ein Job-Cache, zuerst wiederhergestellt und am Ende gespeichert
  • actions/upload-artifact, download-artifactArtefakte werden mit dem Lauf aufbewahrt und zwischen Jobs weitergereicht
  • strategy.matrix, needs, if, services, containerMit include / exclude und fail-fast

Nicht unterstützt

  • Weitere Verwendung: Actions, Docker-Actions, zusammengesetzte Actions und wiederverwendbare Workflows
  • Ausgaben von Schritten und Jobs (steps.*.outputs, needs.*.outputs)
  • Windows- und macOS-Runner
  • pull_request_target
Die vollständige Kompatibilitätsliste

Preise

CI ist in deinem Enzonic-Cloud-Tarif enthalten, demselben Tarif, der auch Deploy und Databases abdeckt. Starte mit dem kostenlosen Tarif und wechsle auf einen größeren, wenn du mehr Minuten oder größere Runner brauchst. Nur Linux-Runner.

Enzonic-CI-Tarife
Jeder Cloud-Tarif enthält CI
Free
0 $
Starter
5 $ / Monat
4,17 $ pro Monat, jährlich abgerechnet
Empfohlen
Pro
10 $ / Monat
8,33 $ pro Monat, jährlich abgerechnet
Growth
19 $ / Monat
15,83 $ pro Monat, jährlich abgerechnet
Business
29 $ / Monat
24,17 $ pro Monat, jährlich abgerechnet
CI-Minuten pro Monat3.0005.0006.00015.00060.000
Jobs gleichzeitig2461020
Längster Job360 min360 min360 min480 min720 min
Dependency-Cache2 GB5 GB10 GB20 GB50 GB
Artefakte aufbewahrt90 Tage90 Tage90 Tage180 Tage400 Tage
Logs aufbewahrt14 Tage30 Tage30 Tage60 Tage90 Tage

Förderungen für Macher

Du entwickelst Open Source, studierst, lehrst oder leitest eine gemeinnützige Organisation? Beantrage kostenlose Pro- oder Business-Laufzeit und Cloud-Guthaben für Deploy und Databases.

  • Pro- oder Business-Tarif für bis zu ein Jahr, für Deploy und Databases zusammen
  • Cloud-Guthaben, das deinem Guthaben gutgeschrieben wird
  • Für dein persönliches Konto oder dein ganzes Team
  • Von einem Menschen gelesen, meist innerhalb weniger Tage beantwortet
  • Open Source
  • Studierende
  • Gemeinnützige
  • Startups
  • Lehrende
  • Hackathons

Fragen

Was zählt als CI-Minute?

Jede begonnene Laufminute eines Jobs wird pro Job aufgerundet. Eine Minute auf einem mittleren Runner zählt doppelt, auf einem großen viermal. Wartezeit in der Warteschlange zählt nicht, und Jobs, die ein erneuter Lauf aus dem vorherigen Versuch übernimmt, kosten nichts.

Wo laufen die Jobs?

Auf Servern, die Enzonic selbst betreibt, denselben, auf denen auch Enzonic Deploy und Databases laufen. Jeder Job bekommt seine eigene gVisor-Sandbox mit eigenem Dateisystem und eigenem Netzwerk, seine Service-Container laufen direkt daneben. Jobs teilen sich den Kernel einer Maschine nie mit dem Code eines anderen Kunden.

Warum starten Jobs so schnell?

Sandboxes werden vorab gestartet und beim Eintreffen eines Jobs aufgetaut, statt für jeden Job eine Maschine hochzufahren. Der Checkout kommt aus einem lokalen Spiegel deines Repositorys, Abhängigkeits-Caches werden von der lokalen Festplatte eingebunden statt heruntergeladen. Den größten Teil eines Laufs machen deine eigenen Schritte aus.

Welche Betriebssysteme können Jobs verwenden?

Nur Linux. Jobs laufen in Linux-Containern. Windows- und macOS-Runner sind nicht verfügbar.

Kann ich meine GitHub-Actions-Workflows behalten?

Ja, solange sie sich an die unterstützte Auswahl halten: run-Schritte, matrix, needs, services, container sowie die Actions checkout, setup-node, setup-python, setup-go, setup-java, setup-bun, pnpm, cache und artifact. Ein Workflow, der etwas anderes verwendet, wird mit einer klaren Meldung übersprungen, die anderen Workflows laufen trotzdem.

Was passiert mit Secrets und Pull Requests aus Forks?

Secrets werden verschlüsselt, erreichen nur die Jobs, die sie verwenden, und werden in den Logs maskiert. Pull Requests aus Forks laufen ohne Secrets, ohne GitHub-Token und ohne Caches zu speichern, oder gar nicht, wenn du das lieber möchtest.

Wie kommen die Ergebnisse zu GitHub?

Als Checks, mit den fehlerhaften Zeilen als Annotation am Pull Request, wenn die GitHub-App die Berechtigung Checks hat. Ohne sie als Commit-Status. Branch-Schutzregeln können sie wie jeden anderen Check verlangen.

Was passiert, wenn ein Lauf fehlschlägt?

Auf Wunsch bekommst du eine E-Mail und auf dem fehlgeschlagenen Job einen Button Mit Enzica beheben. Enzica liest das Log und deine Konfiguration, pusht eine Korrektur in einen neuen Branch enzica/ci-fix und lässt die Pipeline darauf laufen. Deine Branches werden nie verändert; du mergst die Korrektur, wenn sie stimmt.

Muss ich meine App bei Enzonic hosten?

Nein. CI funktioniert mit jedem GitHub-Repository. Deploye aus einem Job zu dem Ort, an dem du hostest, mit einem Secret für das Token, oder zu Enzonic Deploy.

Welche Images kann ein Job verwenden?

Jedes öffentliche Container-Image: node, python, golang, eclipse-temurin, oven/bun oder ein eigenes. Services wie postgres:17 und valkey/valkey:8 starten vor den Schritten und sind über localhost und ihren Servicenamen erreichbar.

Dein nächster Push kann hier laufen.

Liefere auch das Ergebnis aus: Enzonic Deploy hostet Web-Apps kostenlos.