首页 > 解决方案 > C# Vsts ReleaseManagement 列表批准和批准

问题描述

我正在尝试创建一个工具来自动启动多个构建管道以及部署管道的过程。我已经成功构建了管道,但我在部署方面遇到了问题。我可以获得部署定义和发布,但是使用此代码我只能获得待定批准,而我还想获得已经完成的批准并批准/取消这个工具想要加速 devops 流程,因为我们正在触发构建和部署来自网站(我们批准并部署了每个管道,我们得到了很多)

var client = Connection.GetClient<ReleaseHttpClient2>();
            var releaseDefs = await client.GetReleaseDefinitionsAsync2(Config.Project);

        var ret = new List<ReleasePipelineModel>();
        foreach(var rd in releaseDefs)
        {
            var releases = await client.GetReleasesAsync2(
                Config.Project,
                definitionId: rd.Id, 
                top: 1,
                sourceBranchFilter: Constants.BranchBase + branch
            );
            var release = releases.FirstOrDefault();

            var stages = release != null ?
                await client.GetApprovalsAsync2(
                    Config.Project,
                    releaseIdsFilter: new[] { release.Id }
                )
                : null;

            ret.Add(new ReleasePipelineModel(rd)
            {
                LastRelease = release,
                Stage = stages?.FirstOrDefault()
            });
        }

        return ret.OrderBy(r => r.Name).ToList();

我希望我清楚,谢谢!

标签: c#azure-pipelines-release-pipeline

解决方案


我找到了解决方案:使用 Deployment api

var deps = release != null ?
                await client.GetDeploymentsAsync(
                    Config.Project,
                    definitionId: rd.Id,
                    latestAttemptsOnly: true,
                    top: 1,
                    sourceBranch: Constants.BranchBase + branch)
                : null;

推荐阅读