Skip to content

Commit 50d7e9e

Browse files
committed
dynamically generate reload tasks based on debug versions of quickstart configs
1 parent 87f8059 commit 50d7e9e

File tree

3 files changed

+56
-40
lines changed

3 files changed

+56
-40
lines changed

docker/build.gradle

+47-34
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,25 @@ ext {
8080
preserveVolumes: true
8181
]
8282
]
83+
84+
// only for debug variants of quickstart to enable <variant>Reload tasks.
85+
// The actual service name needs the profile to be appended, <container-name>-<profile>
86+
moduleToContainer = [
87+
':metadata-service:war': 'datahub-gms',
88+
':datahub-frontend': 'frontend',
89+
':datahub-upgrade': 'system-update',
90+
':metadata-jobs:mce-consumer-job': 'datahub-mce-consumer',
91+
':metadata-jobs:mae-consumer-job': 'datahub-mae-consumer',
92+
93+
]
8394
}
8495

8596
// Register all quickstart tasks
8697
quickstart_configs.each { taskName, config ->
87-
tasks.register(taskName)
98+
tasks.register(taskName) {
99+
group = 'quickstart'
100+
}
101+
88102
}
89103

90104
// Dynamically create all quickstart tasks and configurations
@@ -169,6 +183,7 @@ tasks.register('minDockerCompose2.20', Exec) {
169183
}
170184

