# De ce e lent GitHub Actions: nu mai reface totul la fiecare job

> GitHub Actions e lent pentru că fiecare job pornește pe un VM gol și își descarcă instrumentele, își reinstalează dependențele și își reface imaginile Docker înainte de primul test. Skipbox păstrează totul pe mașina ta între joburi, la un preț fix de $39 pe lună, cu minute nelimitate: la 20.000 de minute pe 4 vCPU înseamnă cu $183 pe lună mai puțin decât pe GitHub.

Cea mai mare parte dintr-un job GitHub Actions lent se petrece înainte să ruleze primul test. Setezi Node, descarci dependențele, construiești imaginea Docker: aceleași minute, la fiecare push, în timp ce cineva din echipă așteaptă o bifă verde. La facturarea la minut plătești și pentru minutele acestea.

Skipbox este un runner GitHub Actions care își păstrează mașina între joburi, așa că ce a instalat un job e încă pe disc pentru următorul. Schimbi o singură linie, `runs-on: skipbox`, iar jobul rulează pe mașina ta la un preț fix de $39 pe lună, cu minute nelimitate.

- Dependențele, layerele Docker și instrumentele rămân pe disc, așa că joburile sar peste descărcări și rebuilduri
- Cel puțin de 7× spațiul de cache de la GitHub, fără expirare după 7 zile și fără chei de cache de reglat
- 20.000 de minute pe lună pe 4 vCPU: $222 pe GitHub, $39 pe Skipbox

**GitHub Actions la preț fix, cu minute nelimitate** Skipbox rulează joburile tale GitHub Actions pe propria ta mașină dedicată: $39 pe lună, oricâte minute ai rula. Layerele Docker și cache-urile de dependențe rămân între joburi, așa că jobul următor pornește imediat.

Un runner de 4 vCPU, 20.000 de minute pe lună: GitHub $222 → Skipbox $39. Economisești $183 în fiecare lună.

E nevoie de o singură linie: `runs-on: skipbox`.

