Przejdź do treści

CI dla Twoich repozytoriów GitHub
na serwerach, którymi zarządzamy sami.

Każdy push i pull request uruchamia Twoje testy w sandboxie na sprzęcie Enzonic, który już działa, gdy zadanie przychodzi, z logami na żywo i checkiem na GitHubie. Napisz krótki .enzonic/ci.yml albo zachowaj workflowy GitHub Actions, które już masz.

3000 min miesięcznie za darmo. Bez karty.

$ git push origin maina41c9e2Uruchomienie #128 zaliczone w 2m 18slint22stest (node 20)1m 08stest (node 22)1m 21sdeploy26spostgres:17 · healthyWszystkie checki zostały zaliczone4 zadania · Enzonic CI
Minuty CI miesięcznie
zadania naraz
na zadanie
pamięci podręcznej zależności

Wszystko, czego potrzebuje pipeline, bez pilnowania

Runnery, usługi, pamięć podręczna i logi są częścią produktu. Ty piszesz kroki.

Sandboxy, które już działają

Każde zadanie dostaje własny sandbox na sprzęcie, którym zarządza Enzonic, uruchomiony z wyprzedzeniem i odmrożony, gdy zadanie przychodzi.

Zadania matrix i needs

Testuj na Node 20 i 22 jednocześnie, a deploy uruchamiaj dopiero, gdy każda komórka przejdzie. Zadania czekają na zadania, których potrzebują.

Usługi Postgres i Valkey

Uruchom prawdziwą bazę danych obok testów jedną linijką, z kontrolą stanu przed pierwszym krokiem.

Pamięć podręczna

Zachowuj node_modules, paczki wheel z pip albo wyniki buildu między uruchomieniami, używając klucza zbudowanego z lockfile.

Artefakty

Zachowuj raporty pokrycia, buildy i zrzuty ekranu, przekazuj je dalszym zadaniom i pobieraj przez kilka dni.

Logi na żywo

Obserwuj każdy krok na żywo, w kolorach, pogrupowany według kroków, z rozwiniętymi krokami z błędami.

Checki na GitHubie

Każde zadanie zgłasza check z adnotacjami w pull requeście, gotowy do ochrony gałęzi.

Twoje workflowy bez zmian

Duża część GitHub Actions działa bez zmian: matrix, usługi, kontenery i popularne akcje konfiguracji.

Harmonogramy

Nocne testy albo cotygodniowe sprawdzanie zależności z linią cron, w UTC.

Enzica naprawia nieudane uruchomienia

Jedno kliknięcie na nieudane zadanie: Enzica znajduje przyczynę, wypycha gałąź z poprawką i uruchamia na niej pipeline.

Oczekiwanie zniknęło, więc uruchomienie to Twoje kroki

Większość czasu CI idzie na uruchamianie maszyny, klonowanie i pobieranie zależności. Enzonic CI wykonuje tę pracę, zanim przyjdzie Twoje zadanie.

  1. 01

    Sandboxy są odmrażane, nie uruchamiane

    Pula sandboxów jest uruchamiana z wyprzedzeniem. Gdy przychodzi zadanie, jeden z nich zostaje odmrożony i przydzielony, więc nie trzeba uruchamiać maszyny.

  2. 02

    Checkouty z lokalnego mirrora

    Każdy runner trzyma mirror Twojego repozytorium i pobiera tylko to, co się zmieniło, zamiast klonować z GitHuba przy każdym zadaniu.

  3. 03

    Pamięci podręczne podłączone z dysku lokalnego

    Pamięci podręczne zależności zostają na runnerze i są podłączane do zadania, zamiast najpierw być pobierane i rozpakowywane.

Każde zadanie pokazuje, gdzie poszedł jego czas: kolejka, sandbox, checkout, zależności, usługi, pamięć podręczna i kroki.

Jeden plik w Twoim repozytorium

Zrób commit pliku .enzonic/ci.yml i wypchnij zmiany. Zadania działają w kolejności wyznaczonej przez needs, komórki matrix równolegle, każda z własnymi usługami, pamięcią podręczną i artefaktami.

  • lint uruchamia się pierwszy; obie komórki testowe startują, gdy przejdzie
  • każda komórka testowa ma własny Postgres na localhost i jako postgres:5432
  • pobieranie npm pochodzi z pamięci podręcznej z kluczem package-lock.json
  • pokrycie jest zachowywane, nawet gdy testy się nie powiodą
  • deploy działa tylko na main, z sekretem, którego logi nigdy nie pokazują
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 }}

Już korzystasz z GitHub Actions?

Połącz repozytorium, a Twoje .github/workflows będą tu działać bez zmian, o ile korzystają z tego, co wymieniono poniżej. Wszystko inne zostanie odrzucone z jasnym komunikatem, nigdy po cichu pominięte.

Działa tak, jak jest

  • actions/checkoutCommit uruchomienia jest zawsze pobierany (checkout)
  • actions/setup-node, setup-python, setup-go, setup-javaWybierz obraz zadania; cache: dodaje pamięć podręczną menedżera pakietów
  • oven-sh/setup-bun, pnpm/action-setupObraz Bun, zainstalowany pnpm
  • actions/cache (and /restore, /save)Pamięć podręczna zadania, przywracana na początku i zapisywana na końcu
  • actions/upload-artifact, download-artifactArtefakty przechowywane z uruchomieniem i przekazywane między zadaniami
  • strategy.matrix, needs, if, services, containerŁącznie z include / exclude i fail-fast

