Clean-up jobs
diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml
new file mode 100644
index 0000000..771a0f0
--- /dev/null
+++ b/.github/workflows/sync.yml
@@ -0,0 +1,31 @@
+name: sync
+
+on:
+  workflow_dispatch:
+  schedule:
+    - cron: 0 0 * * *
+
+permissions:
+  contents: write
+  pull-requests: write
+
+jobs:
+  generate-data:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v3
+      - run: ./hack/update-openstack-images-data
+      - uses: peter-evans/create-pull-request@v4
+        with:
+          commit-message: Automated OpenStack project versions bump
+          branch: auto/bump-openstack-refs
+          delete-branch: true
+          title: Automatic bump of OpenStack project versions
+          body: |
+            This is an automatic bump of OpenStack project versions in order to
+            make sure that we always have the latest images available.  This
+            should be merged once all images build successfully.
+          assignees: |
+            mnaser
+          reviewers: |
+            mnaser
diff --git a/hack/update-openstack-images-data b/hack/update-openstack-images-data
new file mode 100755
index 0000000..453bfc0
--- /dev/null
+++ b/hack/update-openstack-images-data
@@ -0,0 +1,10 @@
+#!/bin/bash -xe
+
+for RELEASE in $(ls -1 images/openstack/releases); do
+  BRANCH=$(cat images/openstack/releases/${RELEASE}/branch)
+
+  for PROJECT in $(ls -1 images/openstack/projects); do
+    mkdir -p images/openstack/projects/${PROJECT}/${RELEASE}
+    curl -s https://opendev.org/api/v1/repos/openstack/${PROJECT}/branches/${BRANCH} | jq -r '.commit.id' > projects/${PROJECT}/${RELEASE}/ref
+  done
+done
diff --git a/images/openstack/tools/generate-data.sh b/images/openstack/tools/generate-data.sh
deleted file mode 100755
index 1d424a6..0000000
--- a/images/openstack/tools/generate-data.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash -xe
-
-for RELEASE in $(ls -1 releases); do
-  BRANCH=$(cat releases/${RELEASE}/branch)
-
-  for PROJECT in $(ls projects); do
-    mkdir -p projects/${PROJECT}/${RELEASE}
-    curl -s https://opendev.org/api/v1/repos/openstack/${PROJECT}/branches/${BRANCH} | jq -r '.commit.id' > projects/${PROJECT}/${RELEASE}/ref
-  done
-done
diff --git a/images/openstack/tools/generate-env.sh b/images/openstack/tools/generate-env.sh
deleted file mode 100755
index f51481d..0000000
--- a/images/openstack/tools/generate-env.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-
-PROJECT=$1
-RELEASE=$2
-
-echo PROJECT_REF=$(cat projects/${PROJECT}/${RELEASE}/ref)
-
-# Check if platforms file exists
-if [ -f projects/${PROJECT}/platforms ]; then
-  echo PLATFORMS=$(cat projects/${PROJECT}/platforms 2>/dev/null)
-else
-  echo PLATFORMS=linux/amd64
-fi
-
-echo PROFILES=$(cat projects/${PROJECT}/profiles 2> /dev/null)
-echo DIST_PACKAGES=$(cat projects/${PROJECT}/dist-packages 2> /dev/null)
-echo PIP_PACKAGES=$(cat projects/${PROJECT}/pip-packages 2> /dev/null)
diff --git a/images/openstack/tools/purge-github-cache.sh b/tools/purge-github-cache.sh
similarity index 100%
rename from images/openstack/tools/purge-github-cache.sh
rename to tools/purge-github-cache.sh