.gibil.yml Reference
Complete reference for the .gibil.yml configuration file
Full example
name: my-app
image: node:20
server_type: cpx21
location: ash
services:
- name: db
image: postgres:16
port: 5432
env:
POSTGRES_PASSWORD: devpass
POSTGRES_DB: myapp
- name: cache
image: redis:7
port: 6379
tasks:
- name: install
command: pnpm install --frozen-lockfile
- name: check
command: pnpm check
- name: build
command: pnpm build
- name: test
command: pnpm test
env:
DATABASE_URL: postgres://postgres:devpass@localhost:5432/myapp
REDIS_URL: redis://localhost:6379
NODE_ENV: developmentFields
name
Project name. Optional, used for labeling.
image
Runtime to install on the VM. Gibil installs the specified runtime and its package manager.
| Value | Installs |
|---|---|
node:20 | Node.js 20 + pnpm |
node:22 | Node.js 22 + pnpm |
python:3.12 | Python 3.12 + pip |
go:1.22 | Go 1.22 |
server_type
Hetzner VM size. Default: cpx11.
| Type | vCPU | RAM | Cost/hr |
|---|---|---|---|
cpx11 | 2 | 4 GB | ~€0.011 |
cpx21 | 4 | 8 GB | ~€0.019 |
cpx31 | 4 | 16 GB | ~€0.036 |
location
Hetzner datacenter. Default: fsn1.
| Code | City |
|---|---|
fsn1 | Falkenstein, Germany |
nbg1 | Nuremberg, Germany |
hel1 | Helsinki, Finland |
ash | Ashburn, Virginia |
services
Docker containers to start before tasks. Docker is automatically installed when services are defined.
services:
- name: db
image: postgres:16
port: 5432
env:
POSTGRES_PASSWORD: devpassEach service has:
name— identifier for the serviceimage— Docker image to runport— port to exposeenv— environment variables passed to the container
tasks
Commands to run in order after the repo is cloned. If one fails, the rest still run.
tasks:
- name: install
command: pnpm install
- name: test
command: pnpm testenv
Environment variables set on the VM (persisted in /root/.bashrc).
env:
DATABASE_URL: postgres://localhost/myapp
NODE_ENV: developmentDiscovery order
Gibil looks for the config file in this order:
--config ./path/to/config.yml— explicit CLI flag--repoURL — fetched from the repo's GitHub raw URL- Current working directory —
.gibil.ymlin$PWD