Skip to content

Gradle Git Properties Plugin with configuration-cache support

License

Notifications You must be signed in to change notification settings

hndrs/gradle-git-properties-plugin

Repository files navigation

Maven metadata URL Coverage Supported Java Version Sponsor

Gradle Git Properties

This is a simple gradle plugin that can generate git properties via a generateGitProperties task. If you ask yourself "Why? there is already plugins out there that do this.". You are right!

This plugin was build specifically with the purpose of supporting gradles configuration-cache feature. If you don`t need this functionality, you might choose a more mature plugin.

Using the Plugin

Add the following dependency to your plugin block

plugins {
    id("io.hndrs.git-properties") version "1.0.0"
}

GenerateProperties Task

The Plugin registers a generateGitProperties task to the project. If the project includes the Gradle-Java-Plugin the generateGitProperties task will be attached to the classes lifecycle task if the java plugin is present

Default Configuration

When the task is not configured

  • it is assumed that a .git folder is present in the root of the project.
  • the build will fail when an error occurs during the properties generation unless the --continue-on-error option is provided
  • the output file is resources/main/git.properties

The task can be configured the following way if the defaults are not applicable:

import io.hndrs.gradle.plugin.git.properties.GenerateGitPropertiesTask

tasks.withType(GenerateGitPropertiesTask::class.java) {
    dotGitDirectory.set(File(".git"))
    continueOnError.set(false)
    output.set(File("resources/main/git.properties"))
}

File (build.gradle.kts)

Behaviour on CI environments

As you may know, CI environments handle the git repository differently and probably only checkout detached HEADs This plugin handles the branch resolution for

  • Github Actions
  • Gitlab CI
  • Travis CI

If you are using a different CI service you can provide the branch name via the branch-name option

./gradlew generateGitProperties --branch-name=$CI_SPECIFIC_ENV

Available Properties

git.branch=main
git.build.host=localHost
git.build.user.email=john.smith@gradlemail.com
git.build.user.name=John Smith
git.commit.id=e2f8a7bb72036e7a7a03ba243ca0414914cdfa82
git.commit.id.abbrev=e2f8a7b
git.commit.message.full=Merge pull request #1 from hndrs/prepare-initial-release\n\nPreparation of first release. Covers important cache test cases and cleans up code
git.commit.message.short=Merge pull request #1 from hndrs/prepare-initial-release
git.commit.signed=true
git.commit.time=2023-05-24T21:42:38Z
git.commit.user.email=john.smith@gradlemail.com
git.commit.user.name=John Smith
git.remote.origin.url=git@github.com:hndrs/gradle-git-properties-plugin.git