chore: build in external vms (#937)

diff --git a/Jenkinsfile b/Jenkinsfile
index 75b3574..f5f766b 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -1,3 +1,16 @@
+def installDocker() {
+	sh 'curl -fsSL https://get.docker.com | sh'
+	sh 'sudo usermod -aG docker ubuntu'
+}
+
+def installEarthly() {
+	installDocker()
+
+	sh 'curl -fsSL https://github.com/earthly/earthly/releases/latest/download/earthly-linux-amd64 -o /usr/local/bin/earthly'
+	sh 'chmod +x /usr/local/bin/earthly'
+	sh 'earthly bootstrap'
+}
+
 pipeline {
 	agent none
 
@@ -21,10 +34,11 @@
 			parallel {
 				stage('ansible-lint') {
 					agent {
-						label 'earthly'
+						label 'jammy-2c-4g'
 					}
 
 					steps {
+						installEarthly()
 						sh 'earthly --output +lint.ansible-lint'
 					}
 
@@ -37,10 +51,11 @@
 
 				stage('helm') {
 					agent {
-						label 'earthly'
+						label 'jammy-2c-4g'
 					}
 
 					steps {
+						installEarthly()
 						sh 'earthly --output +lint.helm'
 					}
 
@@ -53,10 +68,11 @@
 
 				stage('markdownlint') {
 					agent {
-						label 'earthly'
+						label 'jammy-2c-4g'
 					}
 
 					steps {
+						installEarthly()
 						sh 'earthly --output +lint.markdownlint'
 					}
 
@@ -69,10 +85,11 @@
 
 				stage('image-manifest') {
 					agent {
-						label 'earthly'
+						label 'jammy-2c-4g'
 					}
 
 					steps {
+						installEarthly()
 						sh 'earthly +lint.image-manifest'
 					}
 				}
@@ -83,10 +100,11 @@
 			parallel {
 				stage('go') {
 					agent {
-						label 'earthly'
+						label 'jammy-2c-4g'
 					}
 
 					steps {
+						installEarthly()
 						sh 'earthly --output +unit.go'
 					}
 
@@ -103,10 +121,11 @@
 			parallel {
 				stage('collection') {
 					agent {
-						label 'earthly'
+						label 'jammy-2c-4g'
 					}
 
 					steps {
+						installEarthly()
 						sh 'earthly --output +build.collection'
 						archiveArtifacts artifacts: 'dist/**'
 					}
@@ -136,10 +155,11 @@
 
 				stage('docs') {
 					agent {
-						label 'earthly'
+						label 'jammy-2c-4g'
 					}
 
 					steps {
+						installEarthly()
 						sh 'earthly +mkdocs-build'
 					}
 				}