diff --git a/DevOpsPipelineDefinitions/publish-pipeline.yaml b/DevOpsPipelineDefinitions/publish-pipeline.yaml index c54055b3ad0..1689188c6ea 100644 --- a/DevOpsPipelineDefinitions/publish-pipeline.yaml +++ b/DevOpsPipelineDefinitions/publish-pipeline.yaml @@ -46,6 +46,7 @@ jobs: CLEANUP_ENDPOINT: $(AzFuncPublishCleanupEndpoint) MANIFEST_PUBLISH_COMPLETION_ENDPOINT: $(AzFuncManifestPublishCompletionEndpoint) WAIVER_COMMIT_ENDPOINT: $(AzFuncWaiverCommitEndpoint) + RESTSOURCE_UPDATE_ENDPOINT: $(AzFuncRestSourceUpdateEndpoint) - task: CmdLine@2 displayName: 'Validate Commits' @@ -133,6 +134,41 @@ jobs: WinGet:AppConfig:Primary: $(AppConfigPrimary) WinGet:AppConfig:Secondary: $(AppConfigSecondary) +# Agentless phase. Depends on previous job. +- job: 'PublishToRestSource' + pool: server + timeoutInMinutes: 1500 + displayName: 'Publish to rest source' + dependsOn: + - 'CommitProcessing' + - 'Publish' + variables: + HostKeySecret: $[ dependencies.CommitProcessing.outputs['wingetsetup.hostkey']] + RestSourceUpdateEndpointSecret: $[ dependencies.CommitProcessing.outputs['wingetsetup.restsourceUpdateEndpoint']] + steps: + + # Publish updates to rest source + - task: AzureFunction@1 + displayName: 'Publishing to rest source' + inputs: + function: '$(RestSourceUpdateEndpointSecret)' + key: '$(HostKeySecret)' + body: | + { + "operationId": "$(Build.BuildNumber)", + "BuildId": "$(Build.BuildId)", + "PlanUrl": "$(system.CollectionUri)", + "HubName": "$(system.HostType)", + "pipelineType": "CommitPipeline", + "ProjectId": "$(system.TeamProjectId)", + "PlanId": "$(system.PlanId)", + "JobId": "$(system.JobId)", + "TimelineId": "$(system.TimelineId)", + "TaskInstanceId": "$(system.TaskInstanceId)", + "AuthToken": "$(system.AccessToken)" + } + waitForCompletion: "true" + # Agentless phase. Depends on previous job. - job: 'PostPublish' pool: server @@ -141,6 +177,7 @@ jobs: dependsOn: - 'CommitProcessing' - 'Publish' + - 'PublishToRestSource' condition: and(succeeded(), ne(variables['Source.SkipPostPublish'], 'true')) variables: HostKeySecret: $[ dependencies.CommitProcessing.outputs['wingetsetup.hostkey']] diff --git a/DevOpsPipelineDefinitions/rebuild-pipeline.yaml b/DevOpsPipelineDefinitions/rebuild-pipeline.yaml index 1b92db6d576..ae16ccf2f4e 100644 --- a/DevOpsPipelineDefinitions/rebuild-pipeline.yaml +++ b/DevOpsPipelineDefinitions/rebuild-pipeline.yaml @@ -10,6 +10,7 @@ variables: Rebuild.SkipManifestIndexUpdate: $[coalesce(variables.SkipManifestIndexUpdate, 'False')] Rebuild.SkipPausePublishPipeline: $[coalesce(variables.SkipPausePublishPipeline, 'False')] Rebuild.EnableCacheContainerBackup: $[coalesce(variables.EnableCacheContainerBackup, 'False')] + Rebuild.SkipRestSourceRebuild: $[coalesce(variables.SkipRestSourceRebuild, 'False')] jobs: @@ -48,6 +49,7 @@ jobs: SIGN_ENDPOINT: $(AzFuncSignEndpoint) PUBLISH_ENDPOINT: $(AzFuncRebuildPublishEndpoint) CLEANUP_ENDPOINT: $(AzFuncRebuildCleanupEndpoint) + RESTSOURCE_REBUILD_ENDPOINT: $(AzFuncRestSourceRebuildEndpoint) - task: CmdLine@2 displayName: 'Validate Manifests' @@ -141,6 +143,43 @@ jobs: } waitForCompletion: "true" +# Agentless phase. Depends on previous job. +- job: 'PublishToRestSource' + pool: server + timeoutInMinutes: 1500 + displayName: 'Publish to rest source' + dependsOn: + - 'Rebuild' + - 'SignPackage' + - 'Publish' + condition: and(succeededOrFailed(), ne(variables['Rebuild.SkipRestSourceRebuild'], 'True')) + variables: + HostKeySecret: $[ dependencies.Rebuild.outputs['wingetsetup.hostkey']] + RestSourceRebuildEndpointSecret: $[ dependencies.Rebuild.outputs['wingetsetup.restsourceRebuildEndpoint']] + steps: + + # Rebuild Rest source. + - task: AzureFunction@1 + displayName: 'Publish to rest source' + inputs: + function: '$(RestSourceRebuildEndpointSecret)' + key: '$(HostKeySecret)' + body: | + { + "operationId": "$(Build.BuildNumber)", + "BuildId": "$(Build.BuildId)", + "PlanUrl": "$(system.CollectionUri)", + "HubName": "$(system.HostType)", + "pipelineType": "RebuildPipeline", + "ProjectId": "$(system.TeamProjectId)", + "PlanId": "$(system.PlanId)", + "JobId": "$(system.JobId)", + "TimelineId": "$(system.TimelineId)", + "TaskInstanceId": "$(system.TaskInstanceId)", + "AuthToken": "$(system.AccessToken)" + } + waitForCompletion: "true" + # Agentless phase. Depends on previous job. - job: 'Cleanup' pool: server @@ -150,6 +189,7 @@ jobs: - 'Rebuild' - 'SignPackage' - 'Publish' + - 'PublishToRestSource' condition: and(succeededOrFailed(), ne(variables['Rebuild.SkipPausePublishPipeline'], 'True')) variables: HostKeySecret: $[ dependencies.Rebuild.outputs['wingetsetup.hostkey']]