Switch to Renovate for Git commits

Skip-Release-Notes

Change-Id: Ic7c390f944391eba2377966c6ada360d4cd68bd4
diff --git a/Cargo.lock b/Cargo.lock
index 9232d84..5c9232b 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -98,32 +98,11 @@
 checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04"
 
 [[package]]
-name = "arc-swap"
-version = "1.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"
-
-[[package]]
-name = "async-trait"
-version = "0.1.86"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
 name = "atmosphere"
 version = "0.0.0"
 dependencies = [
  "clap",
  "env_logger",
- "git2",
- "git2-hooks",
- "imagebumper",
- "indoc",
  "log",
  "md5",
  "regex",
@@ -134,12 +113,6 @@
 ]
 
 [[package]]
-name = "atomic-waker"
-version = "1.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
-
-[[package]]
 name = "autocfg"
 version = "1.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -217,17 +190,6 @@
 ]
 
 [[package]]
-name = "build-it"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb13a73a10ff7e425c3b397e54848825ce396d7e6c16be83bc9af81923e51191"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
 name = "bumpalo"
 version = "3.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -270,11 +232,9 @@
 dependencies = [
  "android-tzdata",
  "iana-time-zone",
- "js-sys",
  "num-traits",
  "serde",
- "wasm-bindgen",
- "windows-targets 0.52.6",
+ "windows-targets",
 ]
 
 [[package]]
@@ -324,26 +284,6 @@
 checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990"
 
 [[package]]
-name = "core-foundation"
-version = "0.9.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
-[[package]]
-name = "core-foundation"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
-[[package]]
 name = "core-foundation-sys"
 version = "0.8.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -392,21 +332,6 @@
 ]
 
 [[package]]
-name = "either"
-version = "1.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
-
-[[package]]
-name = "encoding_rs"
-version = "0.8.35"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
-dependencies = [
- "cfg-if",
-]
-
-[[package]]
 name = "env_filter"
 version = "0.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -446,12 +371,6 @@
 ]
 
 [[package]]
-name = "fastrand"
-version = "2.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
-
-[[package]]
 name = "filetime"
 version = "0.2.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -470,21 +389,6 @@
 checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
 
 [[package]]
-name = "foreign-types"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
-dependencies = [
- "foreign-types-shared",
-]
-
-[[package]]
-name = "foreign-types-shared"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
-
-[[package]]
 name = "form_urlencoded"
 version = "1.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -589,22 +493,8 @@
 checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
 dependencies = [
  "cfg-if",
- "js-sys",
  "libc",
- "wasi 0.11.0+wasi-snapshot-preview1",
- "wasm-bindgen",
-]
-
-[[package]]
-name = "getrandom"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8"
-dependencies = [
- "cfg-if",
- "libc",
- "wasi 0.13.3+wasi-0.2.2",
- "windows-targets 0.52.6",
+ "wasi",
 ]
 
 [[package]]
@@ -614,65 +504,6 @@
 checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
 
 [[package]]
-name = "git2"
-version = "0.20.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fda788993cc341f69012feba8bf45c0ba4f3291fcc08e214b4d5a7332d88aff"
-dependencies = [
- "bitflags",
- "libc",
- "libgit2-sys",
- "log",
- "openssl-probe",
- "openssl-sys",
- "url",
-]
-
-[[package]]
-name = "git2-hooks"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f930f5fe956eb55418c0da7e40736636e3fe80b577d8b60d9e54da0fc038619"
-dependencies = [
- "git2",
- "log",
- "shellexpand",
- "thiserror 1.0.69",
-]
-
-[[package]]
-name = "gitea-sdk"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7afd05f4bb5661b4562f00ad4e37d6af7184205d382b8d697bc5958331ca4909"
-dependencies = [
- "base64",
- "build-it",
- "reqwest",
- "serde",
- "serde_json",
-]
-
-[[package]]
-name = "h2"
-version = "0.4.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e"
-dependencies = [
- "atomic-waker",
- "bytes",
- "fnv",
- "futures-core",
- "futures-sink",
- "http",
- "indexmap 2.7.1",
- "slab",
- "tokio",
- "tokio-util",
- "tracing",
-]
-
-[[package]]
 name = "hashbrown"
 version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -757,7 +588,6 @@
  "bytes",
  "futures-channel",
  "futures-util",
- "h2",
  "http",
  "http-body",
  "httparse",
@@ -785,54 +615,6 @@
 ]
 
 [[package]]
-name = "hyper-rustls"
-version = "0.27.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2"
-dependencies = [
- "futures-util",
- "http",
- "hyper",
- "hyper-util",
- "log",
- "rustls",
- "rustls-native-certs",
- "rustls-pki-types",
- "tokio",
- "tokio-rustls",
- "tower-service",
-]
-
-[[package]]
-name = "hyper-timeout"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0"
-dependencies = [
- "hyper",
- "hyper-util",
- "pin-project-lite",
- "tokio",
- "tower-service",
-]
-
-[[package]]
-name = "hyper-tls"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
-dependencies = [
- "bytes",
- "http-body-util",
- "hyper",
- "hyper-util",
- "native-tls",
- "tokio",
- "tokio-native-tls",
- "tower-service",
-]
-
-[[package]]
 name = "hyper-util"
 version = "0.1.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1029,17 +811,6 @@
 ]
 
 [[package]]
-name = "imagebumper"
-version = "0.1.0"
-dependencies = [
- "async-trait",
- "gitea-sdk",
- "octocrab",
- "tokio",
- "url",
-]
-
-[[package]]
 name = "indexmap"
 version = "1.9.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1074,16 +845,6 @@
 checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
 
 [[package]]
-name = "iri-string"
-version = "0.7.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc0f0a572e8ffe56e2ff4f769f32ffe919282c3916799f8b68688b6030063bea"
-dependencies = [
- "memchr",
- "serde",
-]
-
-[[package]]
 name = "is_terminal_polyfill"
 version = "1.70.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1115,21 +876,6 @@
 ]
 
 [[package]]
-name = "jsonwebtoken"
-version = "9.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a87cc7a48537badeae96744432de36f4be2b4a34a05a5ef32e9dd8a1c169dde"
-dependencies = [
- "base64",
- "js-sys",
- "pem",
- "ring",
- "serde",
- "serde_json",
- "simple_asn1",
-]
-
-[[package]]
 name = "libc"
 version = "0.2.169"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1217,12 +963,6 @@
 checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
 
 [[package]]
-name = "mime"
-version = "0.3.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
-
-[[package]]
 name = "miniz_oxide"
 version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1238,28 +978,11 @@
 checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd"
 dependencies = [
  "libc",
- "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasi",
  "windows-sys 0.52.0",
 ]
 
 [[package]]
-name = "native-tls"
-version = "0.2.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0dab59f8e050d5df8e4dd87d9206fb6f65a483e20ac9fda365ade4fab353196c"
-dependencies = [
- "libc",
- "log",
- "openssl",
- "openssl-probe",
- "openssl-sys",
- "schannel",
- "security-framework 2.11.1",
- "security-framework-sys",
- "tempfile",
-]
-
-[[package]]
 name = "netlink-packet-core"
 version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1335,31 +1058,12 @@
 ]
 
 [[package]]
-name = "num-bigint"
-version = "0.4.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
-dependencies = [
- "num-integer",
- "num-traits",
-]
-
-[[package]]
 name = "num-conv"
 version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
 
 [[package]]
-name = "num-integer"
-version = "0.1.46"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
-dependencies = [
- "num-traits",
-]
-
-[[package]]
 name = "num-traits"
 version = "0.2.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1378,112 +1082,12 @@
 ]
 
 [[package]]
-name = "octocrab"
-version = "0.43.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "27527d68322f4c603319f7958973db8f9fa4be62c0e3fafe084f5562cf6353df"
-dependencies = [
- "arc-swap",
- "async-trait",
- "base64",
- "bytes",
- "cfg-if",
- "chrono",
- "either",
- "futures",
- "futures-util",
- "http",
- "http-body",
- "http-body-util",
- "hyper",
- "hyper-rustls",
- "hyper-timeout",
- "hyper-util",
- "jsonwebtoken",
- "once_cell",
- "percent-encoding",
- "pin-project",
- "secrecy",
- "serde",
- "serde_json",
- "serde_path_to_error",
- "serde_urlencoded",
- "snafu",
- "tokio",
- "tower",
- "tower-http",
- "tracing",
- "url",
- "web-time",
-]
-
-[[package]]
 name = "once_cell"
 version = "1.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e"
 
 [[package]]
