2017-05-25 57 views
1

我使用下面的代碼推標籤用於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

感謝

回答

1

有點哈克,但它的作品,會更新答案時,會發現更好的方法。

做基礎上,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 }); 
    } 
} 
0

我懷疑的問題是,由於使用淺克隆,這是默認啓用。

淺層克隆允許Bamboo執行克隆,即歷史截斷爲指定的修訂版本數。 這應該會提高初始代碼簽出的速度,但是如果您的構建取決於完整的存儲庫歷史記錄,我們建議您不要使用此選項。

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

+0

你好,謝謝你,嘗試過,但遺憾的是沒有運氣,更新問題與結帳任務日誌,我看到它從一個修訂切換到另一個,但無法弄清楚如何處理它 – makison

相關問題