コード例 #1
0
ファイル: IoTEdgeRelease.cs プロジェクト: xwdreamer/iotedge
 public static IoTEdgeRelease Create(VstsRelease vstsRelease) =>
 new IoTEdgeRelease(
     vstsRelease.Id,
     vstsRelease.DefinitionId,
     vstsRelease.Name,
     vstsRelease.WebUri,
     vstsRelease.Environments.Select(IoTEdgeReleaseEnvironment.Create).ToHashSet()
     );
コード例 #2
0
 public static IoTEdgeRelease Create(VstsRelease vstsRelease, string sourceBranch) =>
 new IoTEdgeRelease(
     vstsRelease.Id,
     vstsRelease.DefinitionId,
     vstsRelease.Name,
     sourceBranch,
     vstsRelease.Status,
     vstsRelease.WebUri,
     vstsRelease.Environments.Select(IoTEdgeReleaseEnvironment.Create).ToHashSet()
     );
        public async Task StartEnvironmentDeployment(VstsRelease vstsRelease, int releaseEnvironmentId)
        {
            ReleaseHttpClient releaseClient = _vssConnection.GetClient <ReleaseHttpClient>();

            ReleaseEnvironmentUpdateMetadata releaseEnvironmentUpdateMetadata = new ReleaseEnvironmentUpdateMetadata()
            {
                Status = EnvironmentStatus.InProgress
            };

            await releaseClient.UpdateReleaseEnvironmentAsync(releaseEnvironmentUpdateMetadata, _configuration.Value.ProjectName, vstsRelease.Id, releaseEnvironmentId);
        }
コード例 #4
0
ファイル: ReleaseManagement.cs プロジェクト: zacseas/iotedge
        /// <summary>
        /// This method is used to get latest release result of given release definition Id and branch name with descending order.
        /// Reference: https://docs.microsoft.com/en-us/rest/api/azure/devops/release/releases/list?view=azure-devops-rest-5.1
        /// </summary>
        /// <param name="definitionId">release definition Ids</param>
        /// <param name="branchName">github repository branch name</param>
        /// <returns>List of IoT Edge releases</returns>
        public async Task <List <IoTEdgeRelease> > GetReleasesAsync(ReleaseDefinitionId definitionId, string branchName, int top = 200)
        {
            ValidationUtil.ThrowIfNullOrWhiteSpace(branchName, nameof(branchName));
            ValidationUtil.ThrowIfNonPositive(top, nameof(top));

            // TODO: need to think about how to handle unexpected exception during REST API call
            string        requestPath         = string.Format(ReleasePathSegmentFormat, this.accessSetting.Organization, this.accessSetting.Project);
            IFlurlRequest listReleasesRequest = DevOpsAccessSetting.ReleaseManagementBaseUrl
                                                .AppendPathSegment(requestPath)
                                                .SetQueryParam("definitionId", definitionId.IdString())
                                                .SetQueryParam("queryOrder", "descending")
                                                .SetQueryParam("$top", top)
                                                .SetQueryParam("api-version", "5.1")
                                                .SetQueryParam("sourceBranchFilter", branchName)
                                                .WithBasicAuth(string.Empty, this.accessSetting.PersonalAccessToken);

            string releasesJson = await listReleasesRequest.GetStringAsync().ConfigureAwait(false);

            JObject releasesJObject = JObject.Parse(releasesJson);

            if (!releasesJObject.ContainsKey("count") || (int)releasesJObject["count"] <= 0)
            {
                return(new List <IoTEdgeRelease>());
            }

            VstsRelease[] vstsReleases    = JsonConvert.DeserializeObject <VstsRelease[]>(releasesJObject["value"].ToString());
            var           iotEdgeReleases = new List <IoTEdgeRelease>();

            foreach (VstsRelease vstsRelease in vstsReleases)
            {
                IFlurlRequest getReleaseRequest = DevOpsAccessSetting.ReleaseManagementBaseUrl
                                                  .AppendPathSegment(requestPath)
                                                  .SetQueryParam("api-version", "5.1")
                                                  .SetQueryParam("releaseId", vstsRelease.Id)
                                                  .WithBasicAuth(string.Empty, this.accessSetting.PersonalAccessToken);

                string releaseJson = await getReleaseRequest.GetStringAsync().ConfigureAwait(false);

                try
                {
                    VstsRelease releaseWithDetails = JsonConvert.DeserializeObject <VstsRelease>(releaseJson);
                    iotEdgeReleases.Add(IoTEdgeRelease.Create(releaseWithDetails, branchName));
                }
                catch (System.Exception ex)
                {
                    // TODO: log exception
                    Console.WriteLine(ex.ToString());
                }
            }

            return(iotEdgeReleases);
        }
 public async Task StartEnvironmentDeployment(VstsRelease vstsRelease, int releaseEnvironmentId)
 {
     await releaseClient.StartEnvironmentDeployment(vstsRelease, releaseEnvironmentId);
 }