-name = "openssl"
-version = "0.10.71"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd"
-dependencies = [
- "bitflags",
- "cfg-if",
- "foreign-types",
- "libc",
- "once_cell",
- "openssl-macros",
- "openssl-sys",
-]
-
-[[package]]
-name = "openssl-macros"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "openssl-probe"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
-
-[[package]]
-name = "openssl-src"
-version = "300.4.2+3.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "168ce4e058f975fe43e89d9ccf78ca668601887ae736090aacc23ae353c298e2"
-dependencies = [
- "cc",
-]
-
-[[package]]
-name = "openssl-sys"
-version = "0.9.106"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd"
-dependencies = [
- "cc",
- "libc",
- "openssl-src",
- "pkg-config",
- "vcpkg",
-]
-
-[[package]]
-name = "option-ext"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
-
-[[package]]
 name = "ovsinit"
 version = "0.1.0"
 dependencies = [
@@ -1516,42 +1120,12 @@
 checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
 
 [[package]]
-name = "pem"
-version = "3.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae"
-dependencies = [
- "base64",
- "serde",
-]
-
-[[package]]
 name = "percent-encoding"
 version = "2.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
 
 [[package]]
-name = "pin-project"
-version = "1.1.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d"
-dependencies = [
- "pin-project-internal",
-]
-
-[[package]]
-name = "pin-project-internal"
-version = "1.1.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
 name = "pin-project-lite"
 version = "0.2.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1564,12 +1138,6 @@
 checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
 
 [[package]]
-name = "pkg-config"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
-
-[[package]]
 name = "powerfmt"
 version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1629,7 +1197,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
 dependencies = [
- "getrandom 0.2.15",
+ "getrandom",
 ]
 
 [[package]]
@@ -1682,64 +1250,6 @@
 checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
 
 [[package]]
-name = "reqwest"
-version = "0.12.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da"
-dependencies = [
- "base64",
- "bytes",
- "encoding_rs",
- "futures-core",
- "futures-util",
- "h2",
- "http",
- "http-body",
- "http-body-util",
- "hyper",
- "hyper-rustls",
- "hyper-tls",
- "hyper-util",
- "ipnet",
- "js-sys",
- "log",
- "mime",
- "native-tls",
- "once_cell",
- "percent-encoding",
- "pin-project-lite",
- "rustls-pemfile",
- "serde",
- "serde_json",
- "serde_urlencoded",
- "sync_wrapper",
- "system-configuration",
- "tokio",
- "tokio-native-tls",
- "tower",
- "tower-service",
- "url",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
- "windows-registry",
-]
-
-[[package]]
-name = "ring"
-version = "0.17.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e75ec5e92c4d8aede845126adc388046234541629e76029599ed35a003c7ed24"
-dependencies = [
- "cc",
- "cfg-if",
- "getrandom 0.2.15",
- "libc",
- "untrusted",
- "windows-sys 0.52.0",
-]
-
-[[package]]
 name = "rtnetlink"
 version = "0.14.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1791,59 +1301,6 @@
 ]
 
 [[package]]
-name = "rustls"
-version = "0.23.23"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395"
-dependencies = [
- "log",
- "once_cell",
- "ring",
- "rustls-pki-types",
- "rustls-webpki",
- "subtle",
- "zeroize",
-]
-
-[[package]]
-name = "rustls-native-certs"
-version = "0.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3"
-dependencies = [
- "openssl-probe",
- "rustls-pki-types",
- "schannel",
- "security-framework 3.2.0",
-]
-
-[[package]]
-name = "rustls-pemfile"
-version = "2.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50"
-dependencies = [
- "rustls-pki-types",
-]
-
-[[package]]
-name = "rustls-pki-types"
-version = "1.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c"
-
-[[package]]
-name = "rustls-webpki"
-version = "0.102.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9"
-dependencies = [
- "ring",
- "rustls-pki-types",
- "untrusted",
-]
-
-[[package]]
 name = "rustversion"
 version = "1.0.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1856,60 +1313,6 @@
 checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd"
 
 [[package]]
-name = "schannel"
-version = "0.1.27"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d"
-dependencies = [
- "windows-sys 0.59.0",
-]
-
-[[package]]
-name = "secrecy"
-version = "0.10.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a"
-dependencies = [
- "zeroize",
-]
-
-[[package]]
-name = "security-framework"
-version = "2.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
-dependencies = [
- "bitflags",
- "core-foundation 0.9.4",
- "core-foundation-sys",
- "libc",
- "security-framework-sys",
-]
-
-[[package]]
-name = "security-framework"
-version = "3.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316"
-dependencies = [
- "bitflags",
- "core-foundation 0.10.0",
- "core-foundation-sys",
- "libc",
- "security-framework-sys",
-]
-
-[[package]]
-name = "security-framework-sys"
-version = "2.14.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
-[[package]]
 name = "serde"
 version = "1.0.218"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1942,16 +1345,6 @@
 ]
 
 [[package]]
-name = "serde_path_to_error"
-version = "0.1.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6"
-dependencies = [
- "itoa",
- "serde",
-]
-
-[[package]]
 name = "serde_repr"
 version = "0.1.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2007,18 +1400,6 @@
 checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
 
 [[package]]
-name = "simple_asn1"
-version = "0.6.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb"
-dependencies = [
- "num-bigint",
- "num-traits",
- "thiserror 2.0.11",
- "time",
-]
-
-[[package]]
 name = "slab"
 version = "0.4.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2034,27 +1415,6 @@
 checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd"
 
 [[package]]
-name = "snafu"
-version = "0.8.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "223891c85e2a29c3fe8fb900c1fae5e69c2e42415e3177752e8718475efa5019"
-dependencies = [
- "snafu-derive",
-]
-
-[[package]]
-name = "snafu-derive"
-version = "0.8.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03c3c6b7927ffe7ecaa769ee0e3994da3b8cafc8f444578982c83ecb161af917"
-dependencies = [
- "heck",
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
 name = "socket2"
 version = "0.5.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2077,12 +1437,6 @@
 checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
 
 [[package]]
-name = "subtle"
-version = "2.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
-
-[[package]]
 name = "syn"
 version = "2.0.98"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2094,15 +1448,6 @@
 ]
 
 [[package]]
-name = "sync_wrapper"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
-dependencies = [
- "futures-core",
-]
-
-[[package]]
 name = "synstructure"
 version = "0.13.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2114,27 +1459,6 @@
 ]
 
 [[package]]
-name = "system-configuration"
-version = "0.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
-dependencies = [
- "bitflags",
- "core-foundation 0.9.4",
- "system-configuration-sys",
-]
-
-[[package]]
-name = "system-configuration-sys"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
-[[package]]
 name = "tar"
 version = "0.4.43"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2146,20 +1470,6 @@
 ]
 
 [[package]]
-name = "tempfile"
-version = "3.17.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230"
-dependencies = [
- "cfg-if",
- "fastrand",
- "getrandom 0.3.1",
- "once_cell",
- "rustix",
- "windows-sys 0.59.0",
-]
-
-[[package]]
 name = "thiserror"
 version = "1.0.69"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2268,26 +1578,6 @@
 ]
 
 [[package]]
-name = "tokio-native-tls"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
-dependencies = [
- "native-tls",
- "tokio",
-]
-
-[[package]]
-name = "tokio-rustls"
-version = "0.26.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37"
-dependencies = [
- "rustls",
- "tokio",
-]
-
-[[package]]
 name = "tokio-util"
 version = "0.7.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2301,48 +1591,6 @@
 ]
 
 [[package]]
-name = "tower"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
-dependencies = [
- "futures-core",
- "futures-util",
- "pin-project-lite",
- "sync_wrapper",
- "tokio",
- "tokio-util",
- "tower-layer",
- "tower-service",
- "tracing",
-]
-
-[[package]]
-name = "tower-http"
-version = "0.6.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697"
-dependencies = [
- "bitflags",
- "bytes",
- "futures-util",
- "http",
- "http-body",
- "iri-string",
- "pin-project-lite",
- "tower",
- "tower-layer",
- "tower-service",
- "tracing",
-]
-
-[[package]]
-name = "tower-layer"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
-
-[[package]]
 name = "tower-service"
 version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2354,24 +1602,11 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
 dependencies = [
- "log",
  "pin-project-lite",
- "tracing-attributes",
  "tracing-core",
 ]
 
 [[package]]
