Skip to content

Instantly share code, notes, and snippets.

@rherrick
Last active August 29, 2015 14:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rherrick/4225cd1b4d07d057cc5c to your computer and use it in GitHub Desktop.
Save rherrick/4225cd1b4d07d057cc5c to your computer and use it in GitHub Desktop.
Pipeline engine Gradle build file
import org.apache.tools.ant.filters.FixCrLfFilter
import org.apache.tools.ant.filters.ReplaceTokens
import org.apache.tools.ant.taskdefs.condition.Os
defaultTasks 'show', 'copyAll'
def isWindows = Os.isFamily(Os.FAMILY_WINDOWS)
def scriptName = isWindows ? "\$1.bat" : "\$1"
def pipelinePath = "${buildFile.parent}" as String
def url = "${xnatUrl.replaceAll('/+$', '')}" as String
def email = "${adminEmail}" as String
def smtp = "${smtpServer}" as String
def siteName = "${siteName}" as String
def configExt = (isWindows ? "bat" : "config") as String
def demoScript = (isWindows ? "demo.bat" : "demo.sh") as String
def envVar1 = (isWindows ? "%" : "\$") as String
def envVar2 = (isWindows ? "%" : "") as String
def jarExt = (isWindows ? ".jar;" : ".jar:") as String
def osArgSym = (isWindows ? "%*" : "\$@") as String
def platformCall = (isWindows ? "call" : "source") as String
def shellLine = (isWindows ? "@echo off" : "#!/bin/bash") as String
def scripts = ["${pipelinePath}/templates/scripts"]
def resources = ["${pipelinePath}/templates/resources"]
def moduleRoots = []
if (new File("${pipelinePath}/modules").exists()) {
moduleRoots.add "${pipelinePath}/modules"
}
if (hasProperty("modulePaths")) {
"${modulePaths}".split(/\s*,\s*/).each { modulePath ->
println "Adding module root ${modulePath}"
moduleRoots.add "${modulePath}"
}
}
moduleRoots.each { root ->
new File("${root}").eachDir() { module ->
def folders = []
module.eachDirMatch(~/resources/) { match ->
folders.add "${match}"
}
module.eachDirMatch(~/scripts/) { match ->
folders.add "${match}"
}
if (folders.size() == 0) {
resources.add "${module.path}"
} else {
folders.each { GString folder ->
if (folder.endsWith("resources")) {
resources.add folder
} else if (folder.endsWith("scripts")) {
scripts.add folder
}
}
}
}
}
def tokens = [CONFIG_EXT : configExt,
JAR_EXT : jarExt,
OS_ARG_SYM : osArgSym,
PIPELINE_DIR_PATH : pipelinePath,
PLATFORM_CALL : platformCall,
PLATFORM_ENV_VAR1 : envVar1,
PLATFORM_ENV_VAR2 : envVar2,
SCRIPT_NAME : demoScript,
SHELL_LINE : shellLine,
XNAT_SITE_NAME : siteName,
YOUR_EMAIL_HERE : email,
YOUR_SMTP_SERVER_HERE: smtp,
YOUR_XNAT_URL_HERE : url]
task show {
println "Building pipeline engine to: ${pipelinePath}"
println "Email: ${email}"
println "Site name: ${siteName}"
println "Site URL: ${url}"
println "SMTP server: ${smtp}"
}
task copyResources(type: Copy) {
from resources
into "${pipelinePath}"
exclude '.*/**'
filter(FixCrLfFilter)
filter(ReplaceTokens, tokens: tokens)
}
task copyScripts(type: Copy) {
from scripts
into "${pipelinePath}"
exclude '.*/**'
rename { String fileName ->
fileName.replace(/(^.*$)/, scriptName)
}
filter(FixCrLfFilter)
filter(ReplaceTokens, tokens: tokens)
}
task copyAll {
dependsOn tasks.withType(Copy)
}
D:\Tmp\work\pipeline_1_6dev>gradle --stacktrace
Building pipeline engine to: D:\Tmp\work\pipeline_1_6dev
Email: rick.herrick@wustl.edu
Site name: XNAT
Site URL: http://nrg115.nrg.mir
SMTP server: mail.nrg.wustl.edu
:show UP-TO-DATE
:copyResources
FAILURE: Build failed with an exception.
* What went wrong:
Failed to capture snapshot of output files for task 'copyResources' during up-to-date check. See stacktrace for details.
> Failed to create MD5 hash for file D:\Tmp\work\pipeline_1_6dev\.gradle\2.2.1\taskArtifacts\cache.properties.lock.
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
org.gradle.api.UncheckedIOException: Failed to capture snapshot of output files for task 'copyResources' during up-to-date check. See stacktrace for details.
at org.gradle.api.internal.changedetection.rules.TaskUpToDateState.<init>(TaskUpToDateState.java:50)
at org.gradle.api.internal.changedetection.changes.DefaultTaskArtifactStateRepository$TaskArtifactStateImpl.getStates(DefaultTaskArtifactStateRepository.java:126)
at org.gradle.api.internal.changedetection.changes.DefaultTaskArtifactStateRepository$TaskArtifactStateImpl.isUpToDate(DefaultTaskArtifactStateRepository.java:69)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:305)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:23)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:88)
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62)
at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23)
at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:68)
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:55)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:80)
at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33)
at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:36)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:51)
at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:171)
at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237)
at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210)
at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206)
at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
at org.gradle.launcher.Main.doAction(Main.java:33)
at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54)
at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35)
at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
Caused by: org.gradle.api.UncheckedIOException: Failed to create MD5 hash for file D:\Tmp\work\pipeline_1_6dev\.gradle\2.2.1\taskArtifacts\cache.properties.lock.
at org.gradle.internal.hash.HashUtil.createHash(HashUtil.java:37)
at org.gradle.api.internal.hash.DefaultHasher.hash(DefaultHasher.java:24)
at org.gradle.api.internal.changedetection.state.CachingFileSnapshotter.snapshot(CachingFileSnapshotter.java:46)
at org.gradle.api.internal.changedetection.state.CachingFileSnapshotter.snapshot(CachingFileSnapshotter.java:27)
at org.gradle.api.internal.changedetection.state.DefaultFileCollectionSnapshotter$1.run(DefaultFileCollectionSnapshotter.java:56)
at org.gradle.internal.Factories$1.create(Factories.java:22)
at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:187)
at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:175)
at org.gradle.cache.internal.DefaultPersistentDirectoryStore.useCache(DefaultPersistentDirectoryStore.java:106)
at org.gradle.cache.internal.DefaultCacheFactory$ReferenceTrackingCache.useCache(DefaultCacheFactory.java:187)
at org.gradle.api.internal.changedetection.state.DefaultTaskArtifactStateCacheAccess.useCache(DefaultTaskArtifactStateCacheAccess.java:60)
at org.gradle.api.internal.changedetection.state.DefaultFileCollectionSnapshotter.snapshot(DefaultFileCollectionSnapshotter.java:52)
at org.gradle.api.internal.changedetection.state.OutputFilesCollectionSnapshotter.snapshot(OutputFilesCollectionSnapshotter.java:89)
at org.gradle.api.internal.changedetection.state.OutputFilesCollectionSnapshotter.snapshot(OutputFilesCollectionSnapshotter.java:43)
at org.gradle.api.internal.changedetection.rules.OutputFilesStateChangeRule.create(OutputFilesStateChangeRule.java:34)
at org.gradle.api.internal.changedetection.rules.TaskUpToDateState.<init>(TaskUpToDateState.java:48)
... 44 more
Caused by: java.io.IOException: The process cannot access the file because another process has locked a portion of the file
at org.gradle.internal.hash.HashUtil.createHash(HashUtil.java:50)
at org.gradle.internal.hash.HashUtil.createHash(HashUtil.java:34)
... 59 more
BUILD FAILED
Total time: 5.366 secs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment