18
18
19
19
import org .gradle .api .Plugin ;
20
20
import org .gradle .api .Project ;
21
+ import org .gradle .api .Task ;
21
22
import org .gradle .api .plugins .JavaPlugin ;
22
23
import org .gradle .api .plugins .JavaPluginExtension ;
23
24
import org .gradle .api .provider .Provider ;
24
25
import org .gradle .api .services .BuildService ;
26
+ import org .gradle .api .tasks .Exec ;
25
27
import org .gradle .api .tasks .SourceSet ;
26
28
import org .gradle .api .tasks .SourceSetContainer ;
27
29
import org .gradle .api .tasks .testing .Test ;
@@ -43,17 +45,19 @@ public class DockerTestPlugin implements Plugin<Project> {
43
45
/**
44
46
* Name of the {@code dockerTest} task.
45
47
*/
46
- public static String DOCKER_TEST_TASK_NAME = "dockerTest" ;
48
+ public static final String DOCKER_TEST_TASK_NAME = "dockerTest" ;
47
49
48
50
/**
49
51
* Name of the {@code dockerTest} source set.
50
52
*/
51
- public static String DOCKER_TEST_SOURCE_SET_NAME = "dockerTest" ;
53
+ public static final String DOCKER_TEST_SOURCE_SET_NAME = "dockerTest" ;
52
54
53
55
/**
54
56
* Name of the {@code dockerTest} shared service.
55
57
*/
56
- public static String DOCKER_TEST_SERVICE_NAME = "dockerTest" ;
58
+ public static final String DOCKER_TEST_SERVICE_NAME = "dockerTest" ;
59
+
60
+ private static final String RECLAIM_DOCKER_SPACE_TASK_NAME = "reclaimDockerSpace" ;
57
61
58
62
@ Override
59
63
public void apply (Project project ) {
@@ -73,6 +77,8 @@ private void configureDockerTesting(Project project) {
73
77
});
74
78
project .getDependencies ()
75
79
.add (dockerTestSourceSet .getRuntimeOnlyConfigurationName (), "org.junit.platform:junit-platform-launcher" );
80
+ Provider <Exec > reclaimDockerSpace = createReclaimDockerSpaceTask (project , buildService );
81
+ project .getTasks ().getByName (LifecycleBasePlugin .CHECK_TASK_NAME ).dependsOn (reclaimDockerSpace );
76
82
}
77
83
78
84
private SourceSet createSourceSet (Project project ) {
@@ -110,4 +116,28 @@ private Provider<Test> createTestTask(Project project, SourceSet dockerTestSourc
110
116
});
111
117
}
112
118
119
+ private Provider <Exec > createReclaimDockerSpaceTask (Project project ,
120
+ Provider <DockerTestBuildService > buildService ) {
121
+ return project .getTasks ().register (RECLAIM_DOCKER_SPACE_TASK_NAME , Exec .class , (task ) -> {
122
+ task .usesService (buildService );
123
+ task .setGroup (LifecycleBasePlugin .VERIFICATION_GROUP );
124
+ task .setDescription ("Reclaims Docker space on CI." );
125
+ task .shouldRunAfter (DOCKER_TEST_TASK_NAME );
126
+ task .onlyIf (this ::shouldReclaimDockerSpace );
127
+ task .executable ("bash" );
128
+ task .args ("-c" ,
129
+ project .getRootDir ()
130
+ .toPath ()
131
+ .resolve (".github/scripts/reclaim-docker-diskspace.sh" )
132
+ .toAbsolutePath ());
133
+ });
134
+ }
135
+
136
+ private boolean shouldReclaimDockerSpace (Task task ) {
137
+ if (System .getProperty ("os.name" ).startsWith ("Windows" )) {
138
+ return false ;
139
+ }
140
+ return System .getenv ("GITHUB_ACTIONS" ) != null || System .getenv ("RECLAIM_DOCKER_SPACE" ) != null ;
141
+ }
142
+
113
143
}
0 commit comments