Overview
- Start GitHub Actions self-hosted runner with VirtualBox and Vagrant on your local machine or a remote machine like Google Compute Engine and EC2.
- Avoid dind (Docker in Docker)
- Accelerate
docker build
(ordocker-compose build
) on the virtual machine with the Docker Layer Caching as the same as your local environment. - Host OS: Ubuntu 18.04/20.04, macOS, Windows
- Guest OS: Ubuntu 20.04
Install VirtualBox
Ubuntu 18.04/20.04
sudo apt install -y virtualbox
macOS
brew cask install virtualbox
Allow Oracle America, Inc.
in the System Preferences.
Install Vagrant
hashicorp/vagrant: Vagrant is a tool for building and distributing development environments.
Ubuntu 18.04/20.04
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt update && sudo apt install -y vagrant
vagrant autocomplete install
macOS
brew install vagrant
vagrant autocomplete install
Start VM
git clone https://github.com/peaceiris/actions-self-hosted-runners.git
cd ./actions-self-hosted-runners/images/ubuntu-20.04
git checkout v0.4.0
vim .env
make up
vagrant ssh
cd actions-runner
./config.sh --url https://github.com/[owner]/[repo] --token [token]
nohup ./run.sh &
Create .env
file as follows.
VB_CPUS = '4'
VB_MEMORY = '8192'
VB_DISK_SIZE = '30GB'
-
VB_CPUS
: CPU cores -
VB_MEMORY
: Memory size -
VB_DISK_SIZE
: Disk size
Use the VM and Accelerate docker build
Unlike the GitHub hosted runner, a self-hosted runner is not destroyed for each job, so Docker Layer Caching will work as well as local machine. You don't have to worry about tricky usage of the actions/cache
and capacity limits. The docker build job became accelerated and we achieved the purpose.
name: CI frontend
on:
push:
branches:
- main
pull_request:
jobs:
docker:
runs-on: self-hosted
timeout-minutes: 3
env:
COMPOSE_DOCKER_CLI_BUILD: 1
DOCKER_BUILDKIT: 1
steps:
- uses: actions/checkout@v2.3.4
- run: hadolint ./Dockerfile
- run: sudo docker-compose build frontend
Slow docker-compose build
job on the GitHub hosted runner.
Accelerated docker-compose build
job on a self-hosted GitHub Actions runner.
Enabled Docker Layer Caching on a GitHub Actions self-hosted runner.
Repository
peaceiris / actions-self-hosted-runners
GitHub Actions self-hosted runner on VirtualBox with Vagrant.
actions-self-hosted-runners
GitHub Actions self-hosted runner on VirtualBox with Vagrant.
- actions/runner: The Runner for GitHub Actions
- actions/virtual-environments: GitHub Actions virtual environments
Getting Started
git clone https://github.com/peaceiris/actions-self-hosted-runners.git
cd ./actions-self-hosted-runners/images/ubuntu
cat << EOF > .env
GHA_RUNNER_VERSION = 'x.xxx.x'
VB_CPUS = '4'
VB_MEMORY = '8192'
VB_DISK_SIZE = '30GB'
EOF
make up
vagrant ssh
cd actions-runner
./config.sh --url https://github.com/[owner]/[repo] --token [token]
nohup ./run.sh &
Conclusion
- We can start a self-hosted GitHub Actions runner on a Ubuntu 20.04 virtual machine with VirtualBox and Vagrant very easily.
- We can accelerate
docker build
(ordocker-compose build
) on the virtual machine with the Docker Layer Caching as the same as your local environment.
Enjoy the comfortable CI/CD! Thank you.
Top comments (0)