diff --git a/.azure-pipelines/steps/update-github-pipeline-status.yml b/.azure-pipelines/steps/update-github-pipeline-status.yml new file mode 100644 index 000000000000..5d28513ec9d6 --- /dev/null +++ b/.azure-pipelines/steps/update-github-pipeline-status.yml @@ -0,0 +1,334 @@ +# This file is auto-generated by Build.VariableGenerations.GenerateUpdateGitHubPipelineStep +stages: + - stage: azure_pipeline_succeeded + dependsOn: + - merge_commit_id + - generate_variables + - build_windows_tracer + - build_windows_profiler + - build_linux_tracer + - build_linux_tracer_r2r + - build_linux_universal + - build_linux_profiler + - package_linux + - build_arm64_tracer + - build_arm64_tracer_r2r + - build_arm64_profiler + - build_arm64_universal + - package_arm64 + - build_macos + - package_windows + - build_dd_dotnet_windows + - build_dd_dotnet_linux + - build_dd_dotnet_linux_arm64 + - debug_builds + - unit_tests_windows + - unit_tests_macos + - unit_tests_linux + - unit_tests_arm64 + - build_samples + - build_samples_macos + - integration_tests_windows + - integration_tests_windows_debugger + - integration_tests_windows_iis + - integration_tests_azure_functions + - static_analysis_checks_tracer + - static_analysis_tests_profiler + - msi_integration_tests_windows + - integration_tests_linux + - integration_tests_linux_debugger + - profiler_integration_tests_windows + - profiler_integration_tests_linux + - asan_profiler_tests + - ubsan_profiler_tests + - tsan_profiler_tests + - integration_tests_arm64 + - integration_tests_arm64_debugger + - exploration_tests_windows + - exploration_tests_linux + - dotnet_tool + - tool_artifacts_tests_windows + - tool_artifacts_tests_linux + - store_ssi_artifacts + - store_serverless_artifacts + - upload_to_azure + - upload_container_images + - coverage + - execution_benchmarks + - profiler_execution_benchmarks + - system_tests + - installer_smoke_tests + - installer_chiseled_smoke_tests + - nuget_installer_smoke_tests + - trimmed_installer_smoke_tests + - dotnet_tool_nuget_smoke_tests_linux + - dotnet_tool_smoke_tests_linux + - dotnet_tool_self_instrument_smoke_tests_linux + - installer_smoke_tests_arm64 + - installer_chiseled_smoke_tests_arm64 + - nuget_installer_smoke_tests_arm64 + - dotnet_tool_smoke_tests_arm64 + - nuget_installer_smoke_tests_windows + - dotnet_tool_smoke_tests_windows + - msi_installer_smoke_tests + - dd_dotnet_msi_installer_smoke_tests + - tracer_home_smoke_tests + - fleet_installer_iis_smoke_tests + - dotnet_tool_nuget_smoke_tests_macos + - dd_dotnet_installer_failure_tests_linux + - dd_dotnet_installer_failure_tests_linux_arm64 + condition: | + and( + in(dependencies.merge_commit_id.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.generate_variables.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_windows_tracer.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_windows_profiler.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_linux_tracer.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_linux_tracer_r2r.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_linux_universal.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_linux_profiler.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.package_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_arm64_tracer.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_arm64_tracer_r2r.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_arm64_profiler.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_arm64_universal.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.package_arm64.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_macos.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.package_windows.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_dd_dotnet_windows.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_dd_dotnet_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_dd_dotnet_linux_arm64.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.debug_builds.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.unit_tests_windows.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.unit_tests_macos.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.unit_tests_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.unit_tests_arm64.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_samples.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_samples_macos.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.integration_tests_windows.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.integration_tests_windows_debugger.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.integration_tests_windows_iis.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.integration_tests_azure_functions.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.static_analysis_checks_tracer.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.static_analysis_tests_profiler.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.msi_integration_tests_windows.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.integration_tests_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.integration_tests_linux_debugger.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.profiler_integration_tests_windows.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.profiler_integration_tests_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.asan_profiler_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.ubsan_profiler_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.tsan_profiler_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.integration_tests_arm64.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.integration_tests_arm64_debugger.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.exploration_tests_windows.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.exploration_tests_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.dotnet_tool.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.tool_artifacts_tests_windows.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.tool_artifacts_tests_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.store_ssi_artifacts.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.store_serverless_artifacts.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.upload_to_azure.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.upload_container_images.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.coverage.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.execution_benchmarks.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.profiler_execution_benchmarks.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.system_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.installer_smoke_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.installer_chiseled_smoke_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.nuget_installer_smoke_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.trimmed_installer_smoke_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.dotnet_tool_nuget_smoke_tests_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.dotnet_tool_smoke_tests_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.dotnet_tool_self_instrument_smoke_tests_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.installer_smoke_tests_arm64.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.installer_chiseled_smoke_tests_arm64.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.nuget_installer_smoke_tests_arm64.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.dotnet_tool_smoke_tests_arm64.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.nuget_installer_smoke_tests_windows.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.dotnet_tool_smoke_tests_windows.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.msi_installer_smoke_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.dd_dotnet_msi_installer_smoke_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.tracer_home_smoke_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.fleet_installer_iis_smoke_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.dotnet_tool_nuget_smoke_tests_macos.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.dd_dotnet_installer_failure_tests_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.dd_dotnet_installer_failure_tests_linux_arm64.result, 'Succeeded','SucceededWithIssues','Skipped')) + jobs: + - job: report_success + timeoutInMinutes: 60 #default value + pool: + name: azure-managed-linux-tasks + steps: + - checkout: none + - template: update-github-status.yml + parameters: + checkName: 'azure_pipeline_complete' + status: 'success' + description: 'Pipeline succeeded' + - stage: azure_pipeline_failed + dependsOn: + - merge_commit_id + - generate_variables + - build_windows_tracer + - build_windows_profiler + - build_linux_tracer + - build_linux_tracer_r2r + - build_linux_universal + - build_linux_profiler + - package_linux + - build_arm64_tracer + - build_arm64_tracer_r2r + - build_arm64_profiler + - build_arm64_universal + - package_arm64 + - build_macos + - package_windows + - build_dd_dotnet_windows + - build_dd_dotnet_linux + - build_dd_dotnet_linux_arm64 + - debug_builds + - unit_tests_windows + - unit_tests_macos + - unit_tests_linux + - unit_tests_arm64 + - build_samples + - build_samples_macos + - integration_tests_windows + - integration_tests_windows_debugger + - integration_tests_windows_iis + - integration_tests_azure_functions + - static_analysis_checks_tracer + - static_analysis_tests_profiler + - msi_integration_tests_windows + - integration_tests_linux + - integration_tests_linux_debugger + - profiler_integration_tests_windows + - profiler_integration_tests_linux + - asan_profiler_tests + - ubsan_profiler_tests + - tsan_profiler_tests + - integration_tests_arm64 + - integration_tests_arm64_debugger + - exploration_tests_windows + - exploration_tests_linux + - dotnet_tool + - tool_artifacts_tests_windows + - tool_artifacts_tests_linux + - store_ssi_artifacts + - store_serverless_artifacts + - upload_to_azure + - upload_container_images + - coverage + - execution_benchmarks + - profiler_execution_benchmarks + - system_tests + - installer_smoke_tests + - installer_chiseled_smoke_tests + - nuget_installer_smoke_tests + - trimmed_installer_smoke_tests + - dotnet_tool_nuget_smoke_tests_linux + - dotnet_tool_smoke_tests_linux + - dotnet_tool_self_instrument_smoke_tests_linux + - installer_smoke_tests_arm64 + - installer_chiseled_smoke_tests_arm64 + - nuget_installer_smoke_tests_arm64 + - dotnet_tool_smoke_tests_arm64 + - nuget_installer_smoke_tests_windows + - dotnet_tool_smoke_tests_windows + - msi_installer_smoke_tests + - dd_dotnet_msi_installer_smoke_tests + - tracer_home_smoke_tests + - fleet_installer_iis_smoke_tests + - dotnet_tool_nuget_smoke_tests_macos + - dd_dotnet_installer_failure_tests_linux + - dd_dotnet_installer_failure_tests_linux_arm64 + condition: | + not(and( + in(dependencies.merge_commit_id.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.generate_variables.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_windows_tracer.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_windows_profiler.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_linux_tracer.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_linux_tracer_r2r.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_linux_universal.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_linux_profiler.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.package_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_arm64_tracer.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_arm64_tracer_r2r.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_arm64_profiler.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_arm64_universal.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.package_arm64.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_macos.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.package_windows.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_dd_dotnet_windows.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_dd_dotnet_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_dd_dotnet_linux_arm64.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.debug_builds.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.unit_tests_windows.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.unit_tests_macos.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.unit_tests_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.unit_tests_arm64.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_samples.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.build_samples_macos.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.integration_tests_windows.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.integration_tests_windows_debugger.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.integration_tests_windows_iis.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.integration_tests_azure_functions.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.static_analysis_checks_tracer.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.static_analysis_tests_profiler.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.msi_integration_tests_windows.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.integration_tests_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.integration_tests_linux_debugger.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.profiler_integration_tests_windows.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.profiler_integration_tests_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.asan_profiler_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.ubsan_profiler_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.tsan_profiler_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.integration_tests_arm64.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.integration_tests_arm64_debugger.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.exploration_tests_windows.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.exploration_tests_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.dotnet_tool.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.tool_artifacts_tests_windows.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.tool_artifacts_tests_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.store_ssi_artifacts.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.store_serverless_artifacts.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.upload_to_azure.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.upload_container_images.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.coverage.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.execution_benchmarks.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.profiler_execution_benchmarks.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.system_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.installer_smoke_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.installer_chiseled_smoke_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.nuget_installer_smoke_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.trimmed_installer_smoke_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.dotnet_tool_nuget_smoke_tests_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.dotnet_tool_smoke_tests_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.dotnet_tool_self_instrument_smoke_tests_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.installer_smoke_tests_arm64.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.installer_chiseled_smoke_tests_arm64.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.nuget_installer_smoke_tests_arm64.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.dotnet_tool_smoke_tests_arm64.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.nuget_installer_smoke_tests_windows.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.dotnet_tool_smoke_tests_windows.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.msi_installer_smoke_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.dd_dotnet_msi_installer_smoke_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.tracer_home_smoke_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.fleet_installer_iis_smoke_tests.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.dotnet_tool_nuget_smoke_tests_macos.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.dd_dotnet_installer_failure_tests_linux.result, 'Succeeded','SucceededWithIssues','Skipped'), + in(dependencies.dd_dotnet_installer_failure_tests_linux_arm64.result, 'Succeeded','SucceededWithIssues','Skipped'))) + jobs: + - job: report_failure + timeoutInMinutes: 60 #default value + pool: + name: azure-managed-linux-tasks + steps: + - checkout: none + - template: update-github-status.yml + parameters: + checkName: 'azure_pipeline_complete' + status: 'failure' + description: 'One or more stages failed. See associated failed Azure DevOps jobs' diff --git a/.azure-pipelines/ultimate-pipeline.yml b/.azure-pipelines/ultimate-pipeline.yml index 1d7044f22baf..d864929bdc4d 100644 --- a/.azure-pipelines/ultimate-pipeline.yml +++ b/.azure-pipelines/ultimate-pipeline.yml @@ -6364,3 +6364,5 @@ stages: echo $result displayName: Run artifact test (expecting failure) + +- template: steps/update-github-pipeline-status.yml # Template reference \ No newline at end of file diff --git a/.github/workflows/verify_generated_pipeline_is_updated.yml b/.github/workflows/verify_generated_pipeline_is_updated.yml new file mode 100644 index 000000000000..91f151f2dfd7 --- /dev/null +++ b/.github/workflows/verify_generated_pipeline_is_updated.yml @@ -0,0 +1,36 @@ +name: Verify ultimate-pipeline.yml changes have been persisted + +on: + pull_request: + workflow_dispatch: + +jobs: + verify_solution_changes_are_persisted: + runs-on: windows-latest + permissions: + contents: read + + steps: + - name: Support longpaths + run: git config --system core.longpaths true + + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1 + with: + dotnet-version: '9.0.203' + + - name: "Running GenerateUpdateGitHubPipelineStep" + run: .\tracer\build.ps1 GenerateUpdateGitHubPipelineStep + + - name: "Verify no changes in generated templates" + run: | + git diff --quiet -- .\.azure-pipelines\steps\update-github-pipeline-status.yml + if ($LASTEXITCODE -eq 1) { + git diff + Write-Error "Found changes in generated template. Did you change the stages in ultimate-pipeline? Regenerate the template locally by running the target 'GenerateUpdateGitHubPipelineStep', and ensure the changed files are committed to git." + Exit 1 + } else { + echo "No changes found to generated template" + } diff --git a/tracer/build/_build/Build.VariableGenerations.cs b/tracer/build/_build/Build.VariableGenerations.cs index 31dc12d32e49..a12980c44aa5 100644 --- a/tracer/build/_build/Build.VariableGenerations.cs +++ b/tracer/build/_build/Build.VariableGenerations.cs @@ -1768,6 +1768,75 @@ List GetTracerStagesThatWillNotRun(string[] gitChanges) } }); + Target GenerateUpdateGitHubPipelineStep + => _ => _ + .Unlisted() + .Executes(() => + { + var tracerConfig = PipelineParser.GetPipelineDefinition(RootDirectory); + + var dependsOnStages = tracerConfig + .Stages + .Where(x => !string.IsNullOrEmpty(x.Stage)) + .Select(x => $" - {x.Stage}"); + var dependsOn = string.Join(Environment.NewLine, dependsOnStages); + + var conditionStages = tracerConfig + .Stages + .Where(x => !string.IsNullOrEmpty(x.Stage)) + .Select(x => $" in(dependencies.{x.Stage}.result, 'Succeeded','SucceededWithIssues','Skipped')"); + var conditions = string.Join($",{Environment.NewLine}", conditionStages); + + var template = + $""" + # This file is auto-generated by Build.VariableGenerations.GenerateUpdateGitHubPipelineStep + stages: + - stage: azure_pipeline_succeeded + dependsOn: + {dependsOn} + condition: | + and( + {conditions}) + jobs: + - job: report_success + timeoutInMinutes: 60 #default value + pool: + name: azure-managed-linux-tasks + steps: + - checkout: none + - template: update-github-status.yml + parameters: + checkName: 'azure_pipeline_complete' + status: 'success' + description: 'Pipeline succeeded' + - stage: azure_pipeline_failed + dependsOn: + {dependsOn} + condition: | + not(and( + {conditions})) + jobs: + - job: report_failure + timeoutInMinutes: 60 #default value + pool: + name: azure-managed-linux-tasks + steps: + - checkout: none + - template: update-github-status.yml + parameters: + checkName: 'azure_pipeline_complete' + status: 'failure' + description: 'One or more stages failed. See associated failed Azure DevOps jobs' + + """; + + Logger.Information("Regenerated azure pipeline template {Template}", template); + + var templatePath = RootDirectory / ".azure-pipelines" / "steps" / "update-github-pipeline-status.yml"; + File.WriteAllText(templatePath, template); + Logger.Information("Update template at {Path}", templatePath); + }); + static bool IsGitBaseBranch(string baseBranch) { // *****