-name = "tracing-attributes"
-version = "0.1.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
 name = "tracing-core"
 version = "0.1.33"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2393,12 +1628,6 @@
 checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034"
 
 [[package]]
-name = "untrusted"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
-
-[[package]]
 name = "url"
 version = "2.5.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2407,7 +1636,6 @@
  "form_urlencoded",
  "idna",
  "percent-encoding",
- "serde",
 ]
 
 [[package]]
@@ -2429,12 +1657,6 @@
 checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
 
 [[package]]
-name = "vcpkg"
-version = "0.2.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
-
-[[package]]
 name = "want"
 version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2450,15 +1672,6 @@
 checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
 
 [[package]]
-name = "wasi"
-version = "0.13.3+wasi-0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2"
-dependencies = [
- "wit-bindgen-rt",
-]
-
-[[package]]
 name = "wasm-bindgen"
 version = "0.2.100"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2485,19 +1698,6 @@
 ]
 
 [[package]]
-name = "wasm-bindgen-futures"
-version = "0.4.50"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61"
-dependencies = [
- "cfg-if",
- "js-sys",
- "once_cell",
- "wasm-bindgen",
- "web-sys",
-]
-
-[[package]]
 name = "wasm-bindgen-macro"
 version = "0.2.100"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2530,27 +1730,6 @@
 ]
 
 [[package]]
-name = "web-sys"
-version = "0.3.77"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
-dependencies = [
- "js-sys",
- "wasm-bindgen",
-]
-
-[[package]]
-name = "web-time"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
-dependencies = [
- "js-sys",
- "serde",
- "wasm-bindgen",
-]
-
-[[package]]
 name = "winapi"
 version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2582,45 +1761,6 @@
 ]
 
 [[package]]
-name = "windows-registry"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0"
-dependencies = [
- "windows-result",
- "windows-strings",
- "windows-targets 0.52.6",
-]
-
-[[package]]
-name = "windows-result"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e"
-dependencies = [
- "windows-targets 0.52.6",
-]
-
-[[package]]
-name = "windows-strings"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
-dependencies = [
- "windows-result",
- "windows-targets 0.52.6",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.48.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
-dependencies = [
- "windows-targets 0.48.5",
-]
-
-[[package]]
 name = "windows-sys"
 version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2760,15 +1900,6 @@
 checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
 
 [[package]]
-name = "wit-bindgen-rt"
-version = "0.33.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c"
-dependencies = [
- "bitflags",
-]
-
-[[package]]
 name = "write16"
 version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2858,12 +1989,6 @@
 ]
 
 [[package]]
-name = "zeroize"
-version = "1.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
-
-[[package]]
 name = "zerovec"
 version = "0.10.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/Cargo.toml b/Cargo.toml
index 6496d93..14c26ef 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -3,17 +3,6 @@
 edition = "2021"
 
 [dependencies]
-clap = { version = "4.5.29", features = ["derive"] }
-env_logger = { version = "0.11.6", features = ["unstable-kv"] }
-git2 = "0.20.0"
-git2-hooks = "0.4.0"
-imagebumper = { path = "crates/imagebumper" }
-indoc = "2.0.5"
-log = { version = "0.4.25", features = ["kv"] }
-md5 = "0.7.0"
-regex = "1.11.1"
-reqwest = { version = "0.12.12", features = ["json", "native-tls-vendored"] }
-serde = { version = "1.0.218", features = ["derive"] }
 tokio = { version = "1.43.0", features = ["fs", "macros", "rt-multi-thread"] }
 
 [dev-dependencies]
diff --git a/crates/imagebumper/Cargo.toml b/crates/imagebumper/Cargo.toml
deleted file mode 100644
index ac47dd8..0000000
--- a/crates/imagebumper/Cargo.toml
+++ /dev/null
@@ -1,11 +0,0 @@
-[package]
-name = "imagebumper"
-version = "0.1.0"
-edition = "2021"
-
-[dependencies]
-async-trait = "0.1.86"
-gitea-sdk = "0.5.0"
-octocrab = "0.43.0"
-tokio = { version = "1.43.0", features = ["fs", "macros", "rt-multi-thread"] }
-url = "2.5.4"
diff --git a/crates/imagebumper/src/clients/github.rs b/crates/imagebumper/src/clients/github.rs
deleted file mode 100644
index b8ac5f3..0000000
--- a/crates/imagebumper/src/clients/github.rs
+++ /dev/null
@@ -1,36 +0,0 @@
-use crate::RepositoryClient;
-use async_trait::async_trait;
-use octocrab::Octocrab;
-use std::error::Error;
-use std::sync::Arc;
-
-pub struct Client {
-    client: Arc<Octocrab>,
-}
-
-impl Client {
-    pub fn new() -> Self {
-      Client {
-            client: octocrab::instance(),
-        }
-    }
-}
-
-#[async_trait]
-impl RepositoryClient for Client {
-    async fn get_latest_commit(
-        &self,
-        repository: &crate::repository::Repository,
-        branch: &str,
-    ) -> Result<String, Box<dyn Error>> {
-        let commits = self
-            .client
-            .repos(repository.owner.clone(), repository.name.clone())
-            .list_commits()
-            .branch(branch)
-            .send()
-            .await?;
-
-        Ok(commits.items[0].sha.clone())
-    }
-}
diff --git a/crates/imagebumper/src/clients/mod.rs b/crates/imagebumper/src/clients/mod.rs
deleted file mode 100644
index 8c2bfde..0000000
--- a/crates/imagebumper/src/clients/mod.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-pub mod github;
-pub mod opendev;
-
-use crate::clients::github::Client as GitHubClient;
-use crate::clients::opendev::Client as OpenDevClient;
-
-pub struct ClientSet {
-    pub github: GitHubClient,
-    pub opendev: OpenDevClient,
-}
-
-impl ClientSet {
-    pub fn new() -> Self {
-        ClientSet {
-            github: GitHubClient::new(),
-            opendev: OpenDevClient::new(),
-        }
-    }
-}
diff --git a/crates/imagebumper/src/clients/opendev.rs b/crates/imagebumper/src/clients/opendev.rs
deleted file mode 100644
index 252ed60..0000000
--- a/crates/imagebumper/src/clients/opendev.rs
+++ /dev/null
@@ -1,35 +0,0 @@
-use crate::RepositoryClient;
-use async_trait::async_trait;
-use gitea_sdk::Auth;
-use gitea_sdk::Client as GiteaClient;
-use std::error::Error;
-
-pub struct Client {
-    client: GiteaClient,
-}
-
-impl Client {
-    pub fn new() -> Self {
-        Client {
-            client: GiteaClient::new("https://opendev.org", Auth::None::<String>),
-        }
-    }
-}
-
-#[async_trait]
-impl RepositoryClient for Client {
-    async fn get_latest_commit(
-        &self,
-        repository: &crate::repository::Repository,
-        branch: &str,
-    ) -> Result<String, Box<dyn Error>> {
-        let branch_info = self
-            .client
-            .repos(repository.owner.clone(), repository.name.clone())
-            .get_branch(branch)
-            .send(&self.client)
-            .await?;
-
-        Ok(branch_info.commit.id)
-    }
-}
diff --git a/crates/imagebumper/src/lib.rs b/crates/imagebumper/src/lib.rs
deleted file mode 100644
index 6142e02..0000000
--- a/crates/imagebumper/src/lib.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-pub mod repository;
-pub mod clients;
-
-use async_trait::async_trait;
-use std::any::Any;
-use std::error::Error;
-
-#[async_trait]
-pub trait RepositoryClient: Any + Send + Sync {
-    async fn get_latest_commit(
-        &self,
-        repository: &crate::repository::Repository,
-        branch: &str,
-    ) -> Result<String, Box<dyn Error>>;
-}
diff --git a/crates/imagebumper/src/repository.rs b/crates/imagebumper/src/repository.rs
deleted file mode 100644
index 2f1a274..0000000
--- a/crates/imagebumper/src/repository.rs
+++ /dev/null
@@ -1,66 +0,0 @@
-use crate::clients::ClientSet;
-use crate::RepositoryClient;
-use std::error::Error;
-use url::Url;
-
-pub struct Repository<'a> {
-    pub owner: String,
-    pub name: String,
-    client: &'a dyn RepositoryClient,
-}
-
-impl<'a> Repository<'a> {
-    pub fn from_url(clientset: &'a ClientSet, url: &str) -> Result<Self, Box<dyn Error>> {
-        let url = url.trim_end_matches(".git");
-        let parsed_url = Url::parse(url)?;
-        let hostname = parsed_url.host_str().ok_or("Invalid repository URL")?;
-        let parts: Vec<&str> = parsed_url
-            .path_segments()
-            .ok_or("Invalid repository URL")?
-            .collect();
-        if parts.len() < 2 {
-            return Err("Invalid repository URL".into());
-        }
-
-        let client: &dyn RepositoryClient = match hostname {
-            "opendev.org" => &clientset.opendev,
-            "github.com" => &clientset.github,
-            _ => return Err("Unsupported repository host".into()),
-        };
-
-        Ok(Repository {
-            owner: parts[parts.len() - 2].to_string(),
-            name: parts[parts.len() - 1].to_string(),
-            client,
-        })
-    }
-
-    pub async fn get_latest_commit(&self, branch: &str) -> Result<String, Box<dyn Error>> {
-        self.client.get_latest_commit(self, branch).await
-    }
-}
-
-#[cfg(test)]
-mod tests {
-    use super::*;
-
-    #[tokio::test]
-    async fn test_from_url_for_opendev() {
-        let clientset = ClientSet::new();
-        let repo =
-            Repository::from_url(&clientset, "https://opendev.org/openstack/nova.git").unwrap();
-
-        assert_eq!(repo.owner, "openstack");
-        assert_eq!(repo.name, "nova");
-    }
-
-    #[tokio::test]
-    async fn test_from_url_for_github() {
-        let clientset = ClientSet::new();
-        let repo =
-            Repository::from_url(&clientset, "https://github.com/vexxhost/atmosphere.git").unwrap();
-
-        assert_eq!(repo.owner, "vexxhost");
-        assert_eq!(repo.name, "atmosphere");
-    }
-}
diff --git a/images/barbican/Dockerfile b/images/barbican/Dockerfile
index 0b836ab..cb535bc 100644
--- a/images/barbican/Dockerfile
+++ b/images/barbican/Dockerfile
@@ -3,6 +3,7 @@
 # Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
 
 FROM openstack-venv-builder AS build
