C# 如何从Cake build任务将标签推送到Bambol中的Bitbucket Git存储库?
我正在使用下一个代码将标记推送到Git存储库C# 如何从Cake build任务将标签推送到Bambol中的Bitbucket Git存储库?,c#,git,bitbucket,bamboo,cakebuild,C#,Git,Bitbucket,Bamboo,Cakebuild,我正在使用下一个代码将标记推送到Git存储库 #addin "Cake.Git" using LibGit2Sharp; var solutionFolder = "./"; var versionTag = "someTag"; Task("Default") .Does(() => { var remoteRepository = EnvironmentVariable("bamboo_planRepository_repositoryUrl");
#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);
}
});
陷入下一个问题:因为我们的bambol配置为使用SSH协议,而Cake.Git(LibGit2Sharp)当前不支持它接收下一个错误
错误:不支持的URL协议
谢谢我怀疑问题是由于使用了默认启用的浅层克隆 浅层克隆允许Bambol执行克隆,即将历史截断为指定的修订次数。 这将提高初始代码签出的速度,但是如果您的构建依赖于完整的存储库历史记录,我们建议您不要使用此选项
GIT运营通常需要完整的回购协议才能可靠地工作 有点老套,但很管用,会在找到更好的方法时更新答案 根据 Git目前不支持添加存储库,但是在后台使用LibGit2Sharp,所以只需将
LibGit2Sharp
名称空间添加到代码中
核心问题是Cake.Git(LibGit2Sharp)还不支持SSH(GitHub上的问题),因为Workaround通过cmd调用Git push
您好,谢谢,尝试过,但不幸没有运气,更新了问题和结帐任务日志,我看到它从一个版本切换到另一个版本,但不知道如何处理它
#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 });
}
}