rejected
}
}
+
+// Hack to avoid unecessary yarn install.
+// This will create a avoidInstallTask task on which both installTask & runTask will depend.
+// installTask is disabled and will only be activated by avoidInstallTask when it is executed
+// Because it is set to share the same dependencies, avoidInstallTask will be executed only if
+// the runTask will be executed
+ext.avoidYarnInstallIfPossible = { taskList, installTask, runTask ->
+ // Disable the yarn install task
+ installTask.enabled = false;
+
+ def avoidInstallTask = taskList.register('avoidInstallTask_' + runTask.name) {
+ // Copy all inputs and outputs
+ runTask.inputs.getFiles().each { fi ->
+ if (fi.isDirectory()) inputs.dir(fi)
+ else inputs.file(fi)
+ }
+ runTask.outputs.getFiles().each { fi ->
+ if (fi.isDirectory()) outputs.dir(fi)
+ else outputs.file(fi)
+ }
+
+ outputs.cacheIf { true }
+
+ // Activate the yarn install task
+ doLast {
+ installTask.enabled = true
+ }
+ }
+
+ runTask.dependsOn(installTask)
+ runTask.dependsOn(avoidInstallTask)
+ installTask.dependsOn(avoidInstallTask)
+}
\ No newline at end of file
outputs.cacheIf { true }
args = ['build']
}
+build.dependsOn(yarn_run)
+
+avoidYarnInstallIfPossible(tasks, yarn, yarn_run);
+
// To clean outputs outside of "build" directory:
clean.dependsOn(cleanYarn_run)
dependsOn(yarn)
}
+avoidYarnInstallIfPossible(tasks, yarn, tasks.getByName("yarn_validate-ci"));
+
// Check for known vulnerabilities
task dependency_audit(type: Exec) {
inputs.file('package.json')
outputs.cacheIf { false }
commandLine 'yarn', 'npm', 'audit', '--environment', 'production', '--severity', 'high'
ignoreExitValue = true
+
dependsOn(yarn)
}
outputs.dir(webappDir)
outputs.cacheIf { true }
args = ['build-release']
+
+ dependsOn(yarn)
}
build.dependsOn(yarn_run)
+avoidYarnInstallIfPossible(tasks, yarn, yarn_run);
+
"yarn_check-ci" {
// Note that outputs are not relocatable, because contain absolute paths, and that's why inputs are not relativized
['config', 'src'].each {
dependsOn(yarn)
}
+avoidYarnInstallIfPossible(tasks, yarn, tasks.getByName("yarn_validate-ci"));
+
// Check for known vulnerabilities
task dependency_audit(type: Exec) {
inputs.file('package.json')
outputs.cacheIf { false }
commandLine 'yarn', 'npm', 'audit', '--environment', 'production', '--severity', 'high'
ignoreExitValue = true
+
dependsOn(yarn)
}