+# renovate: name=openstack/barbican repo=https://opendev.org/openstack/barbican.git branch=stable/2023.2
 ARG BARBICAN_GIT_REF=00274b2f07d050c5b4571bfc0f4e5698acf678f1
 ADD --keep-git-dir=true https://opendev.org/openstack/barbican.git#${BARBICAN_GIT_REF} /src/barbican
 RUN git -C /src/barbican fetch --unshallow
diff --git a/images/cinder/Dockerfile b/images/cinder/Dockerfile
index 13540be..67cb282 100644
--- a/images/cinder/Dockerfile
+++ b/images/cinder/Dockerfile
@@ -3,6 +3,7 @@
 # Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
 
 FROM openstack-venv-builder AS build
+# renovate: name=openstack/cinder repo=https://opendev.org/openstack/cinder.git branch=stable/2023.2
 ARG CINDER_GIT_REF=9e667b02b2c20b4ada18c1a472be152956284d45
 ADD --keep-git-dir=true https://opendev.org/openstack/cinder.git#${CINDER_GIT_REF} /src/cinder
 RUN git -C /src/cinder fetch --unshallow
diff --git a/images/designate/Dockerfile b/images/designate/Dockerfile
index c248fe7..c19b770 100644
--- a/images/designate/Dockerfile
+++ b/images/designate/Dockerfile
@@ -3,6 +3,7 @@
 # Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
 
 FROM openstack-venv-builder AS build
+# renovate: name=openstack/designate repo=https://opendev.org/openstack/designate.git branch=stable/2023.2
 ARG DESIGNATE_GIT_REF=2c817b3d7f01de44023f195c6e8de8853683a54a
 ADD --keep-git-dir=true https://opendev.org/openstack/designate.git#${DESIGNATE_GIT_REF} /src/designate
 RUN git -C /src/designate fetch --unshallow
diff --git a/images/glance/Dockerfile b/images/glance/Dockerfile
index b336ce5..3decaf3 100644
--- a/images/glance/Dockerfile
+++ b/images/glance/Dockerfile
@@ -3,10 +3,13 @@
 # Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
 
 FROM openstack-venv-builder AS build
+# renovate: name=openstack/glance repo=https://opendev.org/openstack/glance.git branch=stable/2023.2
 ARG GLANCE_GIT_REF=835c89c711993c51aa8752d96b4c8effa1a97009
 ADD --keep-git-dir=true https://opendev.org/openstack/glance.git#${GLANCE_GIT_REF} /src/glance
 RUN git -C /src/glance fetch --unshallow
-ADD --keep-git-dir=true https://opendev.org/openstack/glance_store.git#stable/2023.2 /src/glance_store
+# renovate: name=openstack/glance_store repo=https://opendev.org/openstack/glance_store.git branch=stable/2023.2
+ARG GLANCE_STORE_GIT_REF=0e1e0be08fe07a43e4220e40df48e9a55f80df23
+ADD --keep-git-dir=true https://opendev.org/openstack/glance_store.git#${GLANCE_STORE_GIT_REF} /src/glance_store
 RUN git -C /src/glance_store fetch --unshallow
 RUN --mount=type=cache,mode=0755,target=/root/.cache/pip,sharing=private <<EOF bash -xe
 pip3 install \
diff --git a/images/heat/Dockerfile b/images/heat/Dockerfile
index 77852f4..cbb5786 100644
--- a/images/heat/Dockerfile
+++ b/images/heat/Dockerfile
@@ -3,6 +3,7 @@
 # Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
 
 FROM openstack-venv-builder AS build
+# renovate: name=openstack/heat repo=https://opendev.org/openstack/heat.git branch=stable/2023.2
 ARG HEAT_GIT_REF=39eca5de2e193f652792e4f7be2e5eb96dd3d853
 ADD --keep-git-dir=true https://opendev.org/openstack/heat.git#${HEAT_GIT_REF} /src/heat
 RUN git -C /src/heat fetch --unshallow
diff --git a/images/horizon/Dockerfile b/images/horizon/Dockerfile
index 0af08e3..28f9b74 100644
--- a/images/horizon/Dockerfile
+++ b/images/horizon/Dockerfile
@@ -3,23 +3,37 @@
 # Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
 
 FROM openstack-venv-builder AS build
+# renovate: name=openstack/horizon repo=https://opendev.org/openstack/horizon.git branch=stable/2023.2
 ARG HORIZON_GIT_REF=593ef9b56191676d0a85b55bd152c0c757fad2de
 ADD --keep-git-dir=true https://opendev.org/openstack/horizon.git#${HORIZON_GIT_REF} /src/horizon
 RUN git -C /src/horizon fetch --unshallow
-ADD --keep-git-dir=true https://opendev.org/openstack/designate-dashboard.git#stable/2023.2 /src/designate-dashboard
+# renovate: name=openstack/designate-dashboard repo=https://opendev.org/openstack/designate-dashboard.git branch=stable/2023.2
+ARG DESIGNATE_DASHBOARD_GIT_REF=d18391bbad37aafcd58a38787ea82b2ca8b492c7
+ADD --keep-git-dir=true https://opendev.org/openstack/designate-dashboard.git#${DESIGNATE_DASHBOARD_GIT_REF} /src/designate-dashboard
 RUN git -C /src/designate-dashboard fetch --unshallow
-ADD --keep-git-dir=true https://opendev.org/openstack/heat-dashboard.git#stable/2023.2 /src/heat-dashboard
+# renovate: name=openstack/heat-dashboard repo=https://opendev.org/openstack/heat-dashboard.git branch=stable/2023.2
+ARG HEAT_DASHBOARD_GIT_REF=2bbd7e87efc7b30af296eabb846b45feb435cd34
+ADD --keep-git-dir=true https://opendev.org/openstack/heat-dashboard.git#${HEAT_DASHBOARD_GIT_REF} /src/heat-dashboard
 RUN git -C /src/heat-dashboard fetch --unshallow
-ADD --keep-git-dir=true https://opendev.org/openstack/ironic-ui.git#stable/2023.2 /src/ironic-ui
+# renovate: name=openstack/ironic-ui repo=https://opendev.org/openstack/ironic-ui.git branch=stable/2023.2
+ARG IRONIC_UI_REF=98843d82b2e9483b36923f9d6c3a64d70e0f0199
+ADD --keep-git-dir=true https://opendev.org/openstack/ironic-ui.git#${IRONIC_UI_REF} /src/ironic-ui
 RUN git -C /src/ironic-ui fetch --unshallow
