In moving all my home projects from Jenkins+Maven to GoCD+Artifactory+Gradle, there’s a number of intersting bumps to tackle. Here’s an early one:
task createIdentifierArtifact << {
new File("$buildDir/artifact-list.txt").withWriter { out ->
out.println "${project.group}:${project.name}:${project.version}"
}
}
jar.dependsOn createIdentifierArtifact
This artifact-list.txt
file is marked as an artifact in GoCD. Downstream stages pick this up if they need to fetch the binaries from Artifactory (and possibly update the build.gradle
dependencies
section.
As all builds run inside a Docker container, this file needs to be produced outside (or fetched so the GoCD agent can pick it up). I keep a build.sh
file at the top-level directory of all projects, and it will simply invoke ./gradlew createIdentifierArtifact
which should produce the exact same file as will happen inside the container. It’s a violation of “build once”, but at least it’s DRY compatible.