You can use the following snippet:
import java.text.SimpleDateFormat;
import java.text.DateFormat;
version=1.0
Calendar calendar = Calendar.getInstance();
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
gradle.taskGraph.whenReady {
String buildID = System.getenv()['BUILD_ID']
if (buildID == null){
buildID = dateFormat.format(calendar.getTime())
}
version = version + "-" + buildID
}
task display << {
println version
}
If this script is called by Gradle itself, the current date is used and it
is formatted with a pattern (free to externalize the pattern).
If the script is called by Jenkins, the BUILD_ID environment variable is
used (The BUILD_ID represents in JENKINS the job build time).
And you are able to format this variable (use a different date pattern)
with the ZenTimestamp Jenkins plugin.
On Sun, Jun 3, 2012 at 8:03 PM, Yair Halevi <[email protected]> wrote:
> I'm trying to build a CI workflow in my company, using Gradle, Jenkins and
> Artifactory. I'm new to all of these, so there's a chance I'm asking
> trivial questions.
>
> I've setup my repository to use unique snapshots, which require the
> versions to have a 14 digit timestamp. For example:
>
> 1.0.0-20120529100003
>
> But I'm having a hard time finding an easy way to generate these
> timestamps into the version. I was expecting that this would be
> automatically supported by either Jenkins or Gradle (I understand that
> Maven 3 has such a flow), but couldn't find any reference to such a
> capability.
>
> Am I supposed to code this in Gradle myself? Are there any best practices
> regarding how to do this? My Artifactory repository is configured for the
> gradle-default layout (ivy-like), not maven.
>
> Thanks
>