https://github.com/andrewiankidd/multipass-gitlab-runner
Automatic configuration of a GitLab Runner via a reproducible Ubuntu VM
https://github.com/andrewiankidd/multipass-gitlab-runner
cd ci cicd devops gitlab
Last synced: about 21 hours ago
JSON representation
Automatic configuration of a GitLab Runner via a reproducible Ubuntu VM
- Host: GitHub
- URL: https://github.com/andrewiankidd/multipass-gitlab-runner
- Owner: andrewiankidd
- Created: 2025-06-26T18:50:08.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2026-06-30T20:34:52.000Z (7 days ago)
- Last Synced: 2026-06-30T21:24:01.482Z (7 days ago)
- Topics: cd, ci, cicd, devops, gitlab
- Language: Shell
- Homepage:
- Size: 8.79 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## ๐๏ธ Multipass GitLab Runner
This project automates the provisioning of a GitLab Runner inside a lightweight Ubuntu VM using Multipass. It's fast, reproducible, and deployable with a single command.
---
## โจ Features
- ๐ One-command GitLab runner deployment with `start.sh`
- ๐ฆ Auto-provisioned runner using cloud-init
- ๐ง Works on Windows, macOS, and Linux
- ๐ท๏ธ Supports GitLab runner tags (e.g. `cypress`)
- ๐ Easily rebuild, restart, or debug your runner VM
---
## โ๏ธ Requirements
- Multipass (see install instructions below)
- A GitLab registration token
- Git Bash (for Windows users)
---
## ๐ป Installation
### ๐ช Windows
1. Install Chocolatey:
```powershell
Set-ExecutionPolicy Bypass -Scope Process -Force; `
[System.Net.ServicePointManager]::SecurityProtocol = `
[System.Net.ServicePointManager]::SecurityProtocol -bor 3072; `
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
```
2. Install Multipass:
```powershell
choco install multipass
```
3. Run:
```bash
./start.sh
```
> ๐ง Use Git Bash for running scripts on Windows.
---
### ๐ macOS
1. Install Homebrew:
```bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
2. Install Multipass:
```bash
brew install --cask multipass
```
3. Run:
```bash
./start.sh
```
---
### ๐ง Linux
1. Install Snap:
```bash
sudo apt update
sudo apt install snapd
```
2. Install Multipass:
```bash
sudo snap install multipass
```
3. Run:
```bash
./start.sh
```
---
## ๐งพ Configuration
Copy and configure `.env` using the included example:
๐ See [.env.example](./.env.example) for all options.
---
## ๐ Usage
Start or rebuild the VM:
```bash
./start.sh # spin up or resume
./rebuild.sh # destroy and recreate
```
Get a shell inside the VM:
```bash
multipass shell $VM_NAME
```
---
## ๐ง Use Cases
This repo is especially useful for jobs that need:
- ๐งช **Cypress E2E Testing**
- Use tag `cypress` in your GitLab CI job
- Offload Chrome/Electron tests to local VM
Other potential use cases:
- ๐ณ Docker-based builds (Node, Python, Go, etc.)
- ๐งฌ Containerized integration tests
- ๐ธ Visual regression testing (e.g. Percy, Playwright)
- ๐ฆ Packaging or CI caching in self-contained environments
---
## โค๏ธ Contributions
Feel free to fork, extend, or open PRs โ this project welcomes improvements!