diff --git a/src/Cake.GitVersioning/GitVersioningCloudProvider.cs b/src/Cake.GitVersioning/GitVersioningCloudProvider.cs index f5c29163f..0e9ad07da 100644 --- a/src/Cake.GitVersioning/GitVersioningCloudProvider.cs +++ b/src/Cake.GitVersioning/GitVersioningCloudProvider.cs @@ -52,5 +52,10 @@ public enum GitVersioningCloudProvider /// Use the Jetbrains Space cloud build provider. /// SpaceAutomation, + + /// + /// Use the Bitbucket cloud build provider. + /// + BitbucketCloud, } } diff --git a/src/NerdBank.GitVersioning/CloudBuild.cs b/src/NerdBank.GitVersioning/CloudBuild.cs index b57ac48f5..71002d8fb 100644 --- a/src/NerdBank.GitVersioning/CloudBuild.cs +++ b/src/NerdBank.GitVersioning/CloudBuild.cs @@ -24,6 +24,7 @@ public static class CloudBuild new GitLab(), new Travis(), new SpaceAutomation(), + new BitbucketCloud(), }; /// diff --git a/src/NerdBank.GitVersioning/CloudBuildServices/BitbucketCloud.cs b/src/NerdBank.GitVersioning/CloudBuildServices/BitbucketCloud.cs new file mode 100644 index 000000000..ea4592fd7 --- /dev/null +++ b/src/NerdBank.GitVersioning/CloudBuildServices/BitbucketCloud.cs @@ -0,0 +1,42 @@ +// Copyright (c) .NET Foundation and Contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace Nerdbank.GitVersioning.CloudBuildServices; + +/// +/// Cloud build handling for Bitbucket Cloud. +/// +/// +/// The Bitbucket-specific properties referenced here are documented here. +/// +public class BitbucketCloud : ICloudBuild +{ + /// + public bool IsApplicable => !string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("BITBUCKET_PIPELINE_UUID")) && + !string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("BITBUCKET_STEP_UUID")) && + !string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("BITBUCKET_STEP_TRIGGERER_UUID")); + + /// + public bool IsPullRequest => !string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("BITBUCKET_PR_ID")); + + /// + public string BuildingBranch => Environment.GetEnvironmentVariable("BITBUCKET_BRANCH"); + + /// + public string BuildingTag => Environment.GetEnvironmentVariable("BITBUCKET_TAG"); + + /// + public string GitCommitId => Environment.GetEnvironmentVariable("BITBUCKET_COMMIT"); + + /// + public IReadOnlyDictionary SetCloudBuildNumber(string buildNumber, TextWriter stdout, TextWriter stderr) + { + return new Dictionary(); + } + + /// + public IReadOnlyDictionary SetCloudBuildVariable(string name, string value, TextWriter stdout, TextWriter stderr) + { + return new Dictionary(); + } +}