+# renovate: name=openstack/magnum-ui repo=https://opendev.org/openstack/magnum-ui.git branch=stable/2023.2
 ARG MAGNUM_UI_REF=b764229b378762e077349cc24eba689cfc8f9200
 ADD --keep-git-dir=true https://opendev.org/openstack/magnum-ui.git#${MAGNUM_UI_REF} /src/magnum-ui
 RUN git -C /src/magnum-ui fetch --unshallow
-ADD --keep-git-dir=true https://opendev.org/openstack/manila-ui.git#stable/2023.2 /src/manila-ui
+# renovate: name=openstack/manila-ui repo=https://opendev.org/openstack/manila-ui.git branch=stable/2023.2
+ARG MANILA_UI_REF=d28c06a52551206f194aaeadcc5fb861b5c2cf53
+ADD --keep-git-dir=true https://opendev.org/openstack/manila-ui.git#${MANILA_UI_REF} /src/manila-ui
 RUN git -C /src/manila-ui fetch --unshallow
-ADD --keep-git-dir=true https://opendev.org/openstack/neutron-vpnaas-dashboard.git#stable/2023.2 /src/neutron-vpnaas-dashboard
+# renovate: name=openstack/neutron-vpnaas-dashboard repo=https://opendev.org/openstack/neutron-vpnaas-dashboard.git branch=stable/2023.2
+ARG NEUTRON_VPNAAS_DASHBOARD_REF=f369617faa47e202fe78cae584ac957912fd4bab
+ADD --keep-git-dir=true https://opendev.org/openstack/neutron-vpnaas-dashboard.git#${NEUTRON_VPNAAS_DASHBOARD_REF} /src/neutron-vpnaas-dashboard
 RUN git -C /src/neutron-vpnaas-dashboard fetch --unshallow
