mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-05-31 17:22:13 +00:00
Add gradle task to update project version
Closes gh-10455
This commit is contained in:
parent
f8675343e6
commit
d644f32baa
@ -19,6 +19,7 @@ apply plugin: 'io.spring.convention.root'
|
|||||||
apply plugin: 'io.spring.convention.include-check-remote'
|
apply plugin: 'io.spring.convention.include-check-remote'
|
||||||
apply plugin: 'org.jetbrains.kotlin.jvm'
|
apply plugin: 'org.jetbrains.kotlin.jvm'
|
||||||
apply plugin: 'org.springframework.security.update-dependencies'
|
apply plugin: 'org.springframework.security.update-dependencies'
|
||||||
|
apply plugin: 'org.springframework.security.update-version'
|
||||||
apply plugin: 'org.springframework.security.sagan'
|
apply plugin: 'org.springframework.security.sagan'
|
||||||
apply plugin: 'org.springframework.github.milestone'
|
apply plugin: 'org.springframework.github.milestone'
|
||||||
apply plugin: 'org.springframework.github.changelog'
|
apply plugin: 'org.springframework.github.changelog'
|
||||||
|
@ -46,6 +46,10 @@ gradlePlugin {
|
|||||||
id = "org.springframework.security.update-dependencies"
|
id = "org.springframework.security.update-dependencies"
|
||||||
implementationClass = "org.springframework.security.convention.versions.UpdateDependenciesPlugin"
|
implementationClass = "org.springframework.security.convention.versions.UpdateDependenciesPlugin"
|
||||||
}
|
}
|
||||||
|
updateProjectVersion {
|
||||||
|
id = "org.springframework.security.update-version"
|
||||||
|
implementationClass = "org.springframework.security.convention.versions.UpdateProjectVersionPlugin"
|
||||||
|
}
|
||||||
sagan {
|
sagan {
|
||||||
id = "org.springframework.security.sagan"
|
id = "org.springframework.security.sagan"
|
||||||
implementationClass = "org.springframework.gradle.sagan.SaganPlugin"
|
implementationClass = "org.springframework.gradle.sagan.SaganPlugin"
|
||||||
|
@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019-2022 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.security.convention.versions;
|
||||||
|
|
||||||
|
import org.gradle.api.Action;
|
||||||
|
import org.gradle.api.Plugin;
|
||||||
|
import org.gradle.api.Project;
|
||||||
|
|
||||||
|
public class UpdateProjectVersionPlugin implements Plugin<Project> {
|
||||||
|
@Override
|
||||||
|
public void apply(Project project) {
|
||||||
|
project.getTasks().register("updateProjectVersion", UpdateProjectVersionTask.class, new Action<UpdateProjectVersionTask>() {
|
||||||
|
@Override
|
||||||
|
public void execute(UpdateProjectVersionTask updateProjectVersionTask) {
|
||||||
|
updateProjectVersionTask.setGroup("Release");
|
||||||
|
updateProjectVersionTask.setDescription(
|
||||||
|
"Updates the project version to the next release in gradle.properties and optionally commits the changes");
|
||||||
|
updateProjectVersionTask.dependsOn("gitHubNextReleaseMilestone");
|
||||||
|
updateProjectVersionTask.getNextVersionFile().fileProvider(project.provider(() -> project.file("next-release.yml")));
|
||||||
|
updateProjectVersionTask.setCommit("true".equals(project.findProperty("commit")));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,81 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019-2022 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.security.convention.versions;
|
||||||
|
|
||||||
|
import org.gradle.api.DefaultTask;
|
||||||
|
import org.gradle.api.Project;
|
||||||
|
import org.gradle.api.file.RegularFileProperty;
|
||||||
|
import org.gradle.api.tasks.Input;
|
||||||
|
import org.gradle.api.tasks.InputFile;
|
||||||
|
import org.gradle.api.tasks.Optional;
|
||||||
|
import org.gradle.api.tasks.TaskAction;
|
||||||
|
import org.yaml.snakeyaml.Yaml;
|
||||||
|
import org.yaml.snakeyaml.constructor.Constructor;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
|
||||||
|
import org.springframework.gradle.github.milestones.NextVersionYml;
|
||||||
|
|
||||||
|
public abstract class UpdateProjectVersionTask extends DefaultTask {
|
||||||
|
|
||||||
|
@InputFile
|
||||||
|
public abstract RegularFileProperty getNextVersionFile();
|
||||||
|
|
||||||
|
@Input
|
||||||
|
@Optional
|
||||||
|
private Boolean commit;
|
||||||
|
|
||||||
|
@TaskAction
|
||||||
|
public void checkReleaseDueToday() throws FileNotFoundException {
|
||||||
|
File nextVersionFile = getNextVersionFile().getAsFile().get();
|
||||||
|
Yaml yaml = new Yaml(new Constructor(NextVersionYml.class));
|
||||||
|
NextVersionYml nextVersionYml = yaml.load(new FileInputStream(nextVersionFile));
|
||||||
|
String nextVersion = nextVersionYml.getVersion();
|
||||||
|
if (nextVersion == null) {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"Could not find version property in provided file " + nextVersionFile.getName());
|
||||||
|
}
|
||||||
|
String currentVersion = getProject().getVersion().toString();
|
||||||
|
File gradlePropertiesFile = getProject().getRootProject().file(Project.GRADLE_PROPERTIES);
|
||||||
|
if (!gradlePropertiesFile.exists()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
System.out.println("Updating the project version in " + Project.GRADLE_PROPERTIES + " from " + currentVersion
|
||||||
|
+ " to " + nextVersion);
|
||||||
|
FileUtils.replaceFileText(gradlePropertiesFile, (gradlePropertiesText) -> {
|
||||||
|
gradlePropertiesText = gradlePropertiesText.replace("version=" + currentVersion, "version=" + nextVersion);
|
||||||
|
return gradlePropertiesText;
|
||||||
|
});
|
||||||
|
if (this.commit) {
|
||||||
|
System.out.println("Committing the version update");
|
||||||
|
File rootDir = getProject().getRootDir();
|
||||||
|
String commitMessage = "Release " + nextVersion;
|
||||||
|
CommandLineUtils.runCommand(rootDir, "git", "commit", "-am", commitMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean getCommit() {
|
||||||
|
return commit;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCommit(Boolean commit) {
|
||||||
|
this.commit = commit;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user