[Încearcă gratuit 7 zile](https://app.skipbox.dev/sign-in?ref=g-github-actions-slow-ro)

## Fiecare job pornește de pe un VM gol

Un runner găzduit de GitHub este o mașină virtuală nouă pentru fiecare job. Pe ea nu e nimic din ce a descărcat sau a construit jobul anterior, așa că fiecare job reface aceeași stare:

| Pas | Runner găzduit de GitHub | Skipbox |
|---|---|---|
| Setarea Node, Python, Java | Descarcă toolchainul | Îl găsește în cache-ul de instrumente de la jobul anterior |
| Instalarea dependențelor | Descarcă și dezarhivează arhiva de cache; la un cache miss, descarcă totul din registry | Citește cache-ul managerului de pachete de pe disc |
| Buildul imaginii Docker | Pornește fără layere și reface fiecare pas | Refolosește layerele de la buildul anterior |
| Rularea testelor | 2 CPU pe `ubuntu-latest` într-un repository privat | De la 4 vCPU în sus |

Primele trei rânduri nu produc nimic nou. Doar aduc mașina înapoi unde era ieri.

Cache-ul GitHub atenuează asta fără să o schimbe. Are 10 GB per repository, șterge intrările pe care niciun job nu le-a citit de 7 zile, iar o ramură nouă de feature nu poate citi cache-ul altei ramuri de feature. Chiar și la un cache hit, fiecare rulare descarcă și dezarhivează o arhivă.

## Cât te costă așteptarea

Să zicem că setup-ul ia 3 minute din fiecare job, iar echipa ta rulează 100 de joburi pe zi. Asta înseamnă 300 de minute pe zi de timp de runner folosite ca să aduci mașina înapoi, iar fiecare pull request își așteaptă partea. Review-urile încep mai târziu, merge-urile ajung mai târziu, iar inginerii trec la altceva cât așteaptă.

La facturarea la minut, minutele acestea apar pe factură. Un runner de 4 vCPU, după minutele lunare:

| Minute pe lună (4 vCPU) | GitHub | Skipbox S | Economisești în fiecare lună |
|---|---|---|---|
| 10.000 | $102 | $39 | **$63** |
| 20.000 | $222 | $39 | **$183** |
| 30.000 | $342 | $39 | **$303** |

Cifrele GitHub sunt factura după utilizarea inclusă în GitHub Team. Introdu propriile minute în [calculatorul de pe pagina principală](https://skipbox.dev/?ref=g-github-actions-slow-ro#cost); nu cere conectare.

Iar numărul de rulări doar crește:

- **Agenții AI de programare.** Fiecare push al unui agent pornește CI-ul. Așteptarea și factura cresc odată cu push-urile, nu cu numărul de oameni.
- **Mai multe teste.** O suită E2E sau o matrice repetă setup-ul în fiecare job pe care îl adaugă.
- **Bugete.** Plafonezi factura cu un buget GitHub, iar joburile nu mai pornesc la mijlocul lunii, ceea ce oprește merge-urile.

## Să îl accelerezi singur e un proiect întreg

Dacă rămâi pe runnerele găzduite de GitHub și vrei să le faci rapide, îți iei pe cap muncă de felul acesta:

- Chei de cache după hash-ul lockfile-urilor și reglarea `restore-keys` până nimeresc
- Adăugarea buildx și exportul cache-ului Docker cu `cache-to`, în aceiași 10 GB
- Împărțirea testelor în sharduri, unde fiecare shard repetă setup-ul și minutele facturate cresc
- Sau propriul runner self-hosted: pregătirea mașinii, actualizările sistemului de operare, curățenia între joburi și repararea lui când cade

Fiecare dintre ele ocolește o mașină care uită totul. Skipbox păstrează mașina, așa că nu ai nevoie de niciuna.

## Ce se schimbă pe Skipbox

**Setup-ul rămâne pe disc.** Joburile tale rulează pe mașina proprie a contului tău, iar ea rămâne între joburi. Imaginile Docker, layerele și cache-ul de build; cache-urile de pachete pentru npm, pip, Gradle și altele; instrumentele pe care le instalează `setup-node` și celelalte acțiuni setup. Cel puțin de 7× spațiul de cache de la GitHub, fără expirare după 7 zile și fără regula ramurilor.

**Mașini mai mari la preț fix.** Compilatoarele și runnerele de teste pornesc câte un worker pe nucleu, așa că mai multe nuclee scurtează pașii limitați de CPU.

| Plan | Mașină | Preț |
|---|---|---|
| S | 4 vCPU · 16 GB | $39 pe lună |
| M | 8 vCPU · 16 GB | $79 pe lună |
| L | 16 vCPU · 32 GB | $149 pe lună |

Minutele sunt nelimitate pe toate planurile. Joburile Skipbox nu folosesc minute GitHub, așa că un buget GitHub nu le oprește niciodată.

**Nicio mașină de îngrijit.** Skipbox pregătește mașina, actualizează sistemul de operare și instrumentele, face curățenie după fiecare job, rulează o verificare a stării și reface o mașină care nu trece verificarea.

## Mutarea înseamnă o singură linie

```yaml
jobs:
  build:
    runs-on: skipbox # was ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm ci && npm test
```

1. Conectează-te la Skipbox cu GitHub.
2. Instalează aplicația GitHub Skipbox și alege repository-urile.
3. Schimbă `runs-on` și fă push.

Ce instalează primul job e pe disc pentru al doilea.

## Securitate

- Mașina este doar a contului tău. Niciun job al altei companii nu rulează pe ea.
- După fiecare job, credențialele runnerului, procesele și containerele sunt șterse. Din 13 noiembrie 2026, checkoutul și rezultatul buildului (`target/` de la Cargo) rămân pe mașina ta pentru joburile următoare; „Curățare la fiecare job” îi dă fiecărui job o mașină nouă.
- Codul de la persoane fără acces de scriere (cum ar fi pull request-urile din forkuri) rulează pe o mașină nouă, de unică folosință.

Detaliile sunt în [cum sunt izolate joburile](https://docs.skipbox.dev/isolation).

## Încearcă pe cel mai lent job

Perioada de probă este gratuită timp de 7 zile sau 3.000 de minute de job, oricare se termină mai întâi, și nu cere card. Mută cel mai lent job pe `runs-on: skipbox`, rulează-l de două ori la rând și pune duratele pașilor lângă cele de pe GitHub.

## Întrebări frecvente

### De ce e GitHub Actions atât de lent?

Fiecare job de pe un runner găzduit de GitHub pornește pe un VM nou, fără nimic de la rularea anterioară, așa că își descarcă instrumentele, își reinstalează dependențele și își reface imaginile Docker înainte să pornească testele. Skipbox îți rulează joburile pe mașina proprie a contului tău și păstrează această stare pe discul ei, așa că jobul următor pornește de unde s-a oprit cel anterior.

### Am adăugat actions/cache. De ce e workflow-ul meu tot lent?

Chiar și la un cache hit, fiecare job descarcă și dezarhivează o arhivă, pentru că VM-ul e nou de fiecare dată. Iar cache-ul GitHub are 10 GB per repository, șterge intrările nefolosite de 7 zile și nu poate fi citit de pe o ramură soră. Pe Skipbox, cache-urile de pachete și layerele Docker sunt deja pe discul mașinii, fără chei de gestionat.

### Cum fac buildurile Docker mai rapide în GitHub Actions?

Dă-i buildului layerele de la buildul anterior. Pe runnerele găzduite de GitHub asta înseamnă să exporți cache-ul cu buildx și să îl imporți la fiecare rulare, în aceeași limită de 10 GB. Pe Skipbox, imaginile Docker și cache-ul de build rămân pe mașină între joburi, așa că docker build refolosește singur layerele.

### Trebuie să îmi rescriu workflow-urile ca să folosesc Skipbox?

Nu. Pentru joburile Linux, schimbă runs-on în skipbox. Mașina rulează Ubuntu 24.04 cu Docker, Node.js și Python, iar pașii și acțiunile tale rulează așa cum sunt.

### Pot să îl încerc gratuit pe propriul job lent?

Da. Perioada de probă durează 7 zile sau 3.000 de minute de job, oricare se termină mai întâi, fără card. Mută cel mai lent job pe runs-on: skipbox, rulează-l de două ori la rând și compară duratele pașilor cu cele de pe GitHub.

Actualizat pe 2026-11-11 · https://skipbox.dev/ro/guides/github-actions-slow
