如何从Cake构建任务将Tag推送到Bamboo中的Bitbucket Git存储库? [英] How to push Tag to Bitbucket Git Repository in Bamboo from Cake build task?

查看:249
本文介绍了如何从Cake构建任务将Tag推送到Bamboo中的Bitbucket Git存储库?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用下一个代码将标签推送到Git存储库

  #addinCake.Git
使用LibGit2Sharp;

var solutionFolder =./;
var versionTag =someTag;

任务(Default)
.Does(()=>
{
var remoteRepository = EnvironmentVariable(bamboo_planRepository_repositoryUrl);
var repositoryRevision = EnvironmentVariable(bamboo_planRepository_revision);

var absolutePath = MakeAbsolute(Directory(solutionFolder));
var repoName =central;

// LibGit2Sharp使用(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 )目前不支持它收到下一个错误

lockquote
错误:不支持的URL协议

谢谢

解决方案

有点不好意思,但有效,更好的方法。

完成基于如何在a中标记git repo Bamboo build。



Cake.Git目前不支持添加存储库,但在使用LibGit2Sharp的引擎下,只需添加 LibGit2Sharp 命名空间添加到代码中。

核心问题是Cake.Git(LibGit2Sharp)不支持SSH(GitHub上的问题是否可以将Cake.Git与SSH一起使用),作为调用 git push 的工作区cmd 如何执行cmd
命令

  #addinCake.Git
使用LibGit2Sharp;

var solutionFolder =./;
var versionTag =someTag;
var remoteRepository = EnvironmentVariable(bamboo_planRepository_repositoryUrl);
var repositoryRevision = EnvironmentVariable(bamboo_planRepository_revision);

任务(默认)
.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)
args.Append(${param});

StartProcess(cmd,new ProcessSettings {Arguments = args});
}
}


I'm using next code to push Tag to Git repository

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

Stuck into the next issue: because our bamboo configured to use SSH protocol, and Cake.Git(LibGit2Sharp) currently doesn't support it receiving next error

Error: unsupported URL protocol

Thanks

解决方案

A little bit hacky but it works, will update answer when will find better approach.

Done based on the How to tag a git repo in a bamboo build.

Cake.Git currently doesn't support adding repository but under the hood using LibGit2Sharp so just added LibGit2Sharp namespace to the code.

Core issue is that Cake.Git(LibGit2Sharp) doesn't support SSH yet (Issue on GitHub Is it possible to use Cake.Git with SSH), as workaraound calling git push through 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 });
    }
}

这篇关于如何从Cake构建任务将Tag推送到Bamboo中的Bitbucket Git存储库?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