chore: Add glance images (#815)

diff --git a/.github/workflows/images.yml b/.github/workflows/images.yml
new file mode 100644
index 0000000..d1ab65d
--- /dev/null
+++ b/.github/workflows/images.yml
@@ -0,0 +1,49 @@
+name: images
+
+on:
+  pull_request:
+  push:
+    branches:
+      - main
+
+jobs:
+  build:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout project
+        uses: actions/checkout@v4
+
+      - name: Install Earthly
+        uses: earthly/actions-setup@v1
+        with:
+          github-token: ${{ secrets.GITHUB_TOKEN }}
+
+      - name: Configure Earthly
+        run: |
+          mkdir -p ~/.earthly/certs
+          cat << EOF > ~/.earthly/certs/ca_cert.pem
+          ${{ secrets.EARTHLY_CA_CERT }}
+          EOF
+          cat << EOF > ~/.earthly/certs/earthly_cert.pem
+          ${{ secrets.EARTHLY_CERT }}
+          EOF
+          cat << EOF > ~/.earthly/certs/earthly_key.pem
+          ${{ secrets.EARTHLY_CERT_KEY }}
+          EOF
+          cat << EOF > ~/.earthly/config.yml
+          global:
+            buildkit_host: tcp://162.253.55.125:8372
+          EOF
+
+      - name: Login to GitHub Container Registry
+        uses: docker/login-action@v3
+        with:
+          registry: ghcr.io
+          username: ${{ github.actor }}
+          password: ${{ secrets.GITHUB_TOKEN }}
+
+      - name: Build images
+        run: earthly +images
+        env:
+          EARTHLY_CI: true
+          EARTHLY_PUSH: "${{ github.event_name == 'push' }}"
diff --git a/Earthfile b/Earthfile
index b08c82a..5546dd4 100644
--- a/Earthfile
+++ b/Earthfile
@@ -49,6 +49,7 @@
   SAVE IMAGE --push ghcr.io/vexxhost/atmosphere:${tag}
 
 images:
+  BUILD ./images/glance+image
   BUILD ./images/cluster-api-provider-openstack+image
 
 pin-images: