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

问题描述:

我使用下面的代码推标签用于Git仓库如何从Cake构建任务将标签推送到Bamboo中的Bitbucket 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)目前不支持接收下一个错误

Error: unsupported URL protocol

感谢

有点哈克,但它的作品,会更新答案时,会发现更好的方法。

做基础上,How to tag a git repo in a bamboo build.

Cake.Git目前不支持添加库,但使用LibGit2Sharp引擎盖下使刚刚添加LibGit2Sharp命名空间的代码。

核心的问题是,Cake.Git(LibGit2Sharp)不支持SSH,但(问题在GitHub上Is it possible to use Cake.Git with SSH),作为workaraound调用git push通过CMD How to execute cmd command

#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 }); 
    } 
} 

我怀疑的问题是,由于使用浅克隆,这是默认启用。

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

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

+0

你好,谢谢你,尝试过,但遗憾的是没有运气,更新问题与结帐任务日志,我看到它从一个修订切换到另一个,但无法弄清楚如何处理它 – makison