use of org.gradle.api.Task in project shipkit by mockito.
the class BintrayReleasePlugin method apply.
public void apply(final Project project) {
project.getPlugins().apply(ReleasePlugin.class);
final ShipkitConfiguration conf = project.getPlugins().apply(ShipkitConfigurationPlugin.class).getConfiguration();
final Task gitPush = project.getTasks().getByName(GitPlugin.GIT_PUSH_TASK);
final Task performRelease = project.getTasks().getByName(ReleasePlugin.PERFORM_RELEASE_TASK);
project.allprojects(subproject -> {
subproject.getPlugins().withType(ShipkitBintrayPlugin.class, plugin -> {
Task bintrayUpload = subproject.getTasks().getByName(ShipkitBintrayPlugin.BINTRAY_UPLOAD_TASK);
performRelease.dependsOn(bintrayUpload);
// bintray upload after git push so that when git push fails we don't publish jars to bintray
// git push is easier to undo than deleting published jars (not possible with Central)
bintrayUpload.mustRunAfter(gitPush);
final BintrayExtension bintray = subproject.getExtensions().getByType(BintrayExtension.class);
deferredConfiguration(subproject, () -> {
UpdateReleaseNotesTask updateNotes = (UpdateReleaseNotesTask) project.getTasks().getByName(ReleaseNotesPlugin.UPDATE_NOTES_TASK);
String userSpecifiedRepo = conf.getLenient().getReleaseNotes().getPublicationRepository();
if (userSpecifiedRepo != null) {
updateNotes.setPublicationRepository(userSpecifiedRepo);
} else {
updateNotes.setPublicationRepository(BintrayUtil.getRepoLink(bintray));
}
});
});
subproject.getPlugins().withType(JavaBintrayPlugin.class, plugin -> {
// Making git push run as late as possible because it is an operation that is hard to reverse.
// Git push will be executed after all tasks needed by bintrayUpload
// but before bintrayUpload.
// Using task path as String because the task comes from maven-publish new configuration model
// and we cannot refer to it in a normal way, by task instance.
String mavenLocalTask = subproject.getPath() + ":" + MAVEN_LOCAL_TASK;
gitPush.mustRunAfter(mavenLocalTask);
});
});
}
use of org.gradle.api.Task in project shipkit by mockito.
the class GitBranchPlugin method provideBranchTo.
/**
* Configures some task that needs branch information
* and an action that is executed when the branch info is available.
*
* @param needsBranch some task that needs branch information. Necessary 'dependsOn' will be added.
* @param branchAction executed when branch info is ready. Hooked up as 'doLast' action.
*/
public void provideBranchTo(Task needsBranch, final Action<String> branchAction) {
final IdentifyGitBranchTask branchTask = (IdentifyGitBranchTask) needsBranch.getProject().getTasks().getByName(GitBranchPlugin.IDENTIFY_GIT_BRANCH);
needsBranch.dependsOn(branchTask);
branchTask.doLast(new Action<Task>() {
@Override
public void execute(Task task) {
branchAction.execute(branchTask.getBranch());
}
});
}
use of org.gradle.api.Task in project shipkit by mockito.
the class UpgradeDependencyPlugin method apply.
@Override
public void apply(final Project project) {
IncubatingWarning.warn("upgrade-dependency plugin");
final ShipkitConfiguration conf = project.getPlugins().apply(ShipkitConfigurationPlugin.class).getConfiguration();
final GitOriginPlugin gitOriginPlugin = project.getRootProject().getPlugins().apply(GitOriginPlugin.class);
project.getPlugins().apply(GitConfigPlugin.class);
upgradeDependencyExtension = project.getExtensions().create("upgradeDependency", UpgradeDependencyExtension.class);
// set defaults
upgradeDependencyExtension.setBuildFile(project.file("build.gradle"));
upgradeDependencyExtension.setBaseBranch("master");
String dependency = (String) project.findProperty(DEPENDENCY_PROJECT_PROPERTY);
new DependencyNewVersionParser(dependency).fillVersionUpgradeExtension(upgradeDependencyExtension);
TaskMaker.task(project, CHECKOUT_BASE_BRANCH, GitCheckOutTask.class, new Action<GitCheckOutTask>() {
@Override
public void execute(final GitCheckOutTask task) {
task.setDescription("Checks out the base branch.");
deferredConfiguration(project, new Runnable() {
@Override
public void run() {
task.setRev(upgradeDependencyExtension.getBaseBranch());
}
});
}
});
TaskMaker.task(project, PULL_UPSTREAM, GitPullTask.class, new Action<GitPullTask>() {
@Override
public void execute(final GitPullTask task) {
task.setDescription("Performs git pull from upstream repository.");
task.mustRunAfter(CHECKOUT_BASE_BRANCH);
task.setDryRun(conf.isDryRun());
deferredConfiguration(project, new Runnable() {
@Override
public void run() {
task.setRev(upgradeDependencyExtension.getBaseBranch());
}
});
gitOriginPlugin.provideOriginRepo(task, new Action<String>() {
public void execute(String originRepo) {
GitUrlInfo info = new GitUrlInfo(conf);
task.setUrl(info.getGitUrl());
task.setSecretValue(info.getWriteToken());
}
});
}
});
final FindOpenPullRequestTask findOpenPullRequestTask = TaskMaker.task(project, FIND_OPEN_PULL_REQUEST, FindOpenPullRequestTask.class, new Action<FindOpenPullRequestTask>() {
@Override
public void execute(final FindOpenPullRequestTask task) {
task.setDescription("Find an open pull request with version upgrade, if such exists.");
task.mustRunAfter(PULL_UPSTREAM);
task.setGitHubApiUrl(conf.getGitHub().getApiUrl());
task.setAuthToken(conf.getLenient().getGitHub().getReadOnlyAuthToken());
task.setUpstreamRepositoryName(conf.getGitHub().getRepository());
task.setVersionBranchRegex(getVersionBranchName(upgradeDependencyExtension.getDependencyName(), ReplaceVersionTask.VERSION_REGEX));
}
});
TaskMaker.task(project, CHECKOUT_VERSION_BRANCH, GitCheckOutTask.class, new Action<GitCheckOutTask>() {
public void execute(final GitCheckOutTask task) {
task.setDescription("Creates a new version branch and checks it out.");
task.mustRunAfter(FIND_OPEN_PULL_REQUEST);
findOpenPullRequestTask.provideOpenPullRequest(task, new Action<Optional<PullRequest>>() {
@Override
public void execute(Optional<PullRequest> pullRequest) {
if (pullRequest.isPresent()) {
// don't create a new branch if there is already a branch with open pull request with version upgrade
task.setNewBranch(false);
} else {
task.setNewBranch(true);
}
task.setRev(getCurrentVersionBranchName(upgradeDependencyExtension.getDependencyName(), upgradeDependencyExtension.getNewVersion(), pullRequest));
}
});
}
});
final ReplaceVersionTask replaceVersionTask = TaskMaker.task(project, REPLACE_VERSION, ReplaceVersionTask.class, new Action<ReplaceVersionTask>() {
@Override
public void execute(final ReplaceVersionTask task) {
task.setDescription("Replaces dependency version in build file.");
task.mustRunAfter(CHECKOUT_VERSION_BRANCH);
deferredConfiguration(project, new Runnable() {
@Override
public void run() {
task.setDependencyGroup(upgradeDependencyExtension.getDependencyGroup());
task.setNewVersion(upgradeDependencyExtension.getNewVersion());
task.setDependencyName(upgradeDependencyExtension.getDependencyName());
task.setBuildFile(upgradeDependencyExtension.getBuildFile());
}
});
}
});
final ShipkitExecTask shipkitExecTask = TaskMaker.task(project, COMMIT_VERSION_UPGRADE, ShipkitExecTask.class, new Action<ShipkitExecTask>() {
@Override
public void execute(final ShipkitExecTask exec) {
exec.setDescription("Commits updated build file.");
exec.mustRunAfter(REPLACE_VERSION);
exec.dependsOn(GitConfigPlugin.SET_EMAIL_TASK, GitConfigPlugin.SET_USER_TASK);
deferredConfiguration(project, new Runnable() {
@Override
public void run() {
String message = String.format("%s version upgraded to %s", upgradeDependencyExtension.getDependencyName(), upgradeDependencyExtension.getNewVersion());
exec.execCommand(execCommand("Committing build file", "git", "commit", "--author", GitUtil.getGitGenericUserNotation(conf.getGit().getUser(), conf.getGit().getEmail()), "-m", message, upgradeDependencyExtension.getBuildFile().getAbsolutePath()));
}
});
exec.onlyIf(wasBuildFileUpdatedSpec(replaceVersionTask));
}
});
final GitPushTask gitPushTask = TaskMaker.task(project, PUSH_VERSION_UPGRADE, GitPushTask.class, new Action<GitPushTask>() {
@Override
public void execute(final GitPushTask task) {
task.setDescription("Pushes updated config file to an update branch.");
task.mustRunAfter(COMMIT_VERSION_UPGRADE);
task.setDryRun(conf.isDryRun());
gitOriginPlugin.provideOriginRepo(task, new Action<String>() {
public void execute(String originRepo) {
GitUrlInfo info = new GitUrlInfo(conf);
task.setUrl(info.getGitUrl());
task.setSecretValue(info.getWriteToken());
}
});
findOpenPullRequestTask.provideOpenPullRequest(task, new Action<Optional<PullRequest>>() {
@Override
public void execute(Optional<PullRequest> pullRequest) {
task.getTargets().add(getCurrentVersionBranchName(upgradeDependencyExtension.getDependencyName(), upgradeDependencyExtension.getNewVersion(), pullRequest));
}
});
task.onlyIf(wasBuildFileUpdatedSpec(replaceVersionTask));
}
});
final CreatePullRequestTask createPullRequestTask = TaskMaker.task(project, CREATE_PULL_REQUEST, CreatePullRequestTask.class, new Action<CreatePullRequestTask>() {
@Override
public void execute(final CreatePullRequestTask task) {
task.setDescription("Creates a pull request from branch with version upgraded to master");
task.mustRunAfter(PUSH_VERSION_UPGRADE);
task.setGitHubApiUrl(conf.getGitHub().getApiUrl());
task.setDryRun(conf.isDryRun());
task.setAuthToken(conf.getLenient().getGitHub().getWriteAuthToken());
task.setPullRequestTitle(getPullRequestTitle(upgradeDependencyExtension));
task.setPullRequestDescription(getPullRequestDescription(upgradeDependencyExtension));
task.setUpstreamRepositoryName(conf.getGitHub().getRepository());
gitOriginPlugin.provideOriginRepo(task, new Action<String>() {
@Override
public void execute(String originRepoName) {
task.setForkRepositoryName(originRepoName);
}
});
findOpenPullRequestTask.provideOpenPullRequest(task, new Action<Optional<PullRequest>>() {
@Override
public void execute(Optional<PullRequest> pullRequest) {
task.setVersionBranch(getCurrentVersionBranchName(upgradeDependencyExtension.getDependencyName(), upgradeDependencyExtension.getNewVersion(), pullRequest));
}
});
deferredConfiguration(project, new Runnable() {
@Override
public void run() {
task.setBaseBranch(upgradeDependencyExtension.getBaseBranch());
}
});
task.onlyIf(wasOpenPullRequestNotFound(findOpenPullRequestTask));
task.onlyIf(wasBuildFileUpdatedSpec(replaceVersionTask));
}
});
TaskMaker.task(project, MERGE_PULL_REQUEST, MergePullRequestTask.class, new Action<MergePullRequestTask>() {
@Override
public void execute(final MergePullRequestTask task) {
task.setDescription("Merge pull request when all checks will be passed");
task.mustRunAfter(CREATE_PULL_REQUEST);
task.setGitHubApiUrl(conf.getGitHub().getApiUrl());
task.setDryRun(conf.isDryRun());
task.setAuthToken(conf.getLenient().getGitHub().getWriteAuthToken());
task.setBaseBranch(upgradeDependencyExtension.getBaseBranch());
task.setUpstreamRepositoryName(conf.getGitHub().getRepository());
gitOriginPlugin.provideOriginRepo(task, new Action<String>() {
@Override
public void execute(String originRepoName) {
task.setForkRepositoryName(originRepoName);
}
});
createPullRequestTask.provideCreatedPullRequest(task, new Action<PullRequest>() {
@Override
public void execute(PullRequest pullRequest) {
setPullRequestDataToTask(Optional.ofNullable(pullRequest), task);
}
});
deferredConfiguration(project, new Runnable() {
@Override
public void run() {
task.setBaseBranch(upgradeDependencyExtension.getBaseBranch());
}
});
task.onlyIf(wasOpenPullRequestNotFound(findOpenPullRequestTask));
task.onlyIf(wasBuildFileUpdatedSpec(replaceVersionTask));
}
});
TaskMaker.task(project, PERFORM_VERSION_UPGRADE, new Action<Task>() {
@Override
public void execute(Task task) {
task.setDescription("Checkouts new version branch, updates Shipkit dependency in config file, commits and pushes.");
task.dependsOn(CHECKOUT_BASE_BRANCH);
task.dependsOn(FIND_OPEN_PULL_REQUEST);
task.dependsOn(PULL_UPSTREAM);
task.dependsOn(CHECKOUT_VERSION_BRANCH);
task.dependsOn(REPLACE_VERSION);
task.dependsOn(COMMIT_VERSION_UPGRADE);
task.dependsOn(PUSH_VERSION_UPGRADE);
task.dependsOn(CREATE_PULL_REQUEST);
task.dependsOn(MERGE_PULL_REQUEST);
}
});
addLazyDependencyValidation(dependency, createPullRequestTask, gitPushTask, findOpenPullRequestTask, replaceVersionTask, shipkitExecTask);
}
use of org.gradle.api.Task in project spring-security by spring-projects.
the class CheckAntoraVersionPluginTests method defaultsPropertiesWhenSnapshot.
@Test
void defaultsPropertiesWhenSnapshot() {
String expectedVersion = "1.0.0-SNAPSHOT";
Project project = ProjectBuilder.builder().build();
project.setVersion(expectedVersion);
project.getPluginManager().apply(CheckAntoraVersionPlugin.class);
Task task = project.getTasks().findByName(CheckAntoraVersionPlugin.ANTORA_CHECK_VERSION_TASK_NAME);
assertThat(task).isInstanceOf(CheckAntoraVersionTask.class);
CheckAntoraVersionTask checkAntoraVersionTask = (CheckAntoraVersionTask) task;
assertThat(checkAntoraVersionTask.getAntoraVersion().get()).isEqualTo("1.0.0");
assertThat(checkAntoraVersionTask.getAntoraPrerelease().get()).isEqualTo("-SNAPSHOT");
assertThat(checkAntoraVersionTask.getAntoraDisplayVersion().isPresent()).isFalse();
assertThat(checkAntoraVersionTask.getAntoraYmlFile().getAsFile().get()).isEqualTo(project.file("antora.yml"));
}
use of org.gradle.api.Task in project spring-security by spring-projects.
the class CheckAntoraVersionPluginTests method actualAntoraPrereleaseNull.
@Test
void actualAntoraPrereleaseNull() throws Exception {
String expectedVersion = "1.0.0-SNAPSHOT";
Project project = ProjectBuilder.builder().build();
File rootDir = project.getRootDir();
IOUtils.write("version: '1.0.0'", new FileOutputStream(new File(rootDir, "antora.yml")), StandardCharsets.UTF_8);
project.setVersion(expectedVersion);
project.getPluginManager().apply(CheckAntoraVersionPlugin.class);
Task task = project.getTasks().findByName(CheckAntoraVersionPlugin.ANTORA_CHECK_VERSION_TASK_NAME);
assertThat(task).isInstanceOf(CheckAntoraVersionTask.class);
CheckAntoraVersionTask checkAntoraVersionTask = (CheckAntoraVersionTask) task;
assertThatExceptionOfType(GradleException.class).isThrownBy(() -> checkAntoraVersionTask.check());
}
Aggregations