Skip to content

Commit 6a29119

Browse files
authored
Add support for docker compose v2 in TestFixturesPlugin (opensearch-project#16049)
* Update references for docker-compose to docker compose Signed-off-by: Craig Perkins <cwperx@amazon.com> * Support both Signed-off-by: Craig Perkins <cwperx@amazon.com> * Check if V2 is available Signed-off-by: Craig Perkins <cwperx@amazon.com> * Add to CHANGELOG Signed-off-by: Craig Perkins <cwperx@amazon.com> * Update CHANGELOG text Signed-off-by: Craig Perkins <cwperx@amazon.com> --------- Signed-off-by: Craig Perkins <cwperx@amazon.com>
1 parent 848e5c6 commit 6a29119

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
2626
- Bump `dnsjava:dnsjava` from 3.6.1 to 3.6.2 ([#16041](https://github.com/opensearch-project/OpenSearch/pull/16041))
2727

2828
### Changed
29+
- Add support for docker compose v2 in TestFixturesPlugin ([#16049](https://github.com/opensearch-project/OpenSearch/pull/16049))
2930

3031

3132
### Deprecated

buildSrc/src/main/java/org/opensearch/gradle/docker/DockerSupportService.java

+11
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ public DockerAvailability getDockerAvailability() {
106106
Version version = null;
107107
boolean isVersionHighEnough = false;
108108
boolean isComposeAvailable = false;
109+
boolean isComposeV2Available = false;
109110

110111
// Check if the Docker binary exists
111112
final Optional<String> dockerBinary = getDockerPath();
@@ -129,6 +130,8 @@ public DockerAvailability getDockerAvailability() {
129130
if (lastResult.isSuccess() && composePath.isPresent()) {
130131
isComposeAvailable = runCommand(composePath.get(), "version").isSuccess();
131132
}
133+
134+
isComposeV2Available = runCommand(dockerPath, "compose", "version").isSuccess();
132135
}
133136
}
134137
}
@@ -138,6 +141,7 @@ public DockerAvailability getDockerAvailability() {
138141
this.dockerAvailability = new DockerAvailability(
139142
isAvailable,
140143
isComposeAvailable,
144+
isComposeV2Available,
141145
isVersionHighEnough,
142146
dockerPath,
143147
version,
@@ -356,6 +360,11 @@ public static class DockerAvailability {
356360
*/
357361
public final boolean isComposeAvailable;
358362

363+
/**
364+
* True if docker compose is available.
365+
*/
366+
public final boolean isComposeV2Available;
367+
359368
/**
360369
* True if the installed Docker version is &gt;= 17.05
361370
*/
@@ -379,13 +388,15 @@ public static class DockerAvailability {
379388
DockerAvailability(
380389
boolean isAvailable,
381390
boolean isComposeAvailable,
391+
boolean isComposeV2Available,
382392
boolean isVersionHighEnough,
383393
String path,
384394
Version version,
385395
Result lastCommand
386396
) {
387397
this.isAvailable = isAvailable;
388398
this.isComposeAvailable = isComposeAvailable;
399+
this.isComposeV2Available = isComposeV2Available;
389400
this.isVersionHighEnough = isVersionHighEnough;
390401
this.path = path;
391402
this.version = version;

buildSrc/src/main/java/org/opensearch/gradle/testfixtures/TestFixturesPlugin.java

+7-2
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,11 @@ public void execute(Task task) {
171171
.findFirst();
172172

173173
composeExtension.getExecutable().set(dockerCompose.isPresent() ? dockerCompose.get() : "/usr/bin/docker");
174-
composeExtension.getUseDockerComposeV2().set(false);
174+
if (dockerSupport.get().getDockerAvailability().isComposeV2Available) {
175+
composeExtension.getUseDockerComposeV2().set(true);
176+
} else if (dockerSupport.get().getDockerAvailability().isComposeAvailable) {
177+
composeExtension.getUseDockerComposeV2().set(false);
178+
}
175179

176180
tasks.named("composeUp").configure(t -> {
177181
// Avoid running docker-compose tasks in parallel in CI due to some issues on certain Linux distributions
@@ -228,7 +232,8 @@ private void maybeSkipTask(Provider<DockerSupportService> dockerSupport, TaskPro
228232

229233
private void maybeSkipTask(Provider<DockerSupportService> dockerSupport, Task task) {
230234
task.onlyIf(spec -> {
231-
boolean isComposeAvailable = dockerSupport.get().getDockerAvailability().isComposeAvailable;
235+
boolean isComposeAvailable = dockerSupport.get().getDockerAvailability().isComposeV2Available
236+
|| dockerSupport.get().getDockerAvailability().isComposeAvailable;
232237
if (isComposeAvailable == false) {
233238
LOGGER.info("Task {} requires docker-compose but it is unavailable. Task will be skipped.", task.getPath());
234239
}

0 commit comments

Comments
 (0)