首先,我是全新的章鱼客户端,使用它是第一次就在发布之前。
因此,我已经完成了这个项目,以更新网页上的版本号,监控我们部署的一些章鱼项目。我一直在寻找章鱼的客户,但没有得到真正的任何地方。到目前为止,我所掌握的最好的是:
OctopusServerEndpoint endPoint = new OctopusServerEndpoint(server, apiKey);
OctopusRepository repo = new OctopusRepository(endPoint);
var releases = repo.Releases.FindAll();
从这些版本中我可以得到ProjectId
,甚至Version
,问题是releases
是600强,我只需要其中的15个。
我必须使用的现有代码用来解析本地文件中的版本,所以这一切都在窗口之外。另外,现有代码只处理项目的实际名称,比如"AWOBridge",而不是它们的ProjectId
,即" projects -27“。
现在,我唯一的选择是手动编写一个keyList或映射,将我所拥有的名称与octopus客户机中的it关联起来,当然我不这么认为,因为在我看来,它不是非常可扩展或良好的代码实践。
因此,如果有人知道如何直接与octopus客户端一起使用这些名称,并从中获得版本号,我将非常仔细地研究它。
我等着去找章鱼客户。让我来看看我是不是比你快!
发布于 2016-07-01 07:07:20
我想我比你快!
如果有人有同样的问题,我会在这里留下一个答案。
最后,我使用了dashboard
来获得我需要的东西:
OctopusServerEndpoint endPoint = new OctopusServerEndpoint(server, apiKey);
OctopusRepository repo = new OctopusRepository(endPoint);
DashboardResource dash = repo.Dashboards.GetDashboard();
List<DashboardItemResource> items = dash.Items;
DashboardItemResource item = new DashboardItemResource();
List<DashboardProjectResource> projs = dash.Projects;
var projID = projs.Find(x => x.Name == projectName).Id;
item = items.Find(x => x.ProjectId == projID && x.IsCurrent == true);
仪表板是伟大的,因为它包含所有的信息,网络仪表板显示。因此,您可以使用项目、发布、部署和环境以及它们包含的所有信息。
希望这对将来的人有帮助!
发布于 2019-02-07 11:34:28
我正在使用LINQPad来运行C#片段,以便使用Octopus客户端库实现章鱼自动化,并且我已经想出了以下方法来获得使用正则表达式模式的项目的任何版本。如果使用预释放语义版本控制,它会运行得很好。
例如,要获得项目的最新版本:
var project = Repo.Projects.FindByName("MyProjectName");
var release = GetReleaseForProject(project);
要获得特定的发行版,请使用版本中包含“rc1”的版本(如果在发布给八达通的版本中使用源代码分支名称,也很有用:
var release = GetReleaseForProject(project, "rc1");
public ReleaseResource GetReleaseForProject(ProjectResource project, string versionPattern = "")
{
// create compiled regex expression to use for search
var regex = new Regex(versionPattern, RegexOptions.Compiled | RegexOptions.CultureInvariant | RegexOptions.IgnoreCase);
var releases = Repo.Projects.GetReleases(project);
if (!string.IsNullOrWhiteSpace(versionPattern) && !releases.Items.Any(r => regex.IsMatch(r.Version)))
{
return null;
}
return (!string.IsNullOrWhiteSpace(versionPattern)) ? releases.Items.Where(r => regex.IsMatch(r.Version))?.First() : releases.Items?.First();;
}
https://stackoverflow.com/questions/38098719
复制相似问题