-ADD --keep-git-dir=true https://opendev.org/openstack/octavia-dashboard.git#stable/2023.2 /src/octavia-dashboard
+# renovate: name=openstack/octavia-dashboard repo=https://opendev.org/openstack/octavia-dashboard.git branch=stable/2023.2
+ARG OCTAVIA_DASHBOARD_REF=734b8ea6d5c737d56425bd52f060e6af9b95f64d
+ADD --keep-git-dir=true https://opendev.org/openstack/octavia-dashboard.git#${OCTAVIA_DASHBOARD_REF} /src/octavia-dashboard
 RUN git -C /src/octavia-dashboard fetch --unshallow
 COPY patches/horizon /patches/horizon
 RUN git -C /src/horizon apply --verbose /patches/horizon/*
diff --git a/images/ironic/Dockerfile b/images/ironic/Dockerfile
index 224cbc7..8d270d2 100644
--- a/images/ironic/Dockerfile
+++ b/images/ironic/Dockerfile
@@ -3,6 +3,7 @@
 # Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
 
 FROM openstack-venv-builder AS build
+# renovate: name=openstack/ironic repo=https://opendev.org/openstack/ironic.git branch=stable/2023.2
 ARG IRONIC_GIT_REF=009f73717cee1c4d523c75d9232cc11902c9173a
 ADD --keep-git-dir=true https://opendev.org/openstack/ironic.git#${IRONIC_GIT_REF} /src/ironic
 RUN git -C /src/ironic fetch --unshallow
diff --git a/images/keystone/Dockerfile b/images/keystone/Dockerfile
index db6d202..cd11c6f 100644
--- a/images/keystone/Dockerfile
+++ b/images/keystone/Dockerfile
@@ -3,6 +3,7 @@
 # Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
 
 FROM openstack-venv-builder AS build
+# renovate: name=openstack/keystone repo=https://opendev.org/openstack/keystone.git branch=stable/2023.2
 ARG KEYSTONE_GIT_REF=7697140fc23cee66b17050651813ebe902671256
 ADD --keep-git-dir=true https://opendev.org/openstack/keystone.git#${KEYSTONE_GIT_REF} /src/keystone
 RUN git -C /src/keystone fetch --unshallow
diff --git a/images/kubernetes-entrypoint/Dockerfile b/images/kubernetes-entrypoint/Dockerfile
index 18a5ac3..b8f81df 100644
--- a/images/kubernetes-entrypoint/Dockerfile
+++ b/images/kubernetes-entrypoint/Dockerfile
@@ -3,6 +3,7 @@
 # Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
 
 FROM golang AS build
+# renovate: name=kubernetes-entrypoint repo=https://opendev.org/airship/kubernetes-entrypoint.git branch=stable/2023.2
 ARG KUBERNETES_ENTRYPOINT_GIT_REF=4fbcf7ce324dc66e78480f73035e31434cfea1e8
 ADD https://opendev.org/airship/kubernetes-entrypoint.git#${KUBERNETES_ENTRYPOINT_GIT_REF} /src
 WORKDIR /src
diff --git a/images/magnum/Dockerfile b/images/magnum/Dockerfile
index a41ed67..11c6496 100644
--- a/images/magnum/Dockerfile
+++ b/images/magnum/Dockerfile
@@ -11,6 +11,7 @@
 RUN mv /${TARGETOS}-${TARGETARCH}/helm /usr/bin/helm
 
 FROM openstack-venv-builder AS build
+# renovate: name=openstack/magnum repo=https://opendev.org/openstack/magnum.git branch=stable/2023.2
 ARG MAGNUM_GIT_REF=f3cfcfd8f1d472950642e7103ab59853f5ee63da
 ADD --keep-git-dir=true https://opendev.org/openstack/magnum.git#${MAGNUM_GIT_REF} /src/magnum
 RUN git -C /src/magnum fetch --unshallow
diff --git a/images/manila/Dockerfile b/images/manila/Dockerfile
index 500c107..63dc06f 100644
--- a/images/manila/Dockerfile
+++ b/images/manila/Dockerfile
@@ -3,6 +3,7 @@
 # Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
 
 FROM openstack-venv-builder AS build
+# renovate: name=openstack/manila repo=https://opendev.org/openstack/manila.git branch=stable/2023.2
 ARG MANILA_GIT_REF=b4d1e6e9e6e9f77d5fb74c499badae92c271e1ba
 ADD --keep-git-dir=true https://opendev.org/openstack/manila.git#${MANILA_GIT_REF} /src/manila
 RUN git -C /src/manila fetch --unshallow
diff --git a/images/netoffload/Dockerfile b/images/netoffload/Dockerfile
index de0da43..8df7f4c 100644
--- a/images/netoffload/Dockerfile
+++ b/images/netoffload/Dockerfile
@@ -3,6 +3,7 @@
 # Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
 
 FROM golang AS build
+# renovate: name=vexxhost/netoffload repo=https://github.com/vexxhost/netoffload.git branch=main
 ARG NETOFFLOAD_GIT_REF=94b8c0fdb0b83bd1b7e14b9a58077a047c78a800
 ADD https://github.com/vexxhost/netoffload.git#${NETOFFLOAD_GIT_REF} /src
 WORKDIR /src
diff --git a/images/neutron/Dockerfile b/images/neutron/Dockerfile
index d29e3d5..ad7f757 100644
--- a/images/neutron/Dockerfile
+++ b/images/neutron/Dockerfile
@@ -3,20 +3,25 @@
 # Atmosphere-Rebuild-Time: 2025-01-24T11:51:19Z
 
 FROM openstack-venv-builder AS build
+# renovate: name=openstack/neutron repo=https://opendev.org/openstack/neutron.git branch=stable/2023.2
 ARG NEUTRON_GIT_REF=81c8fd369b5ba58e53b4af21afbb95e2897dc42e
 ADD --keep-git-dir=true https://opendev.org/openstack/neutron.git#${NEUTRON_GIT_REF} /src/neutron
 RUN git -C /src/neutron fetch --unshallow
 COPY patches/neutron /patches/neutron
 RUN git -C /src/neutron apply --verbose /patches/neutron/*
-ARG NEUTRON_VPNAAS_GIT_REF=1d1b1282542516a615eba90a25faf1e9b278fc55
+# renovate: name=openstack/neutron-vpnaas repo=https://opendev.org/openstack/neutron-vpnaas.git branch=stable/2023.2
+ARG NEUTRON_VPNAAS_GIT_REF=a19ab5265562978eb9dc61a18d2f05cdf73aa05a
 ADD --keep-git-dir=true https://opendev.org/openstack/neutron-vpnaas.git#${NEUTRON_VPNAAS_GIT_REF} /src/neutron-vpnaas
 RUN git -C /src/neutron-vpnaas fetch --unshallow
-ARG NETWORKING_BAREMETAL_GIT_REF=951eb2339591cfa59ac168792ebe3a65d49791c8
+# renovate: name=openstack/networking-baremetal repo=https://opendev.org/openstack/networking-baremetal.git branch=stable/2023.2
+ARG NETWORKING_BAREMETAL_GIT_REF=7df6ca9eca836b7ba6598005d736f6a853983537
 ADD --keep-git-dir=true https://opendev.org/openstack/networking-baremetal.git#${NETWORKING_BAREMETAL_GIT_REF} /src/networking-baremetal
 RUN git -C /src/networking-baremetal fetch --unshallow
+# renovate: name=vexxhost/neutron-policy-server repo=https://github.com/vexxhost/neutron-policy-server.git branch=main
 ARG POLICY_SERVER_GIT_REF=41c862a7e15955195ebac56a48ae98137aac146d
 ADD --keep-git-dir=true https://github.com/vexxhost/neutron-policy-server.git#${POLICY_SERVER_GIT_REF} /src/neutron-policy-server
 RUN git -C /src/neutron-policy-server fetch --unshallow
+# renovate: name=vexxhost/neutron-ovn-network-logging-parser repo=https://github.com/vexxhost/neutron-ovn-network-logging-parser.git branch=main
 ARG LOG_PASER_GIT_REF=9bc923c1294864ec709c538ba5c309065ef710d5
 ADD --keep-git-dir=true https://github.com/vexxhost/neutron-ovn-network-logging-parser.git#${LOG_PASER_GIT_REF} /src/neutron-ovn-network-logging-parser
 RUN git -C /src/neutron-ovn-network-logging-parser fetch --unshallow
diff --git a/images/nova/Dockerfile b/images/nova/Dockerfile
index 31bf2a8..73fb9ee 100644
--- a/images/nova/Dockerfile
+++ b/images/nova/Dockerfile
@@ -3,9 +3,11 @@
 # Atmosphere-Rebuild-Time: 2024-12-17T01:27:44Z
 
 FROM openstack-venv-builder AS build
+# renovate: name=openstack/nova repo=https://opendev.org/openstack/nova.git branch=stable/2023.2
 ARG NOVA_GIT_REF=70a435fd519a0ebcc3ac9ad5254fefbf19c93e48
 ADD --keep-git-dir=true https://opendev.org/openstack/nova.git#${NOVA_GIT_REF} /src/nova
 RUN git -C /src/nova fetch --unshallow
+# renovate: name=vexxhost/nova-scheduler-filters repo=https://github.com/vexxhost/nova-scheduler-filters.git branch=main
 ARG SCHEDULER_FILTERS_GIT_REF=77ed1c2ca70f4166a6d0995c7d3d90822f0ca6c0
 ADD --keep-git-dir=true https://github.com/vexxhost/nova-scheduler-filters.git#${SCHEDULER_FILTERS_GIT_REF} /src/nova-scheduler-filters
 RUN git -C /src/nova-scheduler-filters fetch --unshallow
diff --git a/images/octavia/Dockerfile b/images/octavia/Dockerfile
index 1bf1970..1eca4c4 100644
--- a/images/octavia/Dockerfile
+++ b/images/octavia/Dockerfile
@@ -3,10 +3,13 @@
 # Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
 
 FROM openstack-venv-builder AS build
+# renovate: name=openstack/octavia repo=https://opendev.org/openstack/octavia.git branch=stable/2023.2
 ARG OCTAVIA_GIT_REF=8832cefaa0e5b6ec1e2db8fe77c3995adce0ca6a
 ADD --keep-git-dir=true https://opendev.org/openstack/octavia.git#${OCTAVIA_GIT_REF} /src/octavia
 RUN git -C /src/octavia fetch --unshallow
-ADD --keep-git-dir=true https://opendev.org/openstack/ovn-octavia-provider.git#stable/2023.2 /src/ovn-octavia-provider
+# renovate: name=openstack/ovn-octavia-provider repo=https://opendev.org/openstack/ovn-octavia-provider.git branch=stable/2023.2
+ARG OVN_OCTAVIA_PROVIDER_GIT_REF=f767d5046fe05dde331816a15a5178e4f9880ff7
+ADD --keep-git-dir=true https://opendev.org/openstack/ovn-octavia-provider.git#${OVN_OCTAVIA_PROVIDER_GIT_REF} /src/ovn-octavia-provider
 RUN git -C /src/ovn-octavia-provider fetch --unshallow
 RUN --mount=type=cache,mode=0755,target=/root/.cache/pip,sharing=private <<EOF bash -xe
 pip3 install \
diff --git a/images/openstack-venv-builder/Dockerfile b/images/openstack-venv-builder/Dockerfile
index 3197a20..26d2365 100644
--- a/images/openstack-venv-builder/Dockerfile
+++ b/images/openstack-venv-builder/Dockerfile
@@ -6,6 +6,7 @@
 ARG RELEASE
 
 FROM ubuntu-cloud-archive AS requirements
+# renovate: name=openstack/requirements repo=https://opendev.org/openstack/requirements.git branch=stable/2023.2
 ARG REQUIREMENTS_GIT_REF=b14cdf8aeba6b7fba4ed85ae4e140d1f52a4038c
 ADD --keep-git-dir=true https://opendev.org/openstack/requirements.git#${REQUIREMENTS_GIT_REF} /src/requirements
 RUN cp /src/requirements/upper-constraints.txt /upper-constraints.txt
diff --git a/images/placement/Dockerfile b/images/placement/Dockerfile
index 237511e..a3ccb53 100644
--- a/images/placement/Dockerfile
+++ b/images/placement/Dockerfile
@@ -3,6 +3,7 @@
 # Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
 
 FROM openstack-venv-builder AS build
+# renovate: name=openstack/placement repo=https://opendev.org/openstack/placement.git branch=stable/2023.2
 ARG PLACEMENT_GIT_REF=a361622d749d3b24aad638ec1b03a7d7124a87b3
 ADD --keep-git-dir=true https://opendev.org/openstack/placement.git#${PLACEMENT_GIT_REF} /src/placement
 RUN git -C /src/placement fetch --unshallow
diff --git a/images/tempest/Dockerfile b/images/tempest/Dockerfile
index 1693de0..6c4ad83 100644
--- a/images/tempest/Dockerfile
+++ b/images/tempest/Dockerfile
@@ -3,28 +3,46 @@
 # Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
 
 FROM golang AS octavia-test-server
-ADD --keep-git-dir=true https://opendev.org/openstack/octavia-tempest-plugin.git#875c38f0355ecd31ce3a4ddf654d3adb8ea2370d /src
+# renovate: name=openstack/octavia-tempest-plugin repo=https://opendev.org/openstack/octavia-tempest-plugin.git branch=master
+ARG OCTAVIA_TEMPEST_PLUGIN_GIT_REF=875c38f0355ecd31ce3a4ddf654d3adb8ea2370d
+ADD --keep-git-dir=true https://opendev.org/openstack/octavia-tempest-plugin.git#${OCTAVIA_TEMPEST_PLUGIN_GIT_REF} /src
 RUN GO111MODULE=off CGO_ENABLED=0 GOOS=linux go build \
     -a -ldflags '-s -w -extldflags -static' \
     -o /build/test_server.bin \
     /src/octavia_tempest_plugin/contrib/test_server/test_server.go
 
 FROM openstack-venv-builder AS build
-ADD --keep-git-dir=true https://opendev.org/openstack/requirements.git#7a304c74f76991597bfe7eb0666b2b2a2bf2ffa3 /src/requirements
+# renovate: name=openstack/requirements repo=https://opendev.org/openstack/requirements.git branch=master
+ARG REQUIREMENTS_GIT_REF=7a304c74f76991597bfe7eb0666b2b2a2bf2ffa3
+ADD --keep-git-dir=true https://opendev.org/openstack/requirements.git#${REQUIREMENTS_GIT_REF} /src/requirements
 RUN git -C /src/requirements fetch --unshallow
-ADD --keep-git-dir=true https://opendev.org/openstack/tempest.git#50bd5aa470db2958018513ab43696dbb2596b30f /src/tempest
+# renovate: name=openstack/tempest repo=https://opendev.org/openstack/tempest.git branch=master
+ARG TEMPEST_GIT_REF=50bd5aa470db2958018513ab43696dbb2596b30f
+ADD --keep-git-dir=true https://opendev.org/openstack/tempest.git#${TEMPEST_GIT_REF} /src/tempest
 RUN git -C /src/tempest fetch --unshallow
-ADD --keep-git-dir=true https://opendev.org/openstack/barbican-tempest-plugin.git#2cd185133a86242c58d721e66c2db753a369fe60 /src/barbican-tempest-plugin
+# renovate: name=openstack/barbican-tempest-plugin repo=https://opendev.org/openstack/barbican-tempest-plugin.git branch=master
+ARG BARBICAN_TEMPEST_PLUGIN_GIT_REF=2cd185133a86242c58d721e66c2db753a369fe60
+ADD --keep-git-dir=true https://opendev.org/openstack/barbican-tempest-plugin.git#${BARBICAN_TEMPEST_PLUGIN_GIT_REF} /src/barbican-tempest-plugin
 RUN git -C /src/barbican-tempest-plugin fetch --unshallow
-ADD --keep-git-dir=true https://opendev.org/openstack/cinder-tempest-plugin.git#bb5594c061370316bfc881e24d11b3350fb0aef9 /src/cinder-tempest-plugin
+# renovate: name=openstack/cinder-tempest-plugin repo=https://opendev.org/openstack/cinder-tempest-plugin.git branch=master
+ARG CINDER_TEMPEST_PLUGIN_GIT_REF=bb5594c061370316bfc881e24d11b3350fb0aef9
+ADD --keep-git-dir=true https://opendev.org/openstack/cinder-tempest-plugin.git#${CINDER_TEMPEST_PLUGIN_GIT_REF} /src/cinder-tempest-plugin
 RUN git -C /src/cinder-tempest-plugin fetch --unshallow
-ADD --keep-git-dir=true https://opendev.org/openstack/heat-tempest-plugin.git#d2db170988fe1ad3aedda997377b768a83ba9fe9 /src/heat-tempest-plugin
+# renovate: name=openstack/heat-tempest-plugin repo=https://opendev.org/openstack/heat-tempest-plugin.git branch=master
+ARG HEAT_TEMPEST_PLUGIN_GIT_REF=d2db170988fe1ad3aedda997377b768a83ba9fe9
+ADD --keep-git-dir=true https://opendev.org/openstack/heat-tempest-plugin.git#${HEAT_TEMPEST_PLUGIN_GIT_REF} /src/heat-tempest-plugin
 RUN git -C /src/heat-tempest-plugin fetch --unshallow
-ADD --keep-git-dir=true https://opendev.org/openstack/keystone-tempest-plugin.git#f3c89425613f333a1152a7d420e5d681154f7ad1 /src/keystone-tempest-plugin
+# renovate: name=openstack/keystone-tempest-plugin repo=https://opendev.org/openstack/keystone-tempest-plugin.git branch=master
+ARG KEYSTONE_TEMPEST_PLUGIN_GIT_REF=f3c89425613f333a1152a7d420e5d681154f7ad1
+ADD --keep-git-dir=true https://opendev.org/openstack/keystone-tempest-plugin.git#${KEYSTONE_TEMPEST_PLUGIN_GIT_REF} /src/keystone-tempest-plugin
 RUN git -C /src/keystone-tempest-plugin fetch --unshallow
-ADD --keep-git-dir=true https://opendev.org/openstack/neutron-tempest-plugin.git#ed3744eba062bffa318f786c1370ecd2d0dae130 /src/neutron-tempest-plugin
+# renovate: name=openstack/neutron-tempest-plugin repo=https://opendev.org/openstack/neutron-tempest-plugin.git branch=master
+ARG NEUTRON_TEMPEST_PLUGIN_GIT_REF=ed3744eba062bffa318f786c1370ecd2d0dae130
+ADD --keep-git-dir=true https://opendev.org/openstack/neutron-tempest-plugin.git#${NEUTRON_TEMPEST_PLUGIN_GIT_REF} /src/neutron-tempest-plugin
 RUN git -C /src/neutron-tempest-plugin fetch --unshallow
-ADD --keep-git-dir=true https://opendev.org/openstack/octavia-tempest-plugin.git#875c38f0355ecd31ce3a4ddf654d3adb8ea2370d /src/octavia-tempest-plugin
+# renovate: name=openstack/octavia-tempest-plugin repo=https://opendev.org/openstack/octavia-tempest-plugin.git branch=master
+ARG OCTAVIA_TEMPEST_PLUGIN_GIT_REF=875c38f0355ecd31ce3a4ddf654d3adb8ea2370d
+ADD --keep-git-dir=true https://opendev.org/openstack/octavia-tempest-plugin.git#${OCTAVIA_TEMPEST_PLUGIN_GIT_REF} /src/octavia-tempest-plugin
 RUN git -C /src/octavia-tempest-plugin fetch --unshallow
 RUN --mount=type=cache,mode=0755,target=/root/.cache/pip,sharing=private <<EOF bash -xe
 pip3 install \
diff --git a/justfile b/justfile
deleted file mode 100644
index e79c16f..0000000
--- a/justfile
+++ /dev/null
@@ -1,5 +0,0 @@
-default:
-  just --list
-
-bump-magnum-cluster-api:
-  cargo run --bin mcapibumper
diff --git a/renovate.json b/renovate.json
new file mode 100644
index 0000000..2849369
--- /dev/null
+++ b/renovate.json
@@ -0,0 +1,59 @@
+{
+  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+  "extends": ["config:base"],
+  "baseBranches": ["main", "/^stable\\/.*/"],
+  "commitBody": "Skip-Release-Notes",
+  "prHourlyLimit": 10,
+  "packageRules": [
+    {
+      "enabled": false,
+      "matchPackagePatterns": ["*"]
+    },
+    {
+      "enabled": true,
+      "matchDatasources": ["pypi"],
+      "matchPackageNames": ["magnum-cluster-api"]
+    },
+    {
+      "enabled": true,
+      "matchDatasources": ["git-refs"]
+    },
+    {
+      "groupName": "tempest",
+      "matchDatasources": ["git-refs"],
+      "matchFileNames": ["images/tempest/Dockerfile"]
+    },
+    {
+      "groupName": "openstack",
+      "matchDatasources": ["git-refs"],
+      "matchPackageNames": ["https://opendev.org/openstack/**"]
+    }
+  ],
+  "customManagers": [
+    {
+      "customType": "regex",
+      "fileMatch": ["Dockerfile"],
+      "matchStrings": [
+        "# renovate: name=(?<depName>.+?) repo=(?<packageName>.+?) branch=(?<currentValue>.+?)\nARG .+?_GIT_REF=(?<currentDigest>.+?)\n"
+      ],
+      "datasourceTemplate": "git-refs"
+    },
+    {
+      "customType": "regex",
+      "fileMatch": ["images/magnum/Dockerfile"],
+      "matchStrings": ["magnum-cluster-api==(?<currentValue>.*?)\\s"],
+      "datasourceTemplate": "pypi",
+      "depNameTemplate": "magnum-cluster-api",
+      "versioningTemplate": "semver"
+    },
+    {
+      "customType": "regex",
+      "fileMatch": ["images/neutron/Dockerfile"],
+      "matchStrings": ["POLICY_SERVER_GIT_REF=(?<currentDigest>.*?)\\n"],
+      "datasourceTemplate": "git-refs",
+      "depNameTemplate": "neutron-policy-server",
+      "packageNameTemplate": "https://review.vexxhost.dev/neutron-policy-server",
+      "currentValueTemplate": "main"
+    }
+  ]
+}
diff --git a/src/bin/imagebumper.rs b/src/bin/imagebumper.rs
deleted file mode 100644
index 9958331..0000000
--- a/src/bin/imagebumper.rs
+++ /dev/null
@@ -1,176 +0,0 @@
-use clap::Parser;
-use imagebumper::clients::ClientSet;
-use imagebumper::repository::Repository;
-use log::error;
-use log::{info, warn};
-use regex::Regex;
-use std::collections::HashMap;
-use std::path::{Path, PathBuf};
-use tokio::fs;
-use tokio::io::AsyncWriteExt;
-
-#[derive(Parser, Debug)]
-#[clap(author, version, about)]
-struct Args {
-    #[clap(short, long)]
-    branch: String,
-
-    #[clap(required = true)]
-    files: Vec<PathBuf>,
-}
-
-fn get_repo_map(clientset: &ClientSet) -> HashMap<&'static str, Repository> {
-    let mut map = HashMap::new();
-
-    map.insert(
-        "BARBICAN_GIT_REF",
-        Repository::from_url(clientset, "https://opendev.org/openstack/barbican.git").unwrap(),
-    );
-    map.insert(
-        "CINDER_GIT_REF",
-        Repository::from_url(clientset, "https://opendev.org/openstack/cinder.git").unwrap(),
-    );
-    map.insert(
-        "DESIGNATE_GIT_REF",
-        Repository::from_url(clientset, "https://opendev.org/openstack/designate.git").unwrap(),
-    );
-    map.insert(
-        "GLANCE_GIT_REF",
-        Repository::from_url(clientset, "https://opendev.org/openstack/glance.git").unwrap(),
-    );
-    map.insert(
-        "HEAT_GIT_REF",
-        Repository::from_url(clientset, "https://opendev.org/openstack/heat.git").unwrap(),
-    );
-    map.insert(
-        "HORIZON_GIT_REF",
-        Repository::from_url(clientset, "https://opendev.org/openstack/horizon.git").unwrap(),
-    );
-    map.insert(
-        "IRONIC_GIT_REF",
-        Repository::from_url(clientset, "https://opendev.org/openstack/ironic.git").unwrap(),
-    );
-    map.insert(
-        "KEYSTONE_GIT_REF",
-        Repository::from_url(clientset, "https://opendev.org/openstack/keystone.git").unwrap(),
-    );
-    map.insert(
-        "KUBERNETES_ENTRYPOINT_GIT_REF",
-        Repository::from_url(clientset, "https://opendev.org/airship/kubernetes-entrypoint").unwrap(),
-    );
-    map.insert(
-        "MAGNUM_GIT_REF",
-        Repository::from_url(clientset, "https://opendev.org/openstack/magnum.git").unwrap(),
-    );
-    map.insert(
-        "MANILA_GIT_REF",
-        Repository::from_url(clientset, "https://opendev.org/openstack/manila.git").unwrap(),
-    );
-    map.insert(
-        "NETOFFLOAD_GIT_REF",
-        Repository::from_url(clientset, "https://github.com/vexxhost/netoffload.git").unwrap(),
-    );
-    map.insert(
-        "NEUTRON_GIT_REF",
-        Repository::from_url(clientset, "https://opendev.org/openstack/neutron.git").unwrap(),
-    );
-    map.insert(
-        "NEUTRON_VPNAAS_GIT_REF",
-        Repository::from_url(clientset, "https://opendev.org/openstack/neutron-vpnaas.git").unwrap(),
-    );
-    map.insert(
-        "NETWORKING_BAREMETAL_GIT_REF",
-        Repository::from_url(clientset, "https://opendev.org/openstack/networking-baremetal.git").unwrap(),
-    );
-    map.insert(
-        "POLICY_SERVER_GIT_REF",
-        Repository::from_url(clientset, "https://github.com/vexxhost/neutron-policy-server.git").unwrap(),
-    );
-    map.insert(
-        "LOG_PASER_GIT_REF",
-        Repository::from_url(clientset, "https://github.com/vexxhost/neutron-ovn-network-logging-parser.git")
-            .unwrap(),
-    );
-    map.insert(
-        "NOVA_GIT_REF",
-        Repository::from_url(clientset, "https://opendev.org/openstack/nova.git").unwrap(),
-    );
-    map.insert(
-        "SCHEDULER_FILTERS_GIT_REF",
-        Repository::from_url(clientset, "https://github.com/vexxhost/nova-scheduler-filters.git").unwrap(),
-    );
-    map.insert(
-        "OCTAVIA_GIT_REF",
-        Repository::from_url(clientset, "https://opendev.org/openstack/octavia.git").unwrap(),
-    );
-    map.insert(
-        "REQUIREMENTS_GIT_REF",
-        Repository::from_url(clientset, "https://opendev.org/openstack/requirements.git").unwrap(),
-    );
-    map.insert(
-        "PLACEMENT_GIT_REF",
-        Repository::from_url(clientset, "https://opendev.org/openstack/placement.git").unwrap(),
-    );
-    map.insert(
-        "STAFFELN_GIT_REF",
-        Repository::from_url(clientset, "https://github.com/vexxhost/staffeln.git").unwrap(),
-    );
-    map.insert(
-        "TEMPEST_GIT_REF",
-        Repository::from_url(clientset, "https://opendev.org/openstack/tempest.git").unwrap(),
-    );
-
-    map
-}
-
-async fn update_dockerfile(clientset: &ClientSet, path: &Path, branch: &str) -> Result<(), Box<dyn std::error::Error>> {
-    let content = fs::read_to_string(path).await?;
-    let re = Regex::new(r"(ARG\s+(\w+_GIT_REF)=)(\S+)")?;
-    let mut new_content = content.clone();
-
-    for cap in re.captures_iter(&content) {
-        let arg_name = cap.get(2).unwrap().as_str();
-        if let Some(repo) = get_repo_map(clientset).get(arg_name) {
-            let new_git_ref = match repo.get_latest_commit(branch).await {
-                Ok(commit) => commit,
-                Err(e) => {
-                    error!(arg = arg_name, error = e.to_string().as_str().trim(); "Failed to get latest commit");
-                    continue;
-                }
-            };
-
-            new_content = new_content.replace(
-                &format!("{}{}", &cap[1], &cap[3]),
-                &format!("{}{}", &cap[1], new_git_ref),
-            );
-
-            info!(arg = arg_name, path = path.to_str(), ref = new_git_ref.as_str(); "Updated Dockerfile");
-        } else {
-            error!(arg = arg_name; "No repository URL found.");
-        }
-    }
-
-    if new_content != content {
-        let mut file = fs::File::create(path).await?;
-        file.write_all(new_content.as_bytes()).await?;
-    }
-    Ok(())
-}
-
-#[tokio::main]
-async fn main() -> Result<(), Box<dyn std::error::Error>> {
-    env_logger::init();
-    let args = Args::parse();
-
-    let clientset = ClientSet::new();
-
-    for file_path in args.files {
-        if file_path.is_file() {
-            update_dockerfile(&clientset, &file_path, &args.branch).await?;
-        } else {
-            warn!("{:?} is not a file, skipping", file_path);
-        }
-    }
-
-    Ok(())
-}
diff --git a/src/bin/mcapibumper.rs b/src/bin/mcapibumper.rs
deleted file mode 100644
index 3a0adbc..0000000
--- a/src/bin/mcapibumper.rs
+++ /dev/null
@@ -1,71 +0,0 @@
-use git2::Repository;
-use indoc::indoc;
-use regex::Regex;
-use serde::Deserialize;
-use std::path::Path;
-use tokio::fs;
-
-#[derive(Deserialize)]
-struct PyPiPackageResponse {
-    info: PyPiPackageInfo,
-}
-
-#[derive(Deserialize)]
-struct PyPiPackageInfo {
-    version: String,
-}
-
-#[tokio::main]
-async fn main() -> Result<(), Box<dyn std::error::Error>> {
-    let version = reqwest::get("https://pypi.org/pypi/magnum-cluster-api/json")
-        .await?
-        .json::<PyPiPackageResponse>()
-        .await?
-        .info
-        .version;
-
-    // Dockerfile
-    let path = "images/magnum/Dockerfile";
-    let content = fs::read_to_string(path).await?;
-    let re = Regex::new(r"(magnum-cluster-api==)(\S+)")?;
-    let updated = re.replace(&content, format!("${{1}}{}", version));
-    fs::write(path, updated.into_owned()).await?;
-
-    // Release notes
-    let version_hash = format!("{:x}", md5::compute(&version));
-    let release_note_path = format!("releasenotes/notes/bump-mcapi-{}.yaml", &version_hash[..16]);
-    let release_note = format!(
-        indoc!(
-            r#"
-            fixes:
-              - The Cluster API driver for Magnum has been bumped to {} to improve
-                stability, fix bugs and add new features.
-            "#
-        ),
-        version
-    );
-    fs::write(&release_note_path, &release_note).await?;
-
-    // Git commit
-    let repo = Repository::discover(".")?;
-    let mut index = repo.index()?;
-    index.add_path(Path::new(path))?;
-    index.add_path(Path::new(&release_note_path))?;
-    index.write()?;
-    let tree_id = index.write_tree()?;
-    let tree = repo.find_tree(tree_id)?;
-    let parent = repo.head()?.peel_to_commit()?;
-    let sig = repo.signature()?;
-    let mut commit_message = format!("Bump Magnum Cluster API to {}", version);
-    git2_hooks::hooks_commit_msg(&repo, None, &mut commit_message)?;
-    repo.commit(
-        Some("HEAD"),
-        &sig,
-        &sig,
-        commit_message.as_str(),
-        &tree,
-        &[&parent],
-    )?;
-
-    Ok(())
-}