如何从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操作通常需要完整的回购才能可靠地工作。
你好,谢谢你,尝试过,但遗憾的是没有运气,更新问题与结帐任务日志,我看到它从一个修订切换到另一个,但无法弄清楚如何处理它 – makison