Self hosted pipeline
Ubuntu 20.04
desktop environment, e.g. ubuntu-desktop
VMware Workstation (not VMware Player)
Vagrant
GitHub Actions runner
- ubuntu desktop
apt install ubuntu-desktop
- VMware Workstation prerequisites
sudo apt install gcc build-essential
- VMware Workstation
https://www.vmware.com/de/products/workstation-pro/workstation-pro-evaluation.html
curl https://download3.vmware.com/software/wkst/file/VMware-Workstation-Full-16.1.2-17966106.x86_64.bundle -o VMware-Workstation-Full-16.1.2-17966106.x86_64.bundle
./VMware-Workstation-Full-16.1.2-17966106.x86_64.bundle
- Vagrant - DO NOT USE OS PACKAGE MANAGER
https://www.vagrantup.com/docs/installation
- Vagrant VMware Utilities
https://www.vagrantup.com/docs/providers/vmware/vagrant-vmware-utility
curl https://releases.hashicorp.com/vagrant-vmware-utility/1.0.20/vagrant-vmware-utility_1.0.20_x86_64.deb -o vagrant-vmware-utility_1.0.20_x86_64.deb
- GitHub Actions runner
https://github.com/actions/runner/releases
cd github_actions_runner/actions-runner
curl -o actions-runner-linux-x64-2.278.0.tar.gz -L https://github.com/actions/runner/releases/download/v2.278.0/actions-runner-linux-x64-2.278.0.tar.gz
github_actions_runner/.env
ORGANIZATION= github organization
REPOSITORY_NAME= github repository name
GITHUB_TOKEN= github developer token
- [OPTIONAL] VMs number
./vagrant/Vagrantfile
replace 5
with desired VMs number
...
(1..5).each do |i|
config.vm.define "node-#{i}" do |node|
node.vm.hostname = "node-#{i}"
...
- Deployment
cd ./vagrant
vagrant up