# Met cloud-CI/CD gooi je geld door het raam

> Waarom we cloud-CI voor iOS- en Flutter-builds vervingen door self-hosted GitHub Actions-runners op Mac mini's, en hoe impaktfull_cli zo'n Mac klaarmaakt.

Door Koen Van Looveren, impaktfull · Gepubliceerd 2025-06-10

Bron: https://www.impaktfull.com/nl/blog/cloud-ci-cd-lets-you-throw-money-out-the-window

Bouw je iOS-apps en betaal je voor een cloud-CI-dienst, dan heb je je vast al eens afgevraagd: waarom geef ik hier zoveel aan uit, gewoon om builds te draaien? Bij impaktfull vroegen we ons hetzelfde af. En toen deden we er iets aan.

## Het probleem met cloud-CI

Cloud-CI/CD-platformen zijn handig, maar ze brengen ook dit mee:

- **Hoge kosten**, zeker voor macOS-runners: bij GitHub kost een macOS-minuut [zo'n tien keer een Linux-minuut](https://docs.github.com/en/billing/reference/actions-minute-multipliers).
- **Wachtrijen**: wachten op een vrije runner voor je build zelfs maar start.
- **Weinig vrijheid** in de machine en haar tools.
- **Geen blijvende omgeving**: elke build installeert en cachet alles opnieuw.

Dat doet het meeste pijn als je snel itereert en meerdere builds per dag pusht.

## Mac mini's met self-hosted GitHub-runners

We schakelden over op self-hosted GitHub Actions-runners op Mac mini's. Het resultaat:

- Zoveel builds per dag als we willen, zonder per minuut te betalen.
- Geen wachtrij.
- Een vaste, eenmalige kost voor de hardware.
- Volledige controle over de tools en hun versies.

In ruil onderhoud je de machines zelf: stroom, updates van macOS en Xcode, en af en toe een herstart. En gebruik self-hosted runners alleen voor private repositories: [GitHub raadt ze af voor publieke](https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#self-hosted-runner-security), omdat iedereen dan via een pull request code op je machine kan laten draaien.

Het enige struikelblok: elke machine met de hand opzetten was traag, foutgevoelig en saai.

## Daarom bouwden we impaktfull_cli

Om die opzet te automatiseren en elke machine gelijk te maken, bouwden we [impaktfull_cli](https://github.com/impaktfull/dart_impaktfull_cli): een CLI die een lege Mac klaarmaakt voor CI. Installeer hem:

```bash
curl -fsSL https://cli.impaktfull.com/install.sh | bash
```

Voer daarna één commando uit:

```bash
impaktfull_cli ci_cd setup
```

Dat commando:

- installeert en configureert Homebrew, CocoaPods, FVM en Flutter;
- installeert Java, lcov, Rosetta en sentry-cli, en wijst Flutter de juiste JDK aan;
- zet een werkende Zsh-omgeving op met autosuggesties;
- helpt je Xcode te selecteren;
- maakt een SSH-sleutel aan en zegt waar je hem op GitHub toevoegt;
- installeert de GitHub Actions-runner en registreert de machine als self-hosted runner.
![De uitvoer van impaktfull_cli ci_cd setup in een terminal, elke stap als afgerond gemarkeerd](https://www.impaktfull.com/images/blogs/cloud-ci-cd-lets-you-throw-money-out-the-window/ci-cd-setup.webp)

*impaktfull_cli ci_cd setup op een nieuwe Mac mini*

## Transparant, stap voor stap

Je voert één commando uit, maar de CLI logt elke stap: wat hij installeert, welke configuratiebestanden hij aanpast, en hoe hij paden en omgevingsvariabelen instelt. Jij houdt de controle; hij doet het saaie werk.

## Waarom het voor ons werkt

- **Geen kost per buildminuut**: de machines zijn één keer betaald.
- **Zoveel runners als we nodig hebben**, zonder licenties per runner.
- **Vrijheid** om de CI-omgeving precies op te zetten zoals onze projecten het nodig hebben.
- **Elke machine gelijk**, dus een build die op de ene werkt, werkt op allemaal.

Staat Xcode erop, dan is een nieuwe Mac mini in ongeveer vijf minuten klaar. Meer over [waarom we onze eigen CLI's bouwen](https://www.impaktfull.com/blog/the-power-of-custom-clis).

## Probeer het

Gebruik je GitHub Actions en wil je lagere CI-kosten? Begin op [GitHub](https://github.com/impaktfull/dart_impaktfull_cli), op [pub.dev](https://pub.dev/packages/impaktfull_cli) of in [de documentatie](https://docs.page/impaktfull/impaktfull_cli). En laat je het liever voor je opzetten: we zetten [builds en releases](https://www.impaktfull.com/service/apps) zo op voor elke app die we maken.

---

impaktfull bouwt en beheert apps, websites, platformen en AI-agents, vanuit Antwerpen. Meer op https://www.impaktfull.com/nl.
