【问题标题】:How to push Tag to Bitbucket Git Repository in Bamboo from Cake build task?如何从 Cake 构建任务将标签推送到 Bamboo 中的 Bitbucket Git 存储库?
【发布时间】:2017-05-25 16:14:28
【问题描述】:

我正在使用下一个代码将标签推送到 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 协议

谢谢

【问题讨论】:

    标签: c# git bitbucket bamboo cakebuild


    【解决方案1】:

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

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

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

    【讨论】:

    • 嗨,谢谢,试过了,但不幸的是没有运气,更新了结帐任务日志的问题,我看到它从一个版本切换到另一个版本,但不知道如何处理它
    【解决方案2】:

    有点hacky,但它有效,会在找到更好的方法时更新答案。

    基于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),作为工作区调用 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 });
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-05-27
      • 2013-03-02
      • 2013-04-11
      • 2012-06-29
      • 2011-07-08
      • 2023-01-14
      • 2012-06-24
      • 1970-01-01
      相关资源
      最近更新 更多