Skip to content

Commit f742dd5

Browse files
committed
dynamically generate reload tasks based on debug versions of quickstart configs
1 parent 03dcac8 commit f742dd5

File tree

3 files changed

+61
-40
lines changed

3 files changed

+61
-40
lines changed

docker/build.gradle

+52-34
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,30 @@ 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+
':docker:datahub-ingestion': 'datahub-ingestion',
90+
':docker:mysql-setup': 'datahub-mysql-setup',
91+
':docker:kafka-setup': 'datahub-kafka-setup',
92+
':datahub-upgrade': 'system-update',
93+
':docker:elasticsearch-setup': 'datahub-elasticsearch-setup',
94+
':docker:postgres-setup': 'datahub-postgres-setup',
95+
':metadata-jobs:mce-consumer-job': 'datahub-mce-consumer',
96+
':metadata-jobs:mae-consumer-job': 'datahub-mae-consumer',
97+
98+
]
8399
}
84100

85101
// Register all quickstart tasks
86102
quickstart_configs.each { taskName, config ->
87-
tasks.register(taskName)
103+
tasks.register(taskName) {
104+
group = 'quickstart'
105+
}
106+
88107
}
89108

90109
// Dynamically create all quickstart tasks and configurations
@@ -169,6 +188,7 @@ tasks.register('minDockerCompose2.20', Exec) {
169188
}
170189

171190
tasks.register('quickstartNuke') {
191+
group = 'quickstart'
172192
doFirst {
173193
quickstart_configs.each { taskName, config ->
174194
dockerCompose."${taskName}".removeVolumes = !config.preserveVolumes
@@ -178,6 +198,7 @@ tasks.register('quickstartNuke') {
178198
}
179199

180200
tasks.register('quickstartDown') {
201+
group = 'quickstart'
181202
finalizedBy(tasks.withType(ComposeDownForced))
182203
}
183204

@@ -186,39 +207,36 @@ tasks.withType(ComposeUp).configureEach {
186207
dependsOn tasks.named("minDockerCompose2.20")
187208
}
188209

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
210+
// Register all quickstart Reload tasks. For quickstartDebug, the reload task is DebugReload. (Taskname without quickstart prefix)
211+
quickstart_configs.each { taskName, config ->
212+
if (config.isDebug) {
213+
def reloadTaskName = taskName.replaceFirst(/^quickstart/, "")
214+
tasks.register("${reloadTaskName}Reload", Exec) {
215+
dependsOn tasks.named("${taskName}PrepareAll")
216+
group = 'quickstart'
217+
description = "Build and reload only changed containers for the ${taskName} task"
218+
doFirst {
219+
def executedTasks = project.gradle.taskGraph.allTasks.findAll { it.state.executed }
220+
def containersToRestart = []
221+
222+
moduleToContainer.each { modulePath, containerName ->
223+
def moduleProject = project.project(modulePath)
224+
def dockerPrepareTask = moduleProject.tasks.findByName('dockerPrepare')
225+
226+
if (dockerPrepareTask && executedTasks.contains(dockerPrepareTask) && !dockerPrepareTask.state.upToDate) {
227+
containersToRestart << "${containerName}-${config.profile}"
228+
}
229+
}
230+
231+
// Only restart containers that had their modules rebuilt
232+
if (containersToRestart) {
233+
def cmd = ["docker compose -p datahub --profile ${config.profile}"] + ['-f', compose_base] + ['restart'] + containersToRestart
234+
commandLine 'bash', '-c', cmd.join(" ")
235+
} else {
236+
// If no containers need restart, make this a no-op
237+
commandLine 'bash', '-c', 'echo "No containers need restarting - all modules are up to date"'
238+
}
210239
}
211240
}
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-
}
221241
}
222-
223-
dependsOn tasks.named("quickstartDebugPrepareAll")
224-
}
242+
}

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)