如何从Cake构建任务中将Tag推送到Bamboo中的Bitbucket Git存储库?

我正在使用下一个代码将Tag推送到Git存储库

#addin "Cake.Git" using LibGit2Sharp; var solutionFolder = "./"; var versionTag = "someTag"; Task("Default") .Does(() => { var remoteRepository = EnvironmentVariable("bamboo_planRepository_repositoryUrl"); var repositoryRevision = EnvironmentVariable("bamboo_planRepository_revision"); var absolutePath = MakeAbsolute(Directory(solutionFolder)); var repoName = "central"; //LibGit2Sharp add remote using (var repo = new Repository(absolutePath.FullPath)) { repo.Network.Remotes.Add(repoName, remoteRepository); } GitTag(solutionFolder, versionTag, repositoryRevision); GitPushRef(solutionFolder, gitUser, gitPassword, repoName, versionTag); } }); 

坚持下一期:因为我们的竹子配置使用SSH协议,而Cake.Git(LibGit2Sharp)目前不支持它接收下一个错误

错误:不支持的URL协议

谢谢

我怀疑问题是使用浅克隆,默认情况下启用。

Shallow克隆允许Bamboo执行克隆,即将历史截断为指定数量的修订。 这应该会提高初始代码检出的速度,但是如果您的构建依赖于完整的存储库历史记录,我们建议您不要使用此选项。

GIT操作通常需要完整的回购才能可靠地工作。

有点hacky但它​​的工作原理,会在找到更好的方法时更新答案。

完成基于如何在竹子构建中标记git仓库。

Cake.Git目前不支持使用LibGit2Sharp添加存储库,但是只需将LibGit2Sharp命名空间添加到代码中。

核心问题是Cake.Git(LibGit2Sharp)还不支持SSH(GitHub上的问题是否可以使用带有SSH的Cake.Git ),因为workagound通过cmd调用git push 如何执行cmd命令

  #addin "Cake.Git" using LibGit2Sharp; var solutionFolder = "./"; var versionTag = "someTag"; var remoteRepository = EnvironmentVariable("bamboo_planRepository_repositoryUrl"); var repositoryRevision = EnvironmentVariable("bamboo_planRepository_revision"); Task("Default") .Does(() => { var absolutePath = MakeAbsolute(Directory(solutionFolder)); var repoName = "central"; //LibGit2Sharp add remote using (var repo = new Repository(absolutePath.FullPath)) { repo.Network.Remotes.Add(repoName, remoteRepository); } GitTag(solutionFolder, versionTag, repositoryRevision); Cmd($"git push {repoName} {versionTag}"); } }); private void Cmd(params object[] parameters) { if (parameters.Any()) { var args = new ProcessArgumentBuilder() .Append(@"/c"); foreach (var param in parameters) args.Append($"{param}"); StartProcess("cmd", new ProcessSettings { Arguments = args }); } }