ci: publish atmosphere images
diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml
index 252c2cd..d0a6f16 100644
--- a/.github/workflows/integration.yml
+++ b/.github/workflows/integration.yml
@@ -39,6 +39,24 @@
           go-version-file: go.mod
           cache: true
 
+      - name: Authenticate with Quay.io
+        uses: docker/login-action@v2
+        if: ${{ github.event_name == 'push' }}
+        with:
+          registry: quay.io
+          username: ${{ secrets.QUAY_USERNAME }}
+          password: ${{ secrets.QUAY_ROBOT_TOKEN }}
+
+      - name: Build image
+        uses: docker/build-push-action@v3
+        with:
+          cache-from: type=gha
+          cache-to: type=gha,mode=max
+          context: .
+          platforms: linux/amd64
+          push: ${{ github.event_name == 'push' }}
+          tags: quay.io/vexxhost/atmosphere:${{ github.sha }}
+
       - name: Clean-up stale stacks
         run: go run ./cmd/atmosphere-ci molecule cleanup
         env:
@@ -61,3 +79,10 @@
           OS_PASSWORD: ${{ secrets.OS_PASSWORD }}
           OS_PROJECT_DOMAIN_NAME: Default
           OS_PROJECT_NAME: ${{ secrets.OS_PROJECT_NAME }}
+
+      - name: Promote image
+        uses: akhilerm/tag-push-action@v2.0.0
+        if: github.ref == 'refs/heads/main'
+        with:
+          src: quay.io/vexxhost/atmosphere:${{ github.sha }}
+          dst: quay.io/vexxhost/atmosphere:latest