尽管设置了默认频道,但八达通在通过 API 创建发行版时仍需要明确的频道 ID

问题描述

我正在使用八达通服务器。在我的管道中,我运行了一个 lambda 函数,将构建包推送到 Octopus,然后尝试在 Octopus 中创建一个 Release。

我使用的是 .NET Octopus SDK。

将包裹推送到 Octopus 工作顺利。

创建发布会引发此错误

There was a problem with your request. - A channelId must be provided for a release when more than one exists for that project and no default channel has been specified.: OctopusValidationException
at Octopus.Client.OctopusClient.dispatchRequest[TResponseResource](OctopusRequest request,Boolean readResponse)
at Octopus.Client.OctopusClient.Create[TResource](String path,TResource resource,Object pathParameters)   at Octopus.Client.Repositories.ReleaseRepository.Create(ReleaseResource release,Boolean ignoreChannelRules)
at MyProject.Function.CreateRelease(ILambdaContext context,S3Entity s3Event,IOctopusspaceRepository repositoryForSpace) in /home/runner/work/CICD/CICD/src/MyProject/Function.cs:line 113
at MyProject.Function.FunctionHandler(S3Event evnt,ILambdaContext context) in /home/runner/work/CICD/CICD/src/MyProject/Function.cs:line 84
at lambda_method(Closure,Stream,LambdaContextInternal )

...运行后:

var release = new ReleaseResource(version,"MyProjectId");
repositoryForSpace.Releases.Create(release);

错误消息似乎不言自明,我可以通过在创建 ReleaseResource 时显式引用频道来快速修复它,如下所示:

var release = new ReleaseResource(version,"MyProjectId","MyChannelId");

错误信息似乎是一个错误,因为

  1. 我只有一个频道,而且
  2. 该频道被标记default

所以我认为即使只有其中一个条件 true,我也不会收到此错误。然而,即使两个条件都满足,我还是收到了。

有什么想法吗?

解决方法

听起来这可能是一个错误。你能把错误、你的 Octopus.Client 版本和你的 Octopus Server 版本发送到 support@octopus.com 吗?

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...