Skip to content

Commit

Permalink
feat(release): support bitbucket cloud releases
Browse files Browse the repository at this point in the history
  • Loading branch information
viqueen committed May 17, 2023
1 parent c315273 commit 62d5137
Show file tree
Hide file tree
Showing 31 changed files with 1,426 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Copyright 2020-2023 The JReleaser 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.jreleaser.model.api.release;

/**
* @author Hasnae Rehioui
* @since 1.7.0
*/
public interface BitbucketcloudReleaser extends Releaser {
String TYPE = "bitbucketcloud";
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
* @since 0.1.0
*/
public interface Release extends Domain {
BitbucketcloudReleaser getBitbucketcloud();
GithubReleaser getGithub();

GitlabReleaser getGitlab();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Copyright 2020-2023 The JReleaser 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.jreleaser.model.api.upload;

/**
* @author Hasnae Rehioui
* @since 1.7.0
*/
public interface BitbucketcloudUploader extends Uploader {
String TYPE = "bitbucketcloud";

String getHost();

String getToken();

String getPackageName();

String getPackageVersion();

String getProjectIdentifier();
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
public interface Upload extends Domain, Activatable {
Map<String, ? extends ArtifactoryUploader> getArtifactory();

Map<String, ? extends BitbucketcloudUploader> getBitbucketcloud();

Map<String, ? extends FtpUploader> getFtp();

Map<String, ? extends GiteaUploader> getGitea();
Expand Down
1 change: 1 addition & 0 deletions core/jreleaser-engine/jreleaser-engine.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ dependencies {
api project(':jreleaser-webhooks-java-sdk')
api project(':jreleaser-zulip-java-sdk')
// release
api project(':jreleaser-bitbucketcloud-java-sdk')
api project(':jreleaser-github-java-sdk')
api project(':jreleaser-gitlab-java-sdk')
api project(':jreleaser-gitea-java-sdk')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.jreleaser.model.internal.JReleaserModel;
import org.jreleaser.model.internal.common.Artifact;
import org.jreleaser.model.internal.release.BaseReleaser;
import org.jreleaser.model.internal.release.BitbucketcloudReleaser;
import org.jreleaser.model.internal.release.CodebergReleaser;
import org.jreleaser.model.internal.release.GithubReleaser;
import org.jreleaser.model.internal.release.GitlabReleaser;
Expand Down Expand Up @@ -480,8 +481,12 @@ private JReleaserModel autoConfiguredModel(Path basedir) {
try {
boolean grs = resolveBoolean(org.jreleaser.model.api.JReleaserContext.GIT_ROOT_SEARCH, gitRootSearch);
Repository repository = GitSdk.of(basedir, grs).getRemote();
BaseReleaser<?, ?> service = null;
BaseReleaser<?, ?> service;
switch (repository.getKind()) {
case BITBUCKETCLOUD:
service = new BitbucketcloudReleaser();
model.getRelease().setBitbucketcloud((BitbucketcloudReleaser) service);
break;
case GITHUB:
service = new GithubReleaser();
model.getRelease().setGithub((GithubReleaser) service);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import org.jreleaser.model.api.JReleaserModel;
import org.jreleaser.model.internal.JReleaserContext;
import org.jreleaser.model.internal.release.BaseReleaser;
import org.jreleaser.model.internal.release.BitbucketcloudReleaser;
import org.jreleaser.model.internal.release.CodebergReleaser;
import org.jreleaser.model.internal.release.GithubReleaser;
import org.jreleaser.model.internal.release.GitlabReleaser;
Expand Down Expand Up @@ -76,6 +77,9 @@ public static void configure(JReleaserContext context) {
}

switch (repository.getKind()) {
case BITBUCKETCLOUD:
autoConfigureBitbucket(context, repository);
break;
case GITHUB:
autoConfigureGithub(context, repository);
break;
Expand All @@ -90,6 +94,23 @@ public static void configure(JReleaserContext context) {
}
}

private static void autoConfigureBitbucket(JReleaserContext context, Repository repository) {
BaseReleaser<?, ?> service = context.getModel().getRelease().getReleaser();

if (null != service) {
if (!(service instanceof BitbucketcloudReleaser)) {
context.getModel().getRelease().getReleaser().setMatch(false);
context.getModel().getRelease().getReleaser().setSkipTag(true);
context.getLogger().warn(RB.$("ERROR_context_configurer_detected_git"), "bitbucketcloud", service.getServiceName());
}
} else {
context.getModel().getRelease().setBitbucketcloud(new BitbucketcloudReleaser());
}

fillGitProperties(context.getLogger(), context.getModel().getRelease().getReleaser(),
repository, context.getModel().getCommit());
}

private static void autoConfigureGithub(JReleaserContext context, Repository repository) {
BaseReleaser<?, ?> service = context.getModel().getRelease().getReleaser();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import org.jreleaser.model.JReleaserException;
import org.jreleaser.model.api.JReleaserCommand;
import org.jreleaser.model.api.hooks.ExecutionEvent;
import org.jreleaser.model.api.release.BitbucketcloudReleaser;
import org.jreleaser.model.api.release.CodebergReleaser;
import org.jreleaser.model.api.release.GenericGitReleaser;
import org.jreleaser.model.api.release.GiteaReleaser;
Expand Down Expand Up @@ -75,6 +76,9 @@ private static <T extends ReleaserBuilder<?>> T findReleaser(JReleaserContext co
Releasers.class.getClassLoader()).spliterator(), false)
.collect(Collectors.toMap(ReleaserBuilderFactory::getName, ReleaserBuilderFactory::getBuilder));

if (null != context.getModel().getRelease().getBitbucketcloud()) {
return (T) builders.get(BitbucketcloudReleaser.TYPE);
}
if (null != context.getModel().getRelease().getGithub()) {
return (T) builders.get(GithubReleaser.TYPE);
}
Expand Down
Loading

0 comments on commit 62d5137

Please sign in to comment.