Search in sources :

Example 1 with GHMilestone

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);
    }
}
Also used : GHRepository(org.kohsuke.github.GHRepository) GHMilestone(org.kohsuke.github.GHMilestone) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) GitHub(org.kohsuke.github.GitHub) IOException(java.io.IOException)

Example 2 with GHMilestone

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);
}
Also used : GHMilestone(org.kohsuke.github.GHMilestone) Asset(org.jreleaser.model.releaser.spi.Asset) GHRelease(org.kohsuke.github.GHRelease)

Example 3 with GHMilestone

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() + ")");
    }
}
Also used : GHMilestone(org.kohsuke.github.GHMilestone)

Example 4 with GHMilestone

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());
    }
}
Also used : GHTag(org.kohsuke.github.GHTag) GHRepository(org.kohsuke.github.GHRepository) GHMilestone(org.kohsuke.github.GHMilestone) GitHub(org.kohsuke.github.GitHub) IOException(java.io.IOException) HashSet(java.util.HashSet) GHRelease(org.kohsuke.github.GHRelease)

Example 5 with GHMilestone

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();
}
Also used : HttpURLConnection(java.net.HttpURLConnection) GHRepository(org.kohsuke.github.GHRepository) REFS_TAGS(org.jreleaser.sdk.git.GitSdk.REFS_TAGS) GHDiscussion(org.kohsuke.github.GHDiscussion) URL(java.net.URL) StringUtils.isBlank(org.jreleaser.util.StringUtils.isBlank) GHFileNotFoundException(org.kohsuke.github.GHFileNotFoundException) MediaType(org.apache.tika.mime.MediaType) GitHubBuilder(org.kohsuke.github.GitHubBuilder) JReleaserLogger(org.jreleaser.util.JReleaserLogger) GHMilestone(org.kohsuke.github.GHMilestone) StreamSupport(java.util.stream.StreamSupport) PagedIterable(org.kohsuke.github.PagedIterable) GitHub(org.kohsuke.github.GitHub) Files(java.nio.file.Files) Asset(org.jreleaser.model.releaser.spi.Asset) IOException(java.io.IOException) ImpatientHttpConnector(org.kohsuke.github.extras.ImpatientHttpConnector) GHException(org.kohsuke.github.GHException) GHReleaseBuilder(org.kohsuke.github.GHReleaseBuilder) GHOrganization(org.kohsuke.github.GHOrganization) HttpConnector(org.kohsuke.github.HttpConnector) List(java.util.List) JReleaserVersion(org.jreleaser.model.JReleaserVersion) GHAsset(org.kohsuke.github.GHAsset) GHTeam(org.kohsuke.github.GHTeam) Optional(java.util.Optional) Tika(org.apache.tika.Tika) GHRelease(org.kohsuke.github.GHRelease) RB(org.jreleaser.bundle.RB) GHIssueState(org.kohsuke.github.GHIssueState) GHRepository(org.kohsuke.github.GHRepository) GHMilestone(org.kohsuke.github.GHMilestone)

Aggregations

GHMilestone (org.kohsuke.github.GHMilestone)5 IOException (java.io.IOException)3 GHRelease (org.kohsuke.github.GHRelease)3 GHRepository (org.kohsuke.github.GHRepository)3 GitHub (org.kohsuke.github.GitHub)3 Asset (org.jreleaser.model.releaser.spi.Asset)2 HttpURLConnection (java.net.HttpURLConnection)1 URL (java.net.URL)1 Files (java.nio.file.Files)1 HashSet (java.util.HashSet)1 List (java.util.List)1 Optional (java.util.Optional)1 StreamSupport (java.util.stream.StreamSupport)1 MojoExecutionException (org.apache.maven.plugin.MojoExecutionException)1 Tika (org.apache.tika.Tika)1 MediaType (org.apache.tika.mime.MediaType)1 RB (org.jreleaser.bundle.RB)1 JReleaserVersion (org.jreleaser.model.JReleaserVersion)1 REFS_TAGS (org.jreleaser.sdk.git.GitSdk.REFS_TAGS)1 JReleaserLogger (org.jreleaser.util.JReleaserLogger)1