use of org.kohsuke.github.GHMilestone in project jersey by eclipse-ee4j.
the class ReleaseNotesMojo method execute.
public void execute() throws MojoExecutionException, MojoFailureException {
validateParameters();
try {
final GitHub github = (dryRun || !publishToGithub) ? GitHub.connectAnonymously() : (githubPassword != null ? GitHub.connectUsingPassword(githubLogin, githubPassword) : GitHub.connect(githubLogin, githubToken));
final GHRepository repository = github.getRepository(githubApiUrl);
final PagedIterable<GHMilestone> milestones = repository.listMilestones(GHIssueState.ALL);
for (final GHMilestone milestone : milestones) {
if (releaseVersion.equalsIgnoreCase(milestone.getTitle())) {
getLog().info(String.format("Milestone found for release version: %s", releaseVersion));
processMilestone(releaseVersion, milestone, repository, publishToGithub, dryRun, templateFilePath, releaseDate, releaseNotesFilePath, getLog());
}
}
} catch (IOException e) {
throw new MojoExecutionException(e.getMessage(), e);
}
}
use of org.kohsuke.github.GHMilestone in project jreleaser by jreleaser.
the class GithubReleaser method createRelease.
private void createRelease(Github api, String tagName, String changelog, boolean deleteTags) throws IOException {
org.jreleaser.model.Github github = context.getModel().getRelease().getGithub();
if (context.isDryrun()) {
for (Asset asset : assets) {
if (0 == Files.size(asset.getPath()) || !Files.exists(asset.getPath())) {
// do not upload empty or non existent files
continue;
}
context.getLogger().info(" " + RB.$("git.upload.asset"), asset.getFilename());
}
return;
}
if (deleteTags) {
deleteTags(api, github.getCanonicalRepoName(), tagName);
}
// local tag
if (deleteTags || !github.isSkipTag()) {
context.getLogger().debug(RB.$("git.releaser.repository.tag"), tagName);
GitSdk.of(context).tag(tagName, true, context);
}
// remote tag/release
GHRelease release = api.createRelease(github.getCanonicalRepoName(), tagName).commitish(github.getBranch()).name(github.getEffectiveReleaseName()).draft(github.isDraft()).prerelease(github.getPrerelease().isEnabled()).body(changelog).create();
api.uploadAssets(release, assets);
if (github.getMilestone().isClose() && !context.getModel().getProject().isSnapshot()) {
Optional<GHMilestone> milestone = api.findMilestoneByName(github.getOwner(), github.getName(), github.getMilestone().getEffectiveName());
if (milestone.isPresent()) {
api.closeMilestone(github.getOwner(), github.getName(), milestone.get());
}
}
linkDiscussion(tagName, release);
}
use of org.kohsuke.github.GHMilestone in project mandrel-packaging by graalvm.
the class MandrelRelease method manageMilestones.
private void manageMilestones(GHRepository repository, PagedIterable<GHMilestone> ghMilestones, GHMilestone milestone) throws IOException {
if (dryRun || !suffix.equals("Final")) {
return;
}
if (milestone != null) {
milestone.close();
info("Closed milestone " + milestone.getTitle() + " (" + milestone.getNumber() + ")");
}
GHMilestone newMilestone = ghMilestones.toList().stream().filter(m -> m.getTitle().equals(newVersion.toString())).findAny().orElse(null);
if (newMilestone == null) {
newMilestone = repository.createMilestone(newVersion.toString(), "");
info("Created milestone " + newMilestone.getTitle() + " (" + newMilestone.getNumber() + ")");
}
}
use of org.kohsuke.github.GHMilestone in project mandrel-packaging by graalvm.
the class MandrelRelease method createGHRelease.
private void createGHRelease() throws IOException {
final Set<String> jdkVersionsUsed = new HashSet<>();
if (download) {
if (windowsBuildNumber != UNDEFINED || linuxBuildNumber != UNDEFINED) {
jdkVersionsUsed.addAll(downloadAssets(version));
} else {
error("At least one of --windows-job-build-number, --linux-job-build-number must be specified. Terminating.");
}
if (jdkVersionsUsed.size() != 2) {
warn("There are supposed to be 2 distinct JDK versions used, one for JDK 17 and one for JDK 11." + "This is unexpected: " + String.join(",", jdkVersionsUsed));
}
}
if (jdkVersionsUsed.isEmpty()) {
jdkVersionsUsed.add(System.getProperty("java.runtime.version"));
}
final GitHub github = connectToGitHub();
try {
final GHRepository repository = github.getRepository(REPOSITORY_NAME);
final PagedIterable<GHMilestone> ghMilestones = repository.listMilestones(GHIssueState.OPEN);
final String finalVersion = version.majorMinorMicroPico() + "-Final";
final GHMilestone milestone = ghMilestones.toList().stream().filter(m -> m.getTitle().equals(finalVersion)).findAny().orElse(null);
final List<GHTag> tags = repository.listTags().toList();
String changelog = createChangelog(repository, milestone, tags);
if (dryRun) {
warn("Skipping release due to --dry-run");
info("Release body would look like");
System.out.println(releaseMainBody(version, changelog, jdkVersionsUsed));
return;
}
// Ensure that the tag exists
final String tag = "mandrel-" + version;
if (tags.stream().noneMatch(x -> x.getName().equals(tag))) {
error("Please create tag " + tag + " and try again");
}
final GHRelease ghRelease = repository.createRelease(tag).name("Mandrel " + version).prerelease(!suffix.equals("Final")).body(releaseMainBody(version, changelog, jdkVersionsUsed)).draft(true).create();
uploadAssets(version.toString(), ghRelease);
info("Created new draft release: " + ghRelease.getHtmlUrl());
info("Please review and publish!");
manageMilestones(repository, ghMilestones, milestone);
} catch (IOException e) {
e.printStackTrace();
error(e.getMessage());
}
}
use of org.kohsuke.github.GHMilestone in project jreleaser by jreleaser.
the class Github method findMilestoneByName.
Optional<GHMilestone> findMilestoneByName(String owner, String repo, String milestoneName) throws IOException {
logger.debug(RB.$("git.milestone.lookup"), milestoneName, owner, repo);
GHRepository repository = findRepository(owner, repo);
PagedIterable<GHMilestone> milestones = repository.listMilestones(GHIssueState.OPEN);
return StreamSupport.stream(milestones.spliterator(), false).filter(m -> milestoneName.equals(m.getTitle())).findFirst();
}
Aggregations