171185
tasks.register('quickstartNuke') {
186+
group = 'quickstart'
172187
doFirst {
173188
quickstart_configs.each { taskName, config ->
174189
dockerCompose."${taskName}".removeVolumes = !config.preserveVolumes
@@ -178,6 +193,7 @@ tasks.register('quickstartNuke') {
178193
}
179194

180195
tasks.register('quickstartDown') {
196+
group = 'quickstart'
181197
finalizedBy(tasks.withType(ComposeDownForced))
182198
}
183199

@@ -186,39 +202,36 @@ tasks.withType(ComposeUp).configureEach {
186202
dependsOn tasks.named("minDockerCompose2.20")
187203
}
188204

189-
task debugReload(type: Exec) {
190-
//TODO: Generate *reloadTasks for all quickStart configs. Need to move the moduleToContainer to ext and define mappings for all containers.
191-
// Map of module paths to their corresponding container names
192-
def moduleToContainer = [
193-
':metadata-service:war': 'datahub-gms-debug',
194-
':datahub-upgrade': 'system-update-debug',
195-
':datahub-frontend': 'frontend-debug'
196-
]
197-
198-
doFirst {
199-
// Get all tasks that were executed as part of this build
200-
def executedTasks = project.gradle.taskGraph.allTasks.findAll { it.state.executed }
201-
202-
// Find which modules actually had work done
203-
def containersToRestart = []
204-
moduleToContainer.each { modulePath, containerName ->
205-
def moduleProject = project.project(modulePath)
206-
def dockerPrepareTask = moduleProject.tasks.findByName('dockerPrepare')
207-
208-
if (dockerPrepareTask && executedTasks.contains(dockerPrepareTask) && !dockerPrepareTask.state.upToDate) {
209-
containersToRestart << containerName
205+
// Register all quickstart Reload tasks. For quickstartDebug, the reload task is DebugReload. (Taskname without quickstart prefix)
206+
quickstart_configs.each { taskName, config ->
207+
if (config.isDebug) {
208+
def reloadTaskName = taskName.replaceFirst(/^quickstart/, "")
209+
tasks.register("${reloadTaskName}Reload", Exec) {
210+
dependsOn tasks.named("${taskName}PrepareAll")
211+
group = 'quickstart'
212+
description = "Build and reload only changed containers for the ${taskName} task"
213+
doFirst {
214+
def executedTasks = project.gradle.taskGraph.allTasks.findAll { it.state.executed }
215+
def containersToRestart = []
216+
217+
moduleToContainer.each { modulePath, containerName ->
218+
def moduleProject = project.project(modulePath)
219+
def dockerPrepareTask = moduleProject.tasks.findByName('dockerPrepare')
220+
221+
if (dockerPrepareTask && executedTasks.contains(dockerPrepareTask) && !dockerPrepareTask.state.upToDate) {
222+
containersToRestart << "${containerName}-${config.profile}"
223+
}
224+
}
225+
226+
// Only restart containers that had their modules rebuilt
227+
if (containersToRestart) {
228+
def cmd = ["docker compose -p datahub --profile ${config.profile}"] + ['-f', compose_base] + ['restart'] + containersToRestart
229+
commandLine 'bash', '-c', cmd.join(" ")
230+
} else {
231+
// If no containers need restart, make this a no-op
232+
commandLine 'bash', '-c', 'echo "No containers need restarting - all modules are up to date"'
233+
}
210234
}
211235
}
212-
213-
// Only restart containers that had their modules rebuilt
214-
if (containersToRestart) {
215-
def cmd = ['docker compose -p datahub --profile debug'] + ['-f', compose_base] + ['restart'] + containersToRestart
216-
commandLine 'bash', '-c', cmd.join(" ")
217-
} else {
218-
// If no containers need restart, make this a no-op
219-
commandLine 'bash', '-c', 'echo "No containers need restarting - all modules are up to date"'
220-
}
221236
}
222-
223-
dependsOn tasks.named("quickstartDebugPrepareAll")
224-
}
237+
}

docker/profiles/docker-compose.frontend.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ services:
9696
profiles:
9797
- debug-consumers
9898
depends_on:
99-
system-update-debug:
99+
system-update-debug-consumers:
100100
condition: service_completed_successfully
101101
frontend-debug-neo4j:
102102
<<: *datahub-frontend-service-dev

docker/profiles/docker-compose.gms.yml

+8-5
Original file line numberDiff line numberDiff line change
@@ -248,19 +248,22 @@ services:
248248
condition: service_completed_successfully
249249
kafka-setup:
250250
condition: service_completed_successfully
251-
system-update-debug:
251+
system-update-debug: &system-update-debug
252252
<<: *datahub-system-update-service-dev
253253
profiles:
254254
- debug
255255
- debug-backend
256-
- debug-consumers
257256
depends_on:
258257
mysql-setup-dev:
259258
condition: service_completed_successfully
260259
opensearch-setup-dev:
261260
condition: service_completed_successfully
262261
kafka-setup-dev:
263262
condition: service_completed_successfully
263+
system-update-debug-consumers: # for consistent naming based on profile
264+
<<: *system-update-debug
265+
profiles:
266+
- debug-consumers
264267
system-update-debug-elasticsearch:
265268
<<: *datahub-system-update-service-dev
266269
profiles:
@@ -386,7 +389,7 @@ services:
386389
MAE_CONSUMER_ENABLED: false
387390
MCE_CONSUMER_ENABLED: false
388391
depends_on:
389-
system-update-debug:
392+
system-update-debug-consumers:
390393
condition: service_completed_successfully
391394
datahub-gms-debug-neo4j:
392395
<<: *datahub-gms-service-dev
@@ -414,7 +417,7 @@ services:
414417
depends_on:
415418
datahub-gms-quickstart-consumers:
416419
condition: service_healthy
417-
datahub-mae-consumer-quickstart-consumers-dev:
420+
datahub-mae-consumer-debug-consumers:
418421
<<: *datahub-mae-consumer-service-dev
419422
profiles:
420423
- debug-consumers
@@ -431,7 +434,7 @@ services:
431434
depends_on:
432435
datahub-gms-quickstart-consumers:
433436
condition: service_healthy
434-
datahub-mce-consumer-quickstart-consumers-dev:
437+
datahub-mce-consumer-debug-consumers:
435438
<<: *datahub-mce-consumer-service-dev
436439
profiles:
437440
- debug-consumers

0 commit comments

Comments
 (0)