微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Cake Build (C# Make) 将提交推送到 Azure Repo

如何解决使用 Cake Build (C# Make) 将提交推送到 Azure Repo

我正在尝试用蛋糕推动项目中的变化。这是我的代码

[TaskName("GitPush")]
public sealed class GitPushTask : FrostingTask<BuildContext>
{
    public override void Run(BuildContext context)
    {
        context.GitAddAll(context.workdirectoryPath);
        context.GitCommit(context.workdirectoryPath,"user surname","usersurname@hellow.com","Testing Commit");
        context.GitPush(context.workdirectoryPath,context.GitUsername,context.GitPassword);
    }
}

GitAddAll 和 GitCommit 工作正常,但在 GitPush 中出现此错误

An error occurred when executing task 'GitPush'.
Error: LibGit2Sharp.LibGit2SharpException: No error message has been provided by the native library
   at LibGit2Sharp.Core.Ensure.HandleError(Int32 result)
   at LibGit2Sharp.Core.Ensure.ZeroResult(Int32 result)
   at LibGit2Sharp.Core.Proxy.git_remote_push(RemoteHandle remote,IEnumerable`1 refSpecs,GitPushOptions opts)
   at LibGit2Sharp.Network.Push(Remote remote,IEnumerable`1 pushRefSpecs,PushOptions pushOptions)
   at LibGit2Sharp.Network.Push(Remote remote,String pushRefSpec,PushOptions pushOptions)
   at LibGit2Sharp.Network.Push(IEnumerable`1 branches,PushOptions pushOptions)
   at Cake.Git.GitAliases.<>c__displayClass32_0.<GitPush>b__0(Repository repository)
   at Cake.Git.Extensions.RepositoryExtensions.UseRepository(ICakeContext context,DirectoryPath repositoryPath,Action`1 repositoryAction)
   at Cake.Git.GitAliases.GitPush(ICakeContext context,DirectoryPath repositoryDirectoryPath,String username,String password)
   at GitPushTask.Run(BuildContext context) in C:\Users\jmedingr\Desktop\MonEES.CICD.Cake\cake\Program.cs:line 128
   at Cake.Frosting.FrostingTask`1.Cake.Frosting.IFrostingTask.RunAsync(ICakeContext context)
   at Cake.Core.CakeTask.Execute(ICakeContext context)
   at Cake.Core.DefaultExecutionStrategy.ExecuteAsync(CakeTask task,ICakeContext context)
   at Cake.Core.CakeEngine.ExecuteTaskAsync(ICakeContext context,IExecutionStrategy strategy,Stopwatch stopWatch,CakeTask task,CakeReport report)
   at Cake.Core.CakeEngine.ExecuteTaskAsync(ICakeContext context,CakeReport report)
   at Cake.Core.CakeEngine.RunTask(ICakeContext context,String target,CakeReport report)
   at Cake.Core.CakeEngine.RunTargetAsync(ICakeContext context,ExecutionSettings settings)
   at Cake.Cli.BuildScriptHost`1.RunTargetAsync(String target)
   at Cake.Core.Scripting.ScriptHost.RunTarget(String target)
   at Cake.Frosting.Internal.FrostingEngine`1.Run(String target)
   at Cake.Frosting.Internal.DefaultCommand.Execute(CommandContext context,DefaultCommandSettings settings)

我猜这个错误是因为我在 Azure Repo 上进行身份验证的方式存在问题,但我找不到方法添加到工作中使用 azureRepo 查找...

解决方法

您是否尝试过手动提交和推送? 我在执行您提供的示例时没有遇到任何问题。

我创建了一个这样的 PAT: enter image description here

注意:Code: Read&Write 已设置。

然后我使用了你上面指定的代码,只是稍作修改: (密码设置为PAT时不使用用户名)

public override void Run(BuildContext context)
{
    var pat = context.EnvironmentVariable("MYPAT");
    if (string.IsNullOrEmpty(pat))
    {
        throw new Exception("MYPAT must be set!");
    }
    
    context.GitAddAll(context.WorkDirectoryPath);
    context.GitCommit(context.WorkDirectoryPath,"Nils","nils@hellow.com","Testing Commit");
    context.GitPush(context.WorkDirectoryPath,"unused when password is a PAT",pat);
}

结果如下:

❯ git log
commit 5979345845c7d3d7c6387ea7aff74a1de3ae366c (HEAD -> main,origin/main,origin/HEAD)
Author: Nils <nils@hellow.com>
Date:   Mon May 24 22:03:12 2021 +0200

    Testing Commit

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?