ci: add full-node tests (#920)

diff --git a/images/tempest/Earthfile b/images/tempest/Earthfile
index 61dd5df..2160336 100644
--- a/images/tempest/Earthfile
+++ b/images/tempest/Earthfile
@@ -1,21 +1,49 @@
 VERSION 0.7
 
+ARG --global REGISTRY=ghcr.io/vexxhost/atmosphere
 ARG --global PROJECT=tempest
 ARG --global RELEASE=master
 ARG --global PROJECT_REF=699749ec27897efe9bd7824664237c16c3339c03
 
+build.plugin:
+  ARG PLUGIN
+  FROM ../openstack-service+builder --RELEASE=${RELEASE}
+  DO ../openstack-service+GIT_CHECKOUT \
+    --PROJECT=${PLUGIN} \
+    --PROJECT_REF=${RELEASE}
+  SAVE ARTIFACT /src
+
+octavia-test-server:
+  FROM golang:1.18
+  COPY (+build.plugin/src --PLUGIN=octavia-tempest-plugin) /src
+  ENV GO111MODULE=off
+  ENV CGO_ENABLED=0
+  ENV GOOS=linux
+  RUN go build \
+    -a -ldflags '-s -w -extldflags -static' \
+    -o /build/test_server.bin \
+    /src/octavia_tempest_plugin/contrib/test_server/test_server.go
+  SAVE ARTIFACT /build/test_server.bin
+
 build:
   FROM ../openstack-service+builder --RELEASE=${RELEASE}
+  COPY (+build.plugin/src --PLUGIN=barbican-tempest-plugin) /barbican-tempest-plugin
+  COPY (+build.plugin/src --PLUGIN=cinder-tempest-plugin) /cinder-tempest-plugin
+  COPY (+build.plugin/src --PLUGIN=heat-tempest-plugin) /heat-tempest-plugin
+  COPY (+build.plugin/src --PLUGIN=keystone-tempest-plugin) /keystone-tempest-plugin
+  COPY (+build.plugin/src --PLUGIN=neutron-tempest-plugin) /neutron-tempest-plugin
+  COPY (+build.plugin/src --PLUGIN=octavia-tempest-plugin) /octavia-tempest-plugin
   DO ../openstack-service+BUILD_VENV \
     --PROJECT=${PROJECT} \
     --PROJECT_REF=${PROJECT_REF} \
-    --PIP_PACKAGES="git+https://github.com/openstack/barbican-tempest-plugin.git git+https://github.com/openstack/cinder-tempest-plugin.git git+https://github.com/openstack/heat-tempest-plugin.git git+https://github.com/openstack/keystone-tempest-plugin.git git+https://github.com/openstack/neutron-tempest-plugin.git git+https://github.com/openstack/octavia-tempest-plugin.git"
+    --PIP_PACKAGES="/barbican-tempest-plugin /cinder-tempest-plugin /heat-tempest-plugin /keystone-tempest-plugin /neutron-tempest-plugin /octavia-tempest-plugin junitxml"
 
 image:
   FROM ../openstack-service+image --RELEASE ${RELEASE} --PROJECT ${PROJECT}
+  COPY +octavia-test-server/test_server.bin /opt/octavia-tempest-plugin/test_server.bin
   COPY +build/venv /var/lib/openstack
   DO ../+APT_INSTALL \
-    --PACKAGES "iputils-ping"
+    --PACKAGES "iputils-ping openssh-client"
   SAVE IMAGE --push \
-    ghcr.io/vexxhost/atmosphere/${PROJECT}:${RELEASE} \
-    ghcr.io/vexxhost/atmosphere/${PROJECT}:${PROJECT_REF}
+    ${REGISTRY}/${PROJECT}:${RELEASE} \
+    ${REGISTRY}/${PROJECT}:${PROJECT_REF}