Search in sources :

Example 1 with Asset

use of org.jreleaser.model.releaser.spi.Asset in project jreleaser by jreleaser.

the class Gitlab method uploadAssets.

Collection<FileUpload> uploadAssets(String owner, String repoName, String identifier, List<Asset> assets) throws IOException, RestAPIException {
    logger.debug(RB.$("git.upload.assets"), owner, repoName);
    List<FileUpload> uploads = new ArrayList<>();
    Project project = getProject(repoName, identifier);
    for (Asset asset : assets) {
        if (0 == Files.size(asset.getPath()) || !Files.exists(asset.getPath())) {
            // do not upload empty or non existent files
            continue;
        }
        logger.info(" " + RB.$("git.upload.asset"), asset.getFilename());
        try {
            FileUpload upload = api.uploadFile(project.getId(), toFormData(asset.getPath()));
            upload.setName(asset.getFilename());
            uploads.add(upload);
        } catch (IOException | RestAPIException e) {
            logger.error(" " + RB.$("git.upload.asset.failure"), asset.getFilename());
            throw e;
        }
    }
    return uploads;
}
Also used : Project(org.jreleaser.sdk.gitlab.api.Project) ArrayList(java.util.ArrayList) Asset(org.jreleaser.model.releaser.spi.Asset) RestAPIException(org.jreleaser.sdk.commons.RestAPIException) IOException(java.io.IOException) FileUpload(org.jreleaser.sdk.gitlab.api.FileUpload)

Example 2 with Asset

use of org.jreleaser.model.releaser.spi.Asset in project jreleaser by jreleaser.

the class GitlabReleaser method createRelease.

private void createRelease(Gitlab api, String tagName, String changelog, boolean deleteTags) throws IOException {
    org.jreleaser.model.Gitlab gitlab = context.getModel().getRelease().getGitlab();
    Collection<LinkRequest> links = collectUploadLinks(gitlab);
    if (context.isDryrun()) {
        if (!assets.isEmpty()) {
            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());
            }
        }
        if (!links.isEmpty()) {
            for (LinkRequest link : links) {
                context.getLogger().info(" " + RB.$("git.upload.asset"), link.getName());
            }
        }
        return;
    }
    if (deleteTags) {
        deleteTags(api, gitlab.getOwner(), gitlab.getName(), gitlab.getIdentifier(), tagName);
    }
    // local tag
    if (deleteTags || !gitlab.isSkipTag()) {
        context.getLogger().debug(RB.$("git.releaser.repository.tag"), tagName);
        GitSdk.of(context).tag(tagName, true, context);
    }
    Release release = new Release();
    release.setName(gitlab.getEffectiveReleaseName());
    release.setTagName(tagName);
    release.setRef(gitlab.getBranch());
    release.setDescription(changelog);
    // remote tag/release
    api.createRelease(gitlab.getOwner(), gitlab.getName(), gitlab.getIdentifier(), release);
    if (!assets.isEmpty()) {
        Collection<FileUpload> uploads = api.uploadAssets(gitlab.getOwner(), gitlab.getName(), gitlab.getIdentifier(), assets);
        api.linkReleaseAssets(gitlab.getOwner(), gitlab.getName(), release, gitlab.getIdentifier(), uploads);
    }
    if (!links.isEmpty()) {
        api.linkAssets(gitlab.getOwner(), gitlab.getName(), release, gitlab.getIdentifier(), links);
    }
    if (gitlab.getMilestone().isClose() && !context.getModel().getProject().isSnapshot()) {
        Optional<Milestone> milestone = api.findMilestoneByName(gitlab.getOwner(), gitlab.getName(), gitlab.getIdentifier(), gitlab.getMilestone().getEffectiveName());
        if (milestone.isPresent()) {
            api.closeMilestone(gitlab.getOwner(), gitlab.getName(), gitlab.getIdentifier(), milestone.get());
        }
    }
}
Also used : LinkRequest(org.jreleaser.sdk.gitlab.api.LinkRequest) Milestone(org.jreleaser.sdk.gitlab.api.Milestone) Asset(org.jreleaser.model.releaser.spi.Asset) Release(org.jreleaser.sdk.gitlab.api.Release) FileUpload(org.jreleaser.sdk.gitlab.api.FileUpload)