Nieobsługiwane

  • Inne zastosowania: akcje, akcje Docker, akcje złożone i workflowy wielokrotnego użytku
  • Wyjścia kroków i zadań (steps.*.outputs, needs.*.outputs)
  • Runnery Windows i macOS
  • pull_request_target
Pełna lista zgodności

Cennik

CI jest w Twoim planie Enzonic Cloud, tym samym, który obejmuje Deploy i Databases. Zacznij od planu Free; przejdź wyżej, gdy potrzebujesz więcej minut albo większych runnerów. Tylko runnery Linux.

Plany Enzonic CI
Każdy plan Cloud zawiera CI
Free
0 USD
Starter
5 USD / mies.
4,17 USD miesięcznie, rozliczane rocznie
Polecany
Pro
10 USD / mies.
8,33 USD miesięcznie, rozliczane rocznie
Growth
19 USD / mies.
15,83 USD miesięcznie, rozliczane rocznie
Business
29 USD / mies.
24,17 USD miesięcznie, rozliczane rocznie
Minuty CI miesięcznie30005000600015 00060 000
Zadania naraz2461020
Najdłuższe zadanie360 min360 min360 min480 min720 min
Pamięć podręczna zależności2 GB5 GB10 GB20 GB50 GB
Przechowywane artefakty90 dni90 dni90 dni180 dni400 dni
Przechowywane logi14 dni30 dni30 dni60 dni90 dni

Dotacje dla twórców

Tworzysz open source, studiujesz, uczysz albo prowadzisz organizację non-profit? Złóż wniosek o darmowy czas Pro lub Business i środki Cloud na Deploy i Bazy danych.

  • Plan Pro lub Business na maksymalnie rok, dla Deploy i Baz danych razem
  • Środki Cloud dodane do Twojego salda
  • Dla Twojego konta osobistego lub całego zespołu
  • Czyta człowiek, zwykle odpowiedź w ciągu kilku dni
  • Open source
  • Studenci
  • Organizacje non-profit
  • Startupy
  • Nauczyciele
  • Hackathony

Pytania

Co liczy się jako minuta CI?

Każda rozpoczęta minuta działania zadania, zaokrąglana osobno dla każdego zadania. Minuta na średnim runnerze liczy się dwa razy, a na dużym cztery razy. Czas w kolejce się nie liczy, a zadania, które ponowne uruchomienie przejmuje z poprzedniej próby, nic nie kosztują.

Gdzie działają zadania?

Na serwerach, którymi Enzonic zarządza sam, tych samych, na których działają Enzonic Deploy i Databases. Każde zadanie dostaje własny sandbox gVisor z własnym systemem plików i siecią, a jego kontenery usług działają obok. Zadania nigdy nie dzielą jądra maszyny z kodem innego klienta.

Dlaczego zadania startują tak szybko?

Sandboxy są uruchamiane z wyprzedzeniem i odmrażane, gdy przychodzi zadanie, zamiast uruchamiać maszynę dla każdego zadania. Checkout pochodzi z lokalnego mirrora Twojego repozytorium, a pamięci podręczne zależności są podłączane z dysku lokalnego zamiast pobierane. Większość uruchomienia to Twoje kroki.

Jakich systemów operacyjnych mogą używać zadania?

Tylko Linux. Zadania działają w kontenerach Linux; runnery Windows i macOS są niedostępne.

Czy mogę zachować moje workflowy GitHub Actions?

Tak, o ile trzymają się obsługiwanego podzbioru: kroki run, matrix, needs, services, container oraz akcje checkout, setup-node, setup-python, setup-go, setup-java, setup-bun, pnpm, cache i artifact. Workflow używający czegokolwiek innego zostaje pominięty z jasnym komunikatem, a pozostałe workflowy nadal działają.

Co się dzieje z sekretami i pull requestami z forków?

Sekrety są szyfrowane, trafiają tylko do zadań, które ich używają, i są maskowane w logach. Pull requesty z forków działają bez sekretów, bez tokenu GitHub i bez zapisywania pamięci podręcznej, albo wcale, jeśli wolisz.

Jak wyniki trafiają na GitHub?

Jako checki, z zaznaczonymi błędnymi liniami w pull requeście, gdy GitHub App ma uprawnienie Checks. Bez niego jako statusy commitów. Reguły ochrony gałęzi mogą wymagać ich tak jak każdego innego checka.

Co się stanie, gdy uruchomienie się nie powiedzie?

Jeśli chcesz, dostaniesz e-mail, a przy nieudanym zadaniu przycisk Napraw z Enzicą. Enzica czyta log i Twoją konfigurację, wypycha poprawkę do nowej gałęzi enzica/ci-fix i uruchamia na niej pipeline. Twoje gałęzie nigdy nie są zmieniane; scalasz poprawkę, jeśli jest dobra.

Czy muszę hostować moją aplikację na Enzonic?

Nie. CI działa z każdym repozytorium GitHub. Możesz wdrażać z zadania tam, gdzie hostujesz, z sekretem na token, albo na Enzonic Deploy.

Jakich obrazów może używać zadanie?

Dowolny publiczny obraz kontenera: node, python, golang, eclipse-temurin, oven/bun albo własny. Usługi, takie jak postgres:17 i valkey/valkey:8, startują przed krokami i są dostępne pod localhost oraz pod swoją nazwą usługi.

Twój następny push może tu zadziałać.

Wyślij też wynik: Enzonic Deploy hostuje aplikacje webowe za darmo.