From e18084c82889139b00b54aaa5c00995c5ee23e27 Mon Sep 17 00:00:00 2001 From: arturskowronski Date: Sun, 15 Apr 2018 15:45:36 +0200 Subject: [PATCH 1/5] [SHIPKIT-513] Basic version --- .../internal/gradle/git/GitPlugin.java | 6 ++- .../internal/gradle/util/TravisUtils.java | 19 +++++++++ .../gradle/util/TravisUtilsTest.groovy | 40 +++++++++++++++++++ 3 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/TravisUtils.java create mode 100644 subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/util/TravisUtilsTest.groovy diff --git a/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/git/GitPlugin.java b/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/git/GitPlugin.java index 37bcd691..9ef9bc42 100644 --- a/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/git/GitPlugin.java +++ b/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/git/GitPlugin.java @@ -16,8 +16,10 @@ import java.io.File; import java.util.List; +import static java.lang.System.getenv; import static org.shipkit.internal.gradle.exec.ExecCommandFactory.execCommand; import static org.shipkit.internal.gradle.util.GitUtil.getTag; +import static org.shipkit.internal.gradle.util.TravisUtils.generateCommitMessagePostfix; /** * Adds Git-specific tasks needed for the release process. @@ -55,13 +57,15 @@ public class GitPlugin implements Plugin { public void apply(final Project project) { final ShipkitConfiguration conf = project.getPlugins().apply(ShipkitConfigurationPlugin.class).getConfiguration(); + String commitMessage = generateCommitMessagePostfix(conf, getenv("TRAVIS_BUILD_NUMBER")); TaskMaker.task(project, GIT_COMMIT_TASK, GitCommitTask.class, new Action() { public void execute(final GitCommitTask t) { t.setDescription("Commits all changed files using generic --author and aggregated commit message"); t.setGitUserName(conf.getGit().getUser()); t.setGitUserEmail(conf.getGit().getEmail()); - t.setCommitMessagePostfix(conf.getGit().getCommitMessagePostfix()); + t.setCommitMessagePostfix(commitMessage); + } }); diff --git a/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/TravisUtils.java b/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/TravisUtils.java new file mode 100644 index 00000000..c5a935a1 --- /dev/null +++ b/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/TravisUtils.java @@ -0,0 +1,19 @@ +package org.shipkit.internal.gradle.util; + +import org.shipkit.gradle.configuration.ShipkitConfiguration; + +public class TravisUtils { + private static final String URL_PATTERN = "https://travis-ci.org/%s/builds/%s"; + + public static String generateCommitMessagePostfix(ShipkitConfiguration conf, String travisBuildNumber) { + if (StringUtil.isEmpty(travisBuildNumber)) { + return conf.getGit().getCommitMessagePostfix(); + } + String travisJobUrl = generateTravisBuildUrl(conf, travisBuildNumber); + return String.format("CI job: %s %s", travisJobUrl, conf.getGit().getCommitMessagePostfix()); + } + + private static String generateTravisBuildUrl(ShipkitConfiguration conf, String travisBuildNumber) { + return String.format(URL_PATTERN, conf.getGitHub().getRepository(), travisBuildNumber); + } +} diff --git a/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/util/TravisUtilsTest.groovy b/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/util/TravisUtilsTest.groovy new file mode 100644 index 00000000..5071edb2 --- /dev/null +++ b/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/util/TravisUtilsTest.groovy @@ -0,0 +1,40 @@ +package org.shipkit.internal.gradle.util + +import spock.lang.Specification + +import org.shipkit.gradle.configuration.ShipkitConfiguration + +class TravisUtilsTest extends Specification { + + def "should build travis url with [ci skip]"() { + given: + ShipkitConfiguration shipkitConfiguration = Mock(ShipkitConfiguration) + ShipkitConfiguration.GitHub gitHub = Mock(ShipkitConfiguration.GitHub) + ShipkitConfiguration.Git git = Mock(ShipkitConfiguration.Git) + shipkitConfiguration.getGitHub() >> gitHub + shipkitConfiguration.getGit() >> git + 1 * git.commitMessagePostfix >> "[ci skip]" + 1 * gitHub.getRepository() >> "mockito/shipkit" + 0 * _ + when: + def url = TravisUtils.generateCommitMessagePostfix(shipkitConfiguration, "123") + then: + url == "CI job: https://travis-ci.org/mockito/shipkit/builds/123 [ci skip]" + } + + def "should build postfix without travis url if blank build number"() { + given: + ShipkitConfiguration shipkitConfiguration = Mock(ShipkitConfiguration) + ShipkitConfiguration.GitHub gitHub = Mock(ShipkitConfiguration.GitHub) + ShipkitConfiguration.Git git = Mock(ShipkitConfiguration.Git) + shipkitConfiguration.getGitHub() >> gitHub + shipkitConfiguration.getGit() >> git + + 1 * git.commitMessagePostfix >> "[ci skip]" + 0 * _ + when: + def url = TravisUtils.generateCommitMessagePostfix(shipkitConfiguration, "") + then: + url == "[ci skip]" + } +} From 4890e47297f373ef2592633b59ce2b9701cb3110 Mon Sep 17 00:00:00 2001 From: arturskowronski Date: Sun, 15 Apr 2018 15:57:49 +0200 Subject: [PATCH 2/5] [SHIPKIT-513] Renaming of methods --- .../internal/gradle/git/GitPlugin.java | 6 ++--- ...avisUtils.java => CommitMessageUtils.java} | 11 ++++---- .../internal/gradle/git/GitPluginTest.groovy | 25 +++++++++++++++++++ ...t.groovy => CommitMessageUtilsTest.groovy} | 6 ++--- 4 files changed, 37 insertions(+), 11 deletions(-) rename subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/{TravisUtils.java => CommitMessageUtils.java} (61%) rename subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/util/{TravisUtilsTest.groovy => CommitMessageUtilsTest.groovy} (84%) diff --git a/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/git/GitPlugin.java b/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/git/GitPlugin.java index 9ef9bc42..510b6dd5 100644 --- a/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/git/GitPlugin.java +++ b/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/git/GitPlugin.java @@ -16,10 +16,10 @@ import java.io.File; import java.util.List; -import static java.lang.System.getenv; +import static java.lang.System.getProperty; import static org.shipkit.internal.gradle.exec.ExecCommandFactory.execCommand; import static org.shipkit.internal.gradle.util.GitUtil.getTag; -import static org.shipkit.internal.gradle.util.TravisUtils.generateCommitMessagePostfix; +import static org.shipkit.internal.gradle.util.CommitMessageUtils.generateCommitMessagePostfix; /** * Adds Git-specific tasks needed for the release process. @@ -57,7 +57,7 @@ public class GitPlugin implements Plugin { public void apply(final Project project) { final ShipkitConfiguration conf = project.getPlugins().apply(ShipkitConfigurationPlugin.class).getConfiguration(); - String commitMessage = generateCommitMessagePostfix(conf, getenv("TRAVIS_BUILD_NUMBER")); + String commitMessage = generateCommitMessagePostfix(conf, getProperty("TRAVIS_BUILD_NUMBER")); TaskMaker.task(project, GIT_COMMIT_TASK, GitCommitTask.class, new Action() { public void execute(final GitCommitTask t) { diff --git a/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/TravisUtils.java b/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/CommitMessageUtils.java similarity index 61% rename from subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/TravisUtils.java rename to subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/CommitMessageUtils.java index c5a935a1..c387931a 100644 --- a/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/TravisUtils.java +++ b/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/CommitMessageUtils.java @@ -2,15 +2,16 @@ import org.shipkit.gradle.configuration.ShipkitConfiguration; -public class TravisUtils { +public class CommitMessageUtils { private static final String URL_PATTERN = "https://travis-ci.org/%s/builds/%s"; public static String generateCommitMessagePostfix(ShipkitConfiguration conf, String travisBuildNumber) { - if (StringUtil.isEmpty(travisBuildNumber)) { - return conf.getGit().getCommitMessagePostfix(); + if (!StringUtil.isEmpty(travisBuildNumber)) { + String travisJobUrl = generateTravisBuildUrl(conf, travisBuildNumber); + return String.format("CI job: %s %s", travisJobUrl, conf.getGit().getCommitMessagePostfix()); } - String travisJobUrl = generateTravisBuildUrl(conf, travisBuildNumber); - return String.format("CI job: %s %s", travisJobUrl, conf.getGit().getCommitMessagePostfix()); + + return conf.getGit().getCommitMessagePostfix(); } private static String generateTravisBuildUrl(ShipkitConfiguration conf, String travisBuildNumber) { diff --git a/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/git/GitPluginTest.groovy b/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/git/GitPluginTest.groovy index 527fc7be..aabd9fcb 100644 --- a/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/git/GitPluginTest.groovy +++ b/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/git/GitPluginTest.groovy @@ -1,5 +1,6 @@ package org.shipkit.internal.gradle.git +import org.shipkit.gradle.git.GitCommitTask import org.shipkit.gradle.git.GitPushTask import testutil.PluginSpecification @@ -22,4 +23,28 @@ class GitPluginTest extends PluginSpecification { gitPush.url == "https://dummy:foo@github.com/my-repo.git" gitPush.secretValue == "foo" } + + def "configures git commit"() { + conf.gitHub.repository = 'my-repo' + conf.gitHub.writeAuthToken = 'foo' + + when: + project.plugins.apply(GitPlugin) + + then: + GitCommitTask gitCommit = project.tasks[GitPlugin.GIT_COMMIT_TASK] + gitCommit.commitMessagePostfix == "[ci skip]" + } + + def "configures git commit in Travis environment"() { + conf.gitHub.repository = 'my-repo' + conf.gitHub.writeAuthToken = 'foo' + System.setProperty("TRAVIS_BUILD_NUMBER", "test") + when: + project.plugins.apply(GitPlugin) + + then: + GitCommitTask gitCommit = project.tasks[GitPlugin.GIT_COMMIT_TASK] + gitCommit.commitMessagePostfix == "CI job: https://travis-ci.org/my-repo/builds/test [ci skip]" + } } diff --git a/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/util/TravisUtilsTest.groovy b/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/util/CommitMessageUtilsTest.groovy similarity index 84% rename from subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/util/TravisUtilsTest.groovy rename to subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/util/CommitMessageUtilsTest.groovy index 5071edb2..db6cb8ce 100644 --- a/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/util/TravisUtilsTest.groovy +++ b/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/util/CommitMessageUtilsTest.groovy @@ -4,7 +4,7 @@ import spock.lang.Specification import org.shipkit.gradle.configuration.ShipkitConfiguration -class TravisUtilsTest extends Specification { +class CommitMessageUtilsTest extends Specification { def "should build travis url with [ci skip]"() { given: @@ -17,7 +17,7 @@ class TravisUtilsTest extends Specification { 1 * gitHub.getRepository() >> "mockito/shipkit" 0 * _ when: - def url = TravisUtils.generateCommitMessagePostfix(shipkitConfiguration, "123") + def url = CommitMessageUtils.generateCommitMessagePostfix(shipkitConfiguration, "123") then: url == "CI job: https://travis-ci.org/mockito/shipkit/builds/123 [ci skip]" } @@ -33,7 +33,7 @@ class TravisUtilsTest extends Specification { 1 * git.commitMessagePostfix >> "[ci skip]" 0 * _ when: - def url = TravisUtils.generateCommitMessagePostfix(shipkitConfiguration, "") + def url = CommitMessageUtils.generateCommitMessagePostfix(shipkitConfiguration, "") then: url == "[ci skip]" } From 30be329b6c77038af0a1768020b044da4a4ccfa1 Mon Sep 17 00:00:00 2001 From: arturskowronski Date: Sun, 15 Apr 2018 22:01:54 +0200 Subject: [PATCH 3/5] Refactor of Commit Message Utils --- .../shipkit/internal/gradle/util/CommitMessageUtils.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/CommitMessageUtils.java b/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/CommitMessageUtils.java index c387931a..943395f8 100644 --- a/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/CommitMessageUtils.java +++ b/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/CommitMessageUtils.java @@ -7,13 +7,17 @@ public class CommitMessageUtils { public static String generateCommitMessagePostfix(ShipkitConfiguration conf, String travisBuildNumber) { if (!StringUtil.isEmpty(travisBuildNumber)) { - String travisJobUrl = generateTravisBuildUrl(conf, travisBuildNumber); - return String.format("CI job: %s %s", travisJobUrl, conf.getGit().getCommitMessagePostfix()); + return getTravisCommitMessagePostfix(conf, travisBuildNumber); } return conf.getGit().getCommitMessagePostfix(); } + private static String getTravisCommitMessagePostfix(ShipkitConfiguration conf, String travisBuildNumber) { + String travisJobUrl = generateTravisBuildUrl(conf, travisBuildNumber); + return String.format("CI job: %s %s", travisJobUrl, conf.getGit().getCommitMessagePostfix()); + } + private static String generateTravisBuildUrl(ShipkitConfiguration conf, String travisBuildNumber) { return String.format(URL_PATTERN, conf.getGitHub().getRepository(), travisBuildNumber); } From 354834e906ee6f1eaf714c8ede16a415cfe39f68 Mon Sep 17 00:00:00 2001 From: arturskowronski Date: Sun, 15 Apr 2018 22:09:57 +0200 Subject: [PATCH 4/5] [SHIPKIT-513] Fix for restories system properties --- .../groovy/org/shipkit/internal/gradle/git/GitPluginTest.groovy | 2 ++ 1 file changed, 2 insertions(+) diff --git a/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/git/GitPluginTest.groovy b/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/git/GitPluginTest.groovy index aabd9fcb..f395f11f 100644 --- a/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/git/GitPluginTest.groovy +++ b/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/git/GitPluginTest.groovy @@ -2,6 +2,7 @@ package org.shipkit.internal.gradle.git import org.shipkit.gradle.git.GitCommitTask import org.shipkit.gradle.git.GitPushTask +import spock.util.environment.RestoreSystemProperties import testutil.PluginSpecification class GitPluginTest extends PluginSpecification { @@ -36,6 +37,7 @@ class GitPluginTest extends PluginSpecification { gitCommit.commitMessagePostfix == "[ci skip]" } + @RestoreSystemProperties def "configures git commit in Travis environment"() { conf.gitHub.repository = 'my-repo' conf.gitHub.writeAuthToken = 'foo' From bf77c9f909a5c2729d1ee0378061ee3ab5e7dc4d Mon Sep 17 00:00:00 2001 From: arturskowronski Date: Tue, 1 May 2018 11:38:48 +0200 Subject: [PATCH 5/5] [SHIPKIT-513] Decoupling message from Git Plugin --- .../internal/gradle/git/GitPlugin.java | 48 +++++++++---------- .../internal/gradle/release/TravisPlugin.java | 39 +++++++++------ ...ils.java => TravisCommitMessageUtils.java} | 4 +- .../internal/gradle/git/GitPluginTest.groovy | 14 ------ ...vy => TravisCommitMessageUtilsTest.groovy} | 6 +-- 5 files changed, 53 insertions(+), 58 deletions(-) rename subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/{CommitMessageUtils.java => TravisCommitMessageUtils.java} (90%) rename subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/util/{CommitMessageUtilsTest.groovy => TravisCommitMessageUtilsTest.groovy} (83%) diff --git a/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/git/GitPlugin.java b/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/git/GitPlugin.java index 510b6dd5..308b630e 100644 --- a/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/git/GitPlugin.java +++ b/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/git/GitPlugin.java @@ -16,32 +16,30 @@ import java.io.File; import java.util.List; -import static java.lang.System.getProperty; import static org.shipkit.internal.gradle.exec.ExecCommandFactory.execCommand; import static org.shipkit.internal.gradle.util.GitUtil.getTag; -import static org.shipkit.internal.gradle.util.CommitMessageUtils.generateCommitMessagePostfix; /** * Adds Git-specific tasks needed for the release process. - * + *

* Applies plugins: *

    - *
  • {@link ShipkitConfigurationPlugin}
  • - *
  • {@link GitBranchPlugin}
  • + *
  • {@link ShipkitConfigurationPlugin}
  • + *
  • {@link GitBranchPlugin}
  • *
- * + *

* Adds tasks: *

    - *
  • identifyGitBranch - {@link IdentifyGitBranchTask}
  • - *
  • gitCommit
  • - *
  • gitTag
  • - *
  • gitPush
  • - *
  • performGitPush - {@link GitPushTask}
  • - * - *
  • performGitCommitCleanUp
  • - *
  • gitSoftResetCommit
  • - *
  • gitStash
  • - *
  • gitTagCleanUp
  • + *
  • identifyGitBranch - {@link IdentifyGitBranchTask}
  • + *
  • gitCommit
  • + *
  • gitTag
  • + *
  • gitPush
  • + *
  • performGitPush - {@link GitPushTask}
  • + *

    + *

  • performGitCommitCleanUp
  • + *
  • gitSoftResetCommit
  • + *
  • gitStash
  • + *
  • gitTagCleanUp
  • *
*/ public class GitPlugin implements Plugin { @@ -57,15 +55,15 @@ public class GitPlugin implements Plugin { public void apply(final Project project) { final ShipkitConfiguration conf = project.getPlugins().apply(ShipkitConfigurationPlugin.class).getConfiguration(); - String commitMessage = generateCommitMessagePostfix(conf, getProperty("TRAVIS_BUILD_NUMBER")); TaskMaker.task(project, GIT_COMMIT_TASK, GitCommitTask.class, new Action() { public void execute(final GitCommitTask t) { t.setDescription("Commits all changed files using generic --author and aggregated commit message"); t.setGitUserName(conf.getGit().getUser()); t.setGitUserEmail(conf.getGit().getEmail()); - t.setCommitMessagePostfix(commitMessage); - + if (t.getCommitMessagePostfix() == null) { + t.setCommitMessagePostfix(conf.getGit().getCommitMessagePostfix()); + } } }); @@ -93,12 +91,12 @@ public void execute(final GitPushTask t) { t.setSecretValue(info.getWriteToken()); project.getPlugins().apply(GitBranchPlugin.class) - .provideBranchTo(t, new Action() { - @Override - public void execute(String branch) { - t.getTargets().add(branch); - } - }); + .provideBranchTo(t, new Action() { + @Override + public void execute(String branch) { + t.getTargets().add(branch); + } + }); } }); diff --git a/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/release/TravisPlugin.java b/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/release/TravisPlugin.java index 5c06b309..be21a077 100644 --- a/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/release/TravisPlugin.java +++ b/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/release/TravisPlugin.java @@ -5,15 +5,22 @@ import org.gradle.api.Project; import org.gradle.api.logging.Logger; import org.gradle.api.logging.Logging; +import org.shipkit.gradle.configuration.ShipkitConfiguration; +import org.shipkit.gradle.git.GitCommitTask; import org.shipkit.gradle.git.IdentifyGitBranchTask; import org.shipkit.gradle.release.ReleaseNeededTask; import org.shipkit.internal.gradle.configuration.BasicValidator; import org.shipkit.internal.gradle.configuration.LazyConfiguration; +import org.shipkit.internal.gradle.configuration.ShipkitConfigurationPlugin; import org.shipkit.internal.gradle.git.GitBranchPlugin; +import org.shipkit.internal.gradle.git.GitPlugin; import org.shipkit.internal.gradle.git.GitSetupPlugin; import org.shipkit.internal.gradle.git.tasks.GitCheckOutTask; import org.shipkit.internal.gradle.util.StringUtil; +import static java.lang.System.getenv; +import static org.shipkit.internal.gradle.util.TravisCommitMessageUtils.decorateCommitMessagePostfix; + /** * Configures the release automation to be used with Travis CI. * Intended for root project. @@ -28,6 +35,8 @@ * so that the branch information is taken from 'TRAVIS_BRANCH' env variable. *
  • Configures {@link GitSetupPlugin}/{@link GitCheckOutTask} * so that it checks out the branch specified in env variable.
  • + *
  • Configures {@link GitSetupPlugin}/{@link org.shipkit.gradle.git.GitCommitTask} + * so that it enrich commit postfix with url to Travis build
  • *
  • Configures {@link ReleaseNeededPlugin}/{@link ReleaseNeededTask} * so that it uses information from 'TRAVIS_PULL_REQUEST' and 'TRAVIS_COMMIT_MESSAGE' env variables.
  • * @@ -39,6 +48,7 @@ public class TravisPlugin implements Plugin { @Override public void apply(final Project project) { project.getPlugins().apply(CiReleasePlugin.class); + final ShipkitConfiguration conf = project.getPlugins().apply(ShipkitConfigurationPlugin.class).getConfiguration(); final String branch = System.getenv("TRAVIS_BRANCH"); LOG.info("Branch from 'TRAVIS_BRANCH' env variable: {}", branch); @@ -52,27 +62,28 @@ public void apply(final Project project) { //set the branch to be checked out on ci build final GitCheckOutTask checkout = (GitCheckOutTask) project.getTasks().getByName(GitSetupPlugin.CHECKOUT_TASK); checkout.setRev(branch); - LazyConfiguration.lazyConfiguration(checkout, new Runnable() { - public void run() { - BasicValidator.notNull(checkout.getRev(), - "Task " + checkout.getPath() + " does not know the target revision to check out.\n" + - "In Travis CI builds, it is automatically configured from 'TRAVIS_BRANCH' environment variable.\n" + - "If you are trying to run this task outside Travis, you can export the environment variable.\n" + - "Alternatively, you can set the task's 'rev' property explicitly."); - } - }); + LazyConfiguration.lazyConfiguration(checkout, () -> BasicValidator.notNull(checkout.getRev(), + "Task " + checkout.getPath() + " does not know the target revision to check out.\n" + + "In Travis CI builds, it is automatically configured from 'TRAVIS_BRANCH' environment variable.\n" + + "If you are trying to run this task outside Travis, you can export the environment variable.\n" + + "Alternatively, you can set the task's 'rev' property explicitly.")); //update release needed task based on Travis' env variables String pr = System.getenv("TRAVIS_PULL_REQUEST"); + String buildNumber = getenv("TRAVIS_BUILD_NUMBER"); LOG.info("Pull request from 'TRAVIS_PULL_REQUEST' env variable: {}", pr); final boolean isPullRequest = pr != null && !pr.trim().isEmpty() && !pr.equals("false"); LOG.info("Pull request build: {}", isPullRequest); + String commitMessage = decorateCommitMessagePostfix(conf, buildNumber); + + GitCommitTask gitCommitTask = (GitCommitTask) project.getTasks().getByName(GitPlugin.GIT_COMMIT_TASK); + if (!StringUtil.isEmpty(commitMessage)) { + gitCommitTask.setCommitMessagePostfix(commitMessage); + } - project.getTasks().withType(ReleaseNeededTask.class, new Action() { - public void execute(ReleaseNeededTask t) { - t.setCommitMessage(System.getenv("TRAVIS_COMMIT_MESSAGE")); - t.setPullRequest(isPullRequest); - } + project.getTasks().withType(ReleaseNeededTask.class, t -> { + t.setCommitMessage(System.getenv("TRAVIS_COMMIT_MESSAGE")); + t.setPullRequest(isPullRequest); }); } } diff --git a/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/CommitMessageUtils.java b/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/TravisCommitMessageUtils.java similarity index 90% rename from subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/CommitMessageUtils.java rename to subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/TravisCommitMessageUtils.java index 943395f8..64ffcf53 100644 --- a/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/CommitMessageUtils.java +++ b/subprojects/shipkit/src/main/groovy/org/shipkit/internal/gradle/util/TravisCommitMessageUtils.java @@ -2,10 +2,10 @@ import org.shipkit.gradle.configuration.ShipkitConfiguration; -public class CommitMessageUtils { +public class TravisCommitMessageUtils { private static final String URL_PATTERN = "https://travis-ci.org/%s/builds/%s"; - public static String generateCommitMessagePostfix(ShipkitConfiguration conf, String travisBuildNumber) { + public static String decorateCommitMessagePostfix(ShipkitConfiguration conf, String travisBuildNumber) { if (!StringUtil.isEmpty(travisBuildNumber)) { return getTravisCommitMessagePostfix(conf, travisBuildNumber); } diff --git a/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/git/GitPluginTest.groovy b/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/git/GitPluginTest.groovy index f395f11f..286ebb15 100644 --- a/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/git/GitPluginTest.groovy +++ b/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/git/GitPluginTest.groovy @@ -2,7 +2,6 @@ package org.shipkit.internal.gradle.git import org.shipkit.gradle.git.GitCommitTask import org.shipkit.gradle.git.GitPushTask -import spock.util.environment.RestoreSystemProperties import testutil.PluginSpecification class GitPluginTest extends PluginSpecification { @@ -36,17 +35,4 @@ class GitPluginTest extends PluginSpecification { GitCommitTask gitCommit = project.tasks[GitPlugin.GIT_COMMIT_TASK] gitCommit.commitMessagePostfix == "[ci skip]" } - - @RestoreSystemProperties - def "configures git commit in Travis environment"() { - conf.gitHub.repository = 'my-repo' - conf.gitHub.writeAuthToken = 'foo' - System.setProperty("TRAVIS_BUILD_NUMBER", "test") - when: - project.plugins.apply(GitPlugin) - - then: - GitCommitTask gitCommit = project.tasks[GitPlugin.GIT_COMMIT_TASK] - gitCommit.commitMessagePostfix == "CI job: https://travis-ci.org/my-repo/builds/test [ci skip]" - } } diff --git a/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/util/CommitMessageUtilsTest.groovy b/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/util/TravisCommitMessageUtilsTest.groovy similarity index 83% rename from subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/util/CommitMessageUtilsTest.groovy rename to subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/util/TravisCommitMessageUtilsTest.groovy index db6cb8ce..73a185f3 100644 --- a/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/util/CommitMessageUtilsTest.groovy +++ b/subprojects/shipkit/src/test/groovy/org/shipkit/internal/gradle/util/TravisCommitMessageUtilsTest.groovy @@ -4,7 +4,7 @@ import spock.lang.Specification import org.shipkit.gradle.configuration.ShipkitConfiguration -class CommitMessageUtilsTest extends Specification { +class TravisCommitMessageUtilsTest extends Specification { def "should build travis url with [ci skip]"() { given: @@ -17,7 +17,7 @@ class CommitMessageUtilsTest extends Specification { 1 * gitHub.getRepository() >> "mockito/shipkit" 0 * _ when: - def url = CommitMessageUtils.generateCommitMessagePostfix(shipkitConfiguration, "123") + def url = TravisCommitMessageUtils.decorateCommitMessagePostfix(shipkitConfiguration, "123") then: url == "CI job: https://travis-ci.org/mockito/shipkit/builds/123 [ci skip]" } @@ -33,7 +33,7 @@ class CommitMessageUtilsTest extends Specification { 1 * git.commitMessagePostfix >> "[ci skip]" 0 * _ when: - def url = CommitMessageUtils.generateCommitMessagePostfix(shipkitConfiguration, "") + def url = TravisCommitMessageUtils.decorateCommitMessagePostfix(shipkitConfiguration, "") then: url == "[ci skip]" }