Example 3 with Asset

use of org.jreleaser.model.releaser.spi.Asset in project jreleaser by jreleaser.

the class GiteaReleaser method createRelease.

private void createRelease(Gitea api, String tagName, String changelog, boolean deleteTags) throws IOException {
    org.jreleaser.model.Gitea gitea = resolveGiteaFromModel();
    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, gitea.getOwner(), gitea.getName(), tagName);
    }
    // local tag
    if (deleteTags || !gitea.isSkipTag()) {
        context.getLogger().debug(RB.$("git.releaser.repository.tag"), tagName);
        GitSdk.of(context).tag(tagName, true, context);
    }
    // remote tag/release
    GtRelease release = new GtRelease();
    release.setName(gitea.getEffectiveReleaseName());
    release.setTagName(tagName);
    release.setTargetCommitish(gitea.getBranch());
    release.setBody(changelog);
    release = api.createRelease(gitea.getOwner(), gitea.getName(), release);
    api.uploadAssets(gitea.getOwner(), gitea.getName(), release, assets);
    if (gitea.getMilestone().isClose() && !context.getModel().getProject().isSnapshot()) {
        Optional<GtMilestone> milestone = api.findMilestoneByName(gitea.getOwner(), gitea.getName(), gitea.getMilestone().getEffectiveName());
        if (milestone.isPresent()) {
            api.closeMilestone(gitea.getOwner(), gitea.getName(), milestone.get());
        }
    }
}
Also used : GtRelease(org.jreleaser.sdk.gitea.api.GtRelease) GtMilestone(org.jreleaser.sdk.gitea.api.GtMilestone) Asset(org.jreleaser.model.releaser.spi.Asset)

Example 4 with Asset

use of org.jreleaser.model.releaser.spi.Asset 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 5 with Asset

use of org.jreleaser.model.releaser.spi.Asset in project jreleaser by jreleaser.

the class Github method uploadAssets.

void uploadAssets(GHRelease release, List<Asset> assets) throws IOException {
    for (Asset asset : assets) {
        if (0 == Files.size(asset.getPath()) || !Files.exists(asset.getPath())) {
            // do not upload empty or non existent files
            continue;
        }
        logger.info(" " + RB.$("git.upload.asset"), asset.getFilename());
        GHAsset ghasset = release.uploadAsset(asset.getPath().toFile(), MediaType.parse(tika.detect(asset.getPath())).toString());
        if (!"uploaded".equalsIgnoreCase(ghasset.getState())) {
            logger.warn(" " + RB.$("git.upload.asset.failure"), asset.getFilename());
        }
    }
}
Also used : Asset(org.jreleaser.model.releaser.spi.Asset) GHAsset(org.kohsuke.github.GHAsset) GHAsset(org.kohsuke.github.GHAsset)

Aggregations

Asset (org.jreleaser.model.releaser.spi.Asset)5 FileUpload (org.jreleaser.sdk.gitlab.api.FileUpload)2 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1 RestAPIException (org.jreleaser.sdk.commons.RestAPIException)1 GtMilestone (org.jreleaser.sdk.gitea.api.GtMilestone)1 GtRelease (org.jreleaser.sdk.gitea.api.GtRelease)1 LinkRequest (org.jreleaser.sdk.gitlab.api.LinkRequest)1 Milestone (org.jreleaser.sdk.gitlab.api.Milestone)1 Project (org.jreleaser.sdk.gitlab.api.Project)1 Release (org.jreleaser.sdk.gitlab.api.Release)1 GHAsset (org.kohsuke.github.GHAsset)1 GHMilestone (org.kohsuke.github.GHMilestone)1 GHRelease (org.kohsuke.github.GHRelease)1