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();
+ }
+}