ci(ovn): improve stability (#945)

diff --git a/Jenkinsfile b/Jenkinsfile
index f5f766b..ad05b27 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -1,16 +1,3 @@
-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
 
@@ -34,12 +21,15 @@
 			parallel {
 				stage('ansible-lint') {
 					agent {
-						label 'jammy-2c-4g'
+						label 'earthly'
 					}
 
 					steps {
-						installEarthly()
-						sh 'earthly --output +lint.ansible-lint'
+						script {
+							docker.withRegistry('https://registry.hub.docker.com', 'docker-token') {
+								sh 'earthly --output +lint.ansible-lint'
+							}
+						}
 					}
 
 					post {
@@ -51,12 +41,15 @@
 
 				stage('helm') {
 					agent {
-						label 'jammy-2c-4g'
+						label 'earthly'
 					}
 
 					steps {
-						installEarthly()
-						sh 'earthly --output +lint.helm'
+						script {
+							docker.withRegistry('https://registry.hub.docker.com', 'docker-token') {
+								sh 'earthly --output +lint.helm'
+							}
+						}
 					}
 
 					post {
@@ -68,12 +61,15 @@
 
 				stage('markdownlint') {
 					agent {
-						label 'jammy-2c-4g'
+						label 'earthly'
 					}
 
 					steps {
-						installEarthly()
-						sh 'earthly --output +lint.markdownlint'
+						script {
+							docker.withRegistry('https://registry.hub.docker.com', 'docker-token') {
+								sh 'earthly --output +lint.markdownlint'
+							}
+						}
 					}
 
 					post {
@@ -85,12 +81,15 @@
 
 				stage('image-manifest') {
 					agent {
-						label 'jammy-2c-4g'
+						label 'earthly'
 					}
 
 					steps {
-						installEarthly()
-						sh 'earthly +lint.image-manifest'
+						script {
+							docker.withRegistry('https://registry.hub.docker.com', 'docker-token') {
+								sh 'earthly +lint.image-manifest'
+							}
+						}
 					}
 				}
 			}
@@ -100,12 +99,15 @@
 			parallel {
 				stage('go') {
 					agent {
-						label 'jammy-2c-4g'
+						label 'earthly'
 					}
 
 					steps {
-						installEarthly()
-						sh 'earthly --output +unit.go'
+						script {
+							docker.withRegistry('https://registry.hub.docker.com', 'docker-token') {
+								sh 'earthly --output +unit.go'
+							}
+						}
 					}
 
 					post {
@@ -121,13 +123,21 @@
 			parallel {
 				stage('collection') {
 					agent {
-						label 'jammy-2c-4g'
+						label 'earthly'
 					}
 
 					steps {
-						installEarthly()
-						sh 'earthly --output +build.collection'
-						archiveArtifacts artifacts: 'dist/**'
+						script {
+							docker.withRegistry('https://registry.hub.docker.com', 'docker-token') {
+								sh 'earthly --output +build.collection'
+							}
+						}
+					}
+
+					post {
+						success {
+							archiveArtifacts artifacts: 'dist/**'
+						}
 					}
 				}
 
@@ -138,12 +148,14 @@
 
 					steps {
 						script {
-							if (env.BRANCH_NAME == 'main') {
-								docker.withRegistry('https://ghcr.io', 'github-packages-token') {
-									sh 'earthly --push +images'
-								}
-							} else {
-								sh 'earthly --push +images'
+							docker.withRegistry('https://registry.hub.docker.com', 'docker-token') {
+									if (env.BRANCH_NAME == 'main') {
+										docker.withRegistry('https://ghcr.io', 'github-packages-token') {
+											sh 'earthly --push +images'
+										}
+									} else {
+										sh 'earthly --push +images'
+									}
 							}
 						}
 
@@ -155,12 +167,15 @@
 
 				stage('docs') {
 					agent {
-						label 'jammy-2c-4g'
+						label 'earthly'
 					}
 
 					steps {
-						installEarthly()
-						sh 'earthly +mkdocs-build'
+						script {
+							docker.withRegistry('https://registry.hub.docker.com', 'docker-token') {
+								sh 'earthly +mkdocs-build'
+							}
+						}
 					}
 				}
 			}
diff --git a/build/pin-images.py b/build/pin-images.py
index 83ae2d4..361db9c 100755
--- a/build/pin-images.py
+++ b/build/pin-images.py
@@ -134,6 +134,14 @@
     for image in data["_atmosphere_images"]:
         if image in SKIP_IMAGE_LIST:
             continue
+
+        # NOTE(mnaser): If we're in CI, only pin the Atmosphere images
+        if (
+            "registry.atmosphere.dev" in registry
+            and "ghcr.io/vexxhost/atmosphere" not in data["_atmosphere_images"][image]
+        ):
+            continue
+
         image_src = data["_atmosphere_images"][image].replace(
             "ghcr.io/vexxhost/atmosphere", registry
         )
diff --git a/molecule/aio/group_vars/all/molecule.yml b/molecule/aio/group_vars/all/molecule.yml
index 583eea8..6b68864 100644
--- a/molecule/aio/group_vars/all/molecule.yml
+++ b/molecule/aio/group_vars/all/molecule.yml
@@ -125,6 +125,8 @@
       ovn_ovsdb_nb: 1
       ovn_ovsdb_sb: 1
       ovn_northd: 1
+  manifests:
+    daemonset_ovn_controller: false
 
 coredns_helm_values:
   replicaCount: 1