├── .config
├── 1espt
│ └── PipelineAutobaseliningConfig.yml
├── dotnet-tools.json
├── guardian
│ └── .gdnbaselines
└── tsaoptions.json
├── .dockerignore
├── .editorconfig
├── .gitattributes
├── .github
├── ISSUE_TEMPLATE
│ ├── codeflow-issue.yml
│ └── rollout-issue.md
├── copilot-instructions.md
├── copilot-setup-steps.yml
├── pull_request_template.md
└── workflows
│ └── inter-branch-merge-flow.yml
├── .gitignore
├── .packages
├── Directory.Build.props
├── Directory.Build.targets
└── Directory.Packages.props
├── .vault-config
├── helixkv.yaml
├── product-construction-dev.yaml
├── product-construction-int.yaml
├── product-construction-prod.yaml
├── vmr-synchronization.1.yaml
└── vmr-synchronization.2.yaml
├── Build.cmd
├── CODE-OF-CONDUCT.md
├── CredScanSuppressions.json
├── Directory.Build.props
├── Directory.Build.targets
├── Directory.Packages.props
├── LICENSE.TXT
├── NuGet.config
├── README.md
├── SECURITY.md
├── THIRD-PARTY-NOTICES.TXT
├── arcade-services.sln
├── artifacts
├── Directory.Build.props
├── Directory.Build.targets
└── Directory.Packages.props
├── azure-pipelines-daily.yml
├── azure-pipelines-pr.yml
├── azure-pipelines.yml
├── build.sh
├── docs
├── Darc.md
├── DarcLibGitClients.md
├── DevGuide.md
├── Images
│ ├── build-view.png
│ └── channels-view.png
└── scenarios.md
├── eng
├── BuildTask.targets
├── Install-SqlExpress.ps1
├── PoliCheckExclusions.xml
├── Publishing.props
├── Signing.props
├── Version.Details.xml
├── Versions.props
├── common
│ ├── BuildConfiguration
│ │ └── build-configuration.json
│ ├── CIBuild.cmd
│ ├── PSScriptAnalyzerSettings.psd1
│ ├── README.md
│ ├── SetupNugetSources.ps1
│ ├── SetupNugetSources.sh
│ ├── build.ps1
│ ├── build.sh
│ ├── cibuild.sh
│ ├── cross
│ │ ├── arm
│ │ │ ├── sources.list.bionic
│ │ │ ├── sources.list.focal
│ │ │ ├── sources.list.jammy
│ │ │ ├── sources.list.jessie
│ │ │ ├── sources.list.xenial
│ │ │ ├── sources.list.zesty
│ │ │ └── tizen
│ │ │ │ └── tizen.patch
│ │ ├── arm64
│ │ │ ├── sources.list.bionic
│ │ │ ├── sources.list.buster
│ │ │ ├── sources.list.focal
│ │ │ ├── sources.list.jammy
│ │ │ ├── sources.list.stretch
│ │ │ ├── sources.list.xenial
│ │ │ ├── sources.list.zesty
│ │ │ └── tizen
│ │ │ │ └── tizen.patch
│ │ ├── armel
│ │ │ ├── armel.jessie.patch
│ │ │ ├── sources.list.jessie
│ │ │ └── tizen
│ │ │ │ └── tizen.patch
│ │ ├── armv6
│ │ │ └── sources.list.buster
│ │ ├── build-android-rootfs.sh
│ │ ├── build-rootfs.sh
│ │ ├── ppc64le
│ │ │ └── sources.list.bionic
│ │ ├── riscv64
│ │ │ └── sources.list.sid
│ │ ├── s390x
│ │ │ └── sources.list.bionic
│ │ ├── tizen-build-rootfs.sh
│ │ ├── tizen-fetch.sh
│ │ ├── toolchain.cmake
│ │ └── x86
│ │ │ ├── sources.list.bionic
│ │ │ └── sources.list.xenial
│ ├── darc-init.ps1
│ ├── darc-init.sh
│ ├── dotnet-install.cmd
│ ├── dotnet-install.ps1
│ ├── dotnet-install.sh
│ ├── enable-cross-org-publishing.ps1
│ ├── generate-locproject.ps1
│ ├── generate-sbom-prep.ps1
│ ├── generate-sbom-prep.sh
│ ├── helixpublish.proj
│ ├── init-tools-native.cmd
│ ├── init-tools-native.ps1
│ ├── init-tools-native.sh
│ ├── internal-feed-operations.ps1
│ ├── internal-feed-operations.sh
│ ├── internal
│ │ ├── Directory.Build.props
│ │ ├── NuGet.config
│ │ └── Tools.csproj
│ ├── loc
│ │ └── P22DotNetHtmlLocalization.lss
│ ├── msbuild.ps1
│ ├── msbuild.sh
│ ├── native
│ │ ├── CommonLibrary.psm1
│ │ ├── common-library.sh
│ │ ├── init-compiler.sh
│ │ ├── init-distro-rid.sh
│ │ ├── init-os-and-arch.sh
│ │ ├── install-cmake-test.sh
│ │ ├── install-cmake.sh
│ │ └── install-tool.ps1
│ ├── pipeline-logging-functions.ps1
│ ├── pipeline-logging-functions.sh
│ ├── post-build
│ │ ├── add-build-to-channel.ps1
│ │ ├── check-channel-consistency.ps1
│ │ ├── nuget-validation.ps1
│ │ ├── post-build-utils.ps1
│ │ ├── publish-using-darc.ps1
│ │ ├── sourcelink-validation.ps1
│ │ ├── symbols-validation.ps1
│ │ └── trigger-subscriptions.ps1
│ ├── retain-build.ps1
│ ├── sdk-task.ps1
│ ├── sdl
│ │ ├── NuGet.config
│ │ ├── configure-sdl-tool.ps1
│ │ ├── execute-all-sdl-tools.ps1
│ │ ├── extract-artifact-archives.ps1
│ │ ├── extract-artifact-packages.ps1
│ │ ├── init-sdl.ps1
│ │ ├── packages.config
│ │ ├── run-sdl.ps1
│ │ ├── sdl.ps1
│ │ └── trim-assets-version.ps1
│ ├── templates-official
│ │ ├── job
│ │ │ ├── job.yml
│ │ │ ├── onelocbuild.yml
│ │ │ ├── publish-build-assets.yml
│ │ │ ├── source-build.yml
│ │ │ └── source-index-stage1.yml
│ │ ├── jobs
│ │ │ ├── codeql-build.yml
│ │ │ ├── jobs.yml
│ │ │ └── source-build.yml
│ │ ├── post-build
│ │ │ ├── common-variables.yml
│ │ │ ├── post-build.yml
│ │ │ ├── setup-maestro-vars.yml
│ │ │ └── trigger-subscription.yml
│ │ ├── steps
│ │ │ ├── add-build-to-channel.yml
│ │ │ ├── build-reason.yml
│ │ │ ├── component-governance.yml
│ │ │ ├── enable-internal-runtimes.yml
│ │ │ ├── execute-codeql.yml
│ │ │ ├── execute-sdl.yml
│ │ │ ├── generate-sbom.yml
│ │ │ ├── get-delegation-sas.yml
│ │ │ ├── get-federated-access-token.yml
│ │ │ ├── publish-logs.yml
│ │ │ ├── retain-build.yml
│ │ │ ├── send-to-helix.yml
│ │ │ └── source-build.yml
│ │ └── variables
│ │ │ ├── pool-providers.yml
│ │ │ └── sdl-variables.yml
│ ├── templates
│ │ ├── job
│ │ │ ├── execute-sdl.yml
│ │ │ ├── job.yml
│ │ │ ├── onelocbuild.yml
│ │ │ ├── publish-build-assets.yml
│ │ │ ├── source-build.yml
│ │ │ └── source-index-stage1.yml
│ │ ├── jobs
│ │ │ ├── codeql-build.yml
│ │ │ ├── jobs.yml
│ │ │ └── source-build.yml
│ │ ├── post-build
│ │ │ ├── common-variables.yml
│ │ │ ├── post-build.yml
│ │ │ ├── setup-maestro-vars.yml
│ │ │ └── trigger-subscription.yml
│ │ ├── steps
│ │ │ ├── add-build-to-channel.yml
│ │ │ ├── build-reason.yml
│ │ │ ├── component-governance.yml
│ │ │ ├── enable-internal-runtimes.yml
│ │ │ ├── execute-codeql.yml
│ │ │ ├── execute-sdl.yml
│ │ │ ├── generate-sbom.yml
│ │ │ ├── get-delegation-sas.yml
│ │ │ ├── get-federated-access-token.yml
│ │ │ ├── publish-logs.yml
│ │ │ ├── retain-build.yml
│ │ │ ├── run-on-unix.yml
│ │ │ ├── run-on-windows.yml
│ │ │ ├── run-script-ifequalelse.yml
│ │ │ ├── send-to-helix.yml
│ │ │ ├── source-build.yml
│ │ │ ├── telemetry-end.yml
│ │ │ └── telemetry-start.yml
│ │ └── variables
│ │ │ ├── pool-providers.yml
│ │ │ └── sdl-variables.yml
│ ├── tools.ps1
│ └── tools.sh
├── enforce-issue.ps1
├── new-issue.ps1
├── service-templates
│ ├── ProductConstructionService
│ │ ├── ApplicationGateway
│ │ │ ├── application-gateway.bicep
│ │ │ ├── private-dns-zone.bicep
│ │ │ ├── production.bicepparam
│ │ │ └── staging.bicepparam
│ │ ├── FullCreate
│ │ │ ├── container-app.bicep
│ │ │ ├── container-environment.bicep
│ │ │ ├── container-registry.bicep
│ │ │ ├── key-vaults.bicep
│ │ │ ├── managed-identities.bicep
│ │ │ ├── nsg.bicep
│ │ │ ├── production.bicepparam
│ │ │ ├── provision.bicep
│ │ │ ├── provision.ps1
│ │ │ ├── public-ip-address.bicep
│ │ │ ├── redis.bicep
│ │ │ ├── scheduledContainerJob.bicep
│ │ │ ├── staging.bicepparam
│ │ │ ├── storage-account.bicep
│ │ │ └── virtual-network.bicep
│ │ └── RecreateEnvOnly
│ │ │ ├── README.md
│ │ │ ├── container-environment-recreate.bicep
│ │ │ ├── production.bicepparam
│ │ │ ├── recreate.bicep
│ │ │ └── staging.bicepparam
│ └── readme.md
└── templates
│ ├── jobs
│ ├── darc-and-api-tests.yml
│ └── e2e-pcs-tests.yml
│ ├── stages
│ ├── deploy.yaml
│ └── secret-validation.yml
│ └── steps
│ ├── build.yml
│ ├── docker-build.yml
│ ├── generate-sbom.yml
│ └── test.yml
├── github-merge-flow.jsonc
├── global.json
├── src
├── Maestro
│ ├── Maestro.Common
│ │ ├── AppCredentials
│ │ │ ├── AppCredential.cs
│ │ │ ├── AppCredentialResolver.cs
│ │ │ ├── AppCredentialResolverOptions.cs
│ │ │ ├── CachedInteractiveBrowserCredential.cs
│ │ │ ├── CredentialResolverOptions.cs
│ │ │ └── ResolvedCredential.cs
│ │ ├── AzureDevOpsTokens
│ │ │ ├── AzureDevOpsCredentialResolverOptions.cs
│ │ │ ├── AzureDevOpsTokenProvider.cs
│ │ │ ├── AzureDevOpsTokenProviderOptions.cs
│ │ │ └── IAzureDevOpsTokenProvider.cs
│ │ ├── IRemoteTokenProvider.cs
│ │ └── Maestro.Common.csproj
│ ├── Maestro.Data
│ │ ├── ApplicationUser.cs
│ │ ├── ApplicationUserPersonalAccessToken.cs
│ │ ├── BuildAssetRegistryContext.cs
│ │ ├── BuildAssetRegistryInstallationLookup.cs
│ │ ├── BuildAssetRegistryRegistrations.cs
│ │ ├── GlobalSuppressions.cs
│ │ ├── JsonExtensions.cs
│ │ ├── Maestro.Data.csproj
│ │ ├── Migrations
│ │ │ ├── 20220425233739_initial-squashed.cs
│ │ │ ├── 20220427230202_initial-squashed.Designer.cs
│ │ │ ├── 20240202111944_CodeEnabledSubscriptions.Designer.cs
│ │ │ ├── 20240202111944_CodeEnabledSubscriptions.cs
│ │ │ ├── 20240216101522_CodeEnabledSubscriptions2.Designer.cs
│ │ │ ├── 20240216101522_CodeEnabledSubscriptions2.cs
│ │ │ ├── 20240403133733_CodeEnabledSubscriptions3.Designer.cs
│ │ │ ├── 20240403133733_CodeEnabledSubscriptions3.cs
│ │ │ ├── 20250227091038_IncreaseAssetNameSize.Designer.cs
│ │ │ ├── 20250227091038_IncreaseAssetNameSize.cs
│ │ │ └── BuildAssetRegistryContextModelSnapshot.cs
│ │ ├── Models
│ │ │ ├── Asset.cs
│ │ │ ├── AssetFilter.cs
│ │ │ ├── AssetLocation.cs
│ │ │ ├── Build.cs
│ │ │ ├── BuildIncoherence.cs
│ │ │ ├── Channel.cs
│ │ │ ├── DefaultChannel.cs
│ │ │ ├── DependencyFlow.cs
│ │ │ ├── GoalTime.cs
│ │ │ ├── LocationType.cs
│ │ │ ├── LongestBuildPath.cs
│ │ │ ├── MergePolicyDefinition.cs
│ │ │ ├── Repository.cs
│ │ │ ├── Subscription.cs
│ │ │ ├── SubscriptionPolicy.cs
│ │ │ ├── SubscriptionUpdate.cs
│ │ │ ├── SubscriptionUpdateHistory.cs
│ │ │ └── UpdateFrequency.cs
│ │ ├── SqlServerDbContextOptionsExtensions.cs
│ │ └── dotnet-ef.ps1
│ ├── Maestro.DataProviders
│ │ ├── DarcRemoteMemoryCache.cs
│ │ ├── ISqlBarClient.cs
│ │ ├── Maestro.DataProviders.csproj
│ │ ├── MultiProjectKustoQuery.cs
│ │ ├── RemoteFactory.cs
│ │ ├── SharedKustoQueries.cs
│ │ └── SqlBarClient.cs
│ ├── Maestro.MergePolicies
│ │ ├── AllChecksSuccessfulMergePolicy.cs
│ │ ├── BackFlowMergePolicy.cs
│ │ ├── CodeFlowDirection.cs
│ │ ├── CodeFlowMergePolicy.cs
│ │ ├── CoherencyErrorDetails.cs
│ │ ├── DependencyUpdateSummary.cs
│ │ ├── DontAutomergeDowngradesMergePolicy.cs
│ │ ├── ForwardFlowMergePolicy.cs
│ │ ├── Maestro.MergePolicies.csproj
│ │ ├── MergePolicy.cs
│ │ ├── MergePolicyServiceCollectionExtensions.cs
│ │ ├── NoRequestedChangesMergePolicy.cs
│ │ ├── PullRequestUpdateSummary.cs
│ │ ├── StandardMergePolicy.cs
│ │ ├── SubscriptionUpdateSummary.cs
│ │ └── ValidateCoherencyMergePolicy.cs
│ ├── Maestro.MergePolicyEvaluation
│ │ ├── IMergePolicyInfo.cs
│ │ ├── Maestro.MergePolicyEvaluation.csproj
│ │ ├── MergePolicyConstants.cs
│ │ ├── MergePolicyEvaluationResult.cs
│ │ ├── MergePolicyEvaluationResults.cs
│ │ └── MergePolicyEvaluationStatus.cs
│ └── Microsoft.DotNet.Maestro.Tasks
│ │ ├── Microsoft.DotNet.Maestro.Tasks.csproj
│ │ ├── Proxies
│ │ ├── GetEnvProxy.cs
│ │ └── VersionIdentifierProxy.cs
│ │ ├── XmlSerializationHelper.cs
│ │ └── src
│ │ ├── AssetDataComparer.cs
│ │ ├── CertificatesSignInfoComparer.cs
│ │ ├── FileExtensionSignInfoComparer.cs
│ │ ├── FileSignInfoComparer.cs
│ │ ├── ItemsToSignComparer.cs
│ │ ├── LaunchDebugger.cs
│ │ ├── MSBuildLogger.cs
│ │ ├── Models
│ │ ├── Manifest.cs
│ │ └── ManifestBuildData.cs
│ │ ├── PushMetadataToBuildAssetRegistry.cs
│ │ └── StrongNameSignInfoComparer.cs
├── Microsoft.DotNet.Darc
│ ├── Darc
│ │ ├── Constants.cs
│ │ ├── Helpers
│ │ │ ├── CancellationKeyListener.cs
│ │ │ ├── EncodedFile.cs
│ │ │ ├── LocalSettings.cs
│ │ │ ├── RemoteFactory.cs
│ │ │ ├── UxHelpers.cs
│ │ │ └── UxManager.cs
│ │ ├── Microsoft.DotNet.Darc.csproj
│ │ ├── Models
│ │ │ └── PopUps
│ │ │ │ ├── AddSubscriptionPopUp.cs
│ │ │ │ ├── AuthenticateEditorPopUp.cs
│ │ │ │ ├── EditorPopUp.cs
│ │ │ │ ├── MergePoliciesPopUpHelpers.cs
│ │ │ │ ├── MergePolicyData.cs
│ │ │ │ ├── SetRepositoryMergePoliciesPopUp.cs
│ │ │ │ ├── SubscriptionData.cs
│ │ │ │ ├── SubscriptionPopUp.cs
│ │ │ │ ├── SubscriptionUpdateData.cs
│ │ │ │ └── UpdateSubscriptionPopUp.cs
│ │ ├── Operations
│ │ │ ├── AddBuildToChannelOperation.cs
│ │ │ ├── AddChannelOperation.cs
│ │ │ ├── AddDefaultChannelOperation.cs
│ │ │ ├── AddDependencyOperation.cs
│ │ │ ├── AddSubscriptionOperation.cs
│ │ │ ├── AuthenticateOperation.cs
│ │ │ ├── CloneOperation.cs
│ │ │ ├── DefaultChannelStatusOperation.cs
│ │ │ ├── DeleteBuildFromChannelOperation.cs
│ │ │ ├── DeleteChannelOperation.cs
│ │ │ ├── DeleteDefaultChannelOperation.cs
│ │ │ ├── DeleteSubscriptionsOperation.cs
│ │ │ ├── GatherDropOperation.cs
│ │ │ ├── GetAssetOperation.cs
│ │ │ ├── GetBuildOperation.cs
│ │ │ ├── GetChannelOperation.cs
│ │ │ ├── GetChannelsOperation.cs
│ │ │ ├── GetDefaultChannelsOperation.cs
│ │ │ ├── GetDependenciesOperation.cs
│ │ │ ├── GetDependencyFlowGraphOperation.cs
│ │ │ ├── GetDependencyGraphOperation.cs
│ │ │ ├── GetGoalOperation.cs
│ │ │ ├── GetHealthOperation.cs
│ │ │ ├── GetLatestBuildOperation.cs
│ │ │ ├── GetRepositoryMergePoliciesOperation.cs
│ │ │ ├── GetSubscriptionsOperation.cs
│ │ │ ├── Operation.cs
│ │ │ ├── SetGoalOperations.cs
│ │ │ ├── SetRepositoryMergePoliciesOperation.cs
│ │ │ ├── SubscriptionsStatusOperation.cs
│ │ │ ├── TriggerSubscriptionsOperation.cs
│ │ │ ├── UpdateBuildOperation.cs
│ │ │ ├── UpdateChannelOperation.cs
│ │ │ ├── UpdateDefaultChannelBaseOperation.cs
│ │ │ ├── UpdateDependenciesOperation.cs
│ │ │ ├── UpdateSubscriptionOperation.cs
│ │ │ ├── VerifyOperation.cs
│ │ │ └── VirtualMonoRepo
│ │ │ │ ├── BackflowOperation.cs
│ │ │ │ ├── CloakedFileScanOperation.cs
│ │ │ │ ├── CodeFlowOperation.cs
│ │ │ │ ├── ForwardFlowOperation.cs
│ │ │ │ ├── GenerateTpnOperation.cs
│ │ │ │ ├── GetRepoVersionOperation.cs
│ │ │ │ ├── InitializeOperation.cs
│ │ │ │ ├── PushOperation.cs
│ │ │ │ ├── ScanOperationBase.cs
│ │ │ │ ├── UpdateOperation.cs
│ │ │ │ ├── VmrDiffOperation.cs
│ │ │ │ └── VmrOperationBase.cs
│ │ ├── Options
│ │ │ ├── AddBuildToChannelCommandLineOptions.cs
│ │ │ ├── AddChannelCommandLineOptions.cs
│ │ │ ├── AddDefaultChannelCommandLineOptions.cs
│ │ │ ├── AddDependencyCommandLineOptions.cs
│ │ │ ├── AddSubscriptionCommandLineOptions.cs
│ │ │ ├── AuthenticateCommandLineOptions.cs
│ │ │ ├── CloneCommandLineOptions.cs
│ │ │ ├── CommandLineOptions.cs
│ │ │ ├── DarcOutputType.cs
│ │ │ ├── DefaultChannelStatusCommandLineOptions.cs
│ │ │ ├── DeleteBuildFromChannelCommandLineOptions.cs
│ │ │ ├── DeleteChannelCommandLineOptions.cs
│ │ │ ├── DeleteDefaultChannelCommandLineOptions.cs
│ │ │ ├── DeleteSubscriptionsCommandLineOptions.cs
│ │ │ ├── GatherDropCommandLineOptions.cs
│ │ │ ├── GetAssetCommandLineOptions.cs
│ │ │ ├── GetBuildCommandLineOptions.cs
│ │ │ ├── GetChannelCommandLineOptions.cs
│ │ │ ├── GetChannelsCommandLineOptions.cs
│ │ │ ├── GetDefaultChannelsCommandLineOptions.cs
│ │ │ ├── GetDependenciesCommandLineOptions.cs
│ │ │ ├── GetDependencyFlowGraphCommandLineOptions.cs
│ │ │ ├── GetDependencyGraphCommandLineOptions.cs
│ │ │ ├── GetGoalCommandLineOptions.cs
│ │ │ ├── GetHealthCommandLineOptions.cs
│ │ │ ├── GetLatestBuildCommandLineOptions.cs
│ │ │ ├── GetRepositoryMergePoliciesCommandLineOptions.cs
│ │ │ ├── GetSubscriptionsCommandLineOptions.cs
│ │ │ ├── ICommandLineOptions.cs
│ │ │ ├── RedactFromLoggingAttribute.cs
│ │ │ ├── SetGoalCommandLineOptions.cs
│ │ │ ├── SetRepositoryMergePoliciesCommandLineOptions.cs
│ │ │ ├── SubscriptionCommandLineOptions.cs
│ │ │ ├── SubscriptionsCommandLineOptions.cs
│ │ │ ├── SubscriptionsStatusCommandLineOptions.cs
│ │ │ ├── TriggerSubscriptionsCommandLineOptions.cs
│ │ │ ├── UpdateBuildCommandLineOptions.cs
│ │ │ ├── UpdateChannelCommandLineOptions.cs
│ │ │ ├── UpdateDefaultChannelBaseCommandLineOptions.cs
│ │ │ ├── UpdateDependenciesCommandLineOptions.cs
│ │ │ ├── UpdateSubscriptionCommandLineOptions.cs
│ │ │ ├── VerifyCommandLineOptions.cs
│ │ │ └── VirtualMonoRepo
│ │ │ │ ├── BackflowCommandLineOptions.cs
│ │ │ │ ├── CloakedFileScanOptions.cs
│ │ │ │ ├── CodeFlowCommandLineOptions.cs
│ │ │ │ ├── ForwardFlowCommandLineOptions.cs
│ │ │ │ ├── GenerateTpnCommandLineOptions.cs
│ │ │ │ ├── GetRepoVersionCommandLineOptions.cs
│ │ │ │ ├── IBaseVmrCommandLineOptions.cs
│ │ │ │ ├── InitializeCommandLineOptions.cs
│ │ │ │ ├── UpdateCommandLineOptions.cs
│ │ │ │ ├── VmrCommandLineOptions.cs
│ │ │ │ ├── VmrCommandLineOptionsBase.cs
│ │ │ │ ├── VmrDiffOptions.cs
│ │ │ │ ├── VmrPushCommandLineOptions.cs
│ │ │ │ ├── VmrScanOptions.cs
│ │ │ │ └── VmrSyncCommandLineOptions.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── runtimeconfig.template.json
│ └── DarcLib
│ │ ├── AssetLocationResolver.cs
│ │ ├── AzureDevOpsClient.cs
│ │ ├── BarApiClient.cs
│ │ ├── CoherencyUpdateResolver.cs
│ │ ├── Commit.cs
│ │ ├── Constants.cs
│ │ ├── DarcAuthenticationFailureException.cs
│ │ ├── DarcCoherencyException.cs
│ │ ├── DarcException.cs
│ │ ├── DependencyException.cs
│ │ ├── DependencyFileNotFoundException.cs
│ │ ├── GitHubClient.cs
│ │ ├── GitHubTokenProvider.cs
│ │ ├── GitNativeRepoCloner.cs
│ │ ├── GitRepoCloner.cs
│ │ ├── GitRepoFactory.cs
│ │ ├── GitSubmoduleInfo.cs
│ │ ├── GithubApplicationInstallationException.cs
│ │ ├── HealthMetrics
│ │ ├── HealthMetric.cs
│ │ ├── ProductDependencyCyclesHealthMetric.cs
│ │ └── SubscriptionHealthMetric.cs
│ │ ├── Helpers
│ │ ├── AzureAuthentication.cs
│ │ ├── DependencyExtensions.cs
│ │ ├── DependencyFileManager.cs
│ │ ├── FeedConstants.cs
│ │ ├── FileSystem.cs
│ │ ├── GitFile.cs
│ │ ├── GitFileContentContainer.cs
│ │ ├── GitObjectType.cs
│ │ ├── GitRepoType.cs
│ │ ├── GitRepoUrlUtils.cs
│ │ ├── HttpRequestManager.cs
│ │ ├── IDependencyFileManager.cs
│ │ ├── IFileSystem.cs
│ │ ├── LocalPath.cs
│ │ ├── ManifestHelper.cs
│ │ ├── PackagesHelper.cs
│ │ ├── ProcessExecutionResult.cs
│ │ ├── ProcessManager.cs
│ │ ├── StringUtils.cs
│ │ ├── VersionDetailsParser.cs
│ │ └── VersionFiles.cs
│ │ ├── IAzureDevOpsClient.cs
│ │ ├── IBarApiClient.cs
│ │ ├── IBasicBarClient.cs
│ │ ├── ICoherencyUpdateResolver.cs
│ │ ├── IGitRepo.cs
│ │ ├── IGitRepoCloner.cs
│ │ ├── IGitRepoExtension.cs
│ │ ├── ILocalGitClient.cs
│ │ ├── ILocalGitRepo.cs
│ │ ├── ILocalLibGit2Client.cs
│ │ ├── IRemote.cs
│ │ ├── IRemoteFactory.cs
│ │ ├── IRemoteGitRepo.cs
│ │ ├── KnownDependencyType.cs
│ │ ├── Local.cs
│ │ ├── LocalGitClient.cs
│ │ ├── LocalGitRepo.cs
│ │ ├── LocalLibGit2Client.cs
│ │ ├── MergePullRequestParameters.cs
│ │ ├── Microsoft.DotNet.DarcLib.csproj
│ │ ├── Models
│ │ ├── AzureDevOps
│ │ │ ├── AzureDevOpsArtifact.cs
│ │ │ ├── AzureDevOpsArtifactSourceReference.cs
│ │ │ ├── AzureDevOpsBuild.cs
│ │ │ ├── AzureDevOpsBuildArtifact.cs
│ │ │ ├── AzureDevOpsBuildDefinition.cs
│ │ │ ├── AzureDevOpsChange.cs
│ │ │ ├── AzureDevOpsChangeType.cs
│ │ │ ├── AzureDevOpsCheckState.cs
│ │ │ ├── AzureDevOpsComment.cs
│ │ │ ├── AzureDevOpsCommit.cs
│ │ │ ├── AzureDevOpsFeed.cs
│ │ │ ├── AzureDevOpsIdNamePair.cs
│ │ │ ├── AzureDevOpsItem.cs
│ │ │ ├── AzureDevOpsPackage.cs
│ │ │ ├── AzureDevOpsPipelineResourceParameter.cs
│ │ │ ├── AzureDevOpsPipelineRunDefinition.cs
│ │ │ ├── AzureDevOpsPrStatus.cs
│ │ │ ├── AzureDevOpsProject.cs
│ │ │ ├── AzureDevOpsPush.cs
│ │ │ ├── AzureDevOpsRef.cs
│ │ │ ├── AzureDevOpsRefUpdate.cs
│ │ │ ├── AzureDevOpsRelease.cs
│ │ │ ├── AzureDevOpsReleaseDefinition.cs
│ │ │ ├── AzureDevOpsReleaseEnvironment.cs
│ │ │ ├── AzureDevOpsReleaseStatus.cs
│ │ │ ├── AzureDevOpsRepositoryResourceParameter.cs
│ │ │ ├── AzureDevOpsRunResourcesParameters.cs
│ │ │ └── AzureDevOpsVariable.cs
│ │ ├── Check.cs
│ │ ├── CheckState.cs
│ │ ├── Darc
│ │ │ ├── AssetComparer.cs
│ │ │ ├── BuildComparer.cs
│ │ │ ├── CoherencyMode.cs
│ │ │ ├── DependencyDetail.cs
│ │ │ ├── DependencyDetailComparer.cs
│ │ │ ├── DependencyFlowEdge.cs
│ │ │ ├── DependencyFlowGraph.cs
│ │ │ ├── DependencyFlowNode.cs
│ │ │ ├── DependencyGraph.cs
│ │ │ ├── DependencyGraphNode.cs
│ │ │ ├── DependencyGraphNodeComparer.cs
│ │ │ ├── DependencyType.cs
│ │ │ ├── DependencyUpdate.cs
│ │ │ ├── DownloadedAsset.cs
│ │ │ ├── DownloadedBuild.cs
│ │ │ └── SourceBuildInfo.cs
│ │ ├── GitDiff.cs
│ │ ├── GitHub
│ │ │ ├── GitHubComment.cs
│ │ │ ├── GitHubCommit.cs
│ │ │ ├── GitHubContent.cs
│ │ │ ├── GitHubContentType.cs
│ │ │ ├── GitHubMergeMethod.cs
│ │ │ ├── GitHubPullRequest.cs
│ │ │ ├── GitHubRef.cs
│ │ │ ├── GitHubTree.cs
│ │ │ └── GitHubTreeItem.cs
│ │ ├── MsBuildPropsFile.cs
│ │ ├── PrStatus.cs
│ │ ├── Review.cs
│ │ ├── ReviewState.cs
│ │ ├── VersionDetails.cs
│ │ └── VirtualMonoRepo
│ │ │ ├── CodeFlowParameters.cs
│ │ │ ├── CodeFlowResult.cs
│ │ │ ├── Codeflow.cs
│ │ │ ├── GitInfoFile.cs
│ │ │ ├── ManifestRecord.cs
│ │ │ ├── SourceManifest.cs
│ │ │ ├── SourceMapping.cs
│ │ │ └── SourceMappingFile.cs
│ │ ├── PullRequestNotMergeableException.cs
│ │ ├── PullRequestProperties.cs
│ │ ├── Remote.cs
│ │ ├── RemoteRepoBase.cs
│ │ ├── RemoteTokenProvider.cs
│ │ ├── TelemetryRecorder.cs
│ │ └── VirtualMonoRepo
│ │ ├── CloneManager.cs
│ │ ├── CodeFlowVmrUpdater.cs
│ │ ├── CodeownersGenerator.cs
│ │ ├── ConflictingDependencyUpdateException.cs
│ │ ├── CredScanSuppressionsGenerator.cs
│ │ ├── EmptySyncException.cs
│ │ ├── Exceptions.cs
│ │ ├── IVmrInitializer.cs
│ │ ├── IVmrPatchHandler.cs
│ │ ├── IVmrScanner.cs
│ │ ├── IVmrUpdater.cs
│ │ ├── InvalidSynchronizationException.cs
│ │ ├── RepositoryCloneManager.cs
│ │ ├── SourceMappingParser.cs
│ │ ├── ThirdPartyNoticesGenerator.cs
│ │ ├── VersionFileCodeFlowUpdater.cs
│ │ ├── VersionFileUpdateResult.cs
│ │ ├── VmrBackflower.cs
│ │ ├── VmrCloakedFileScanner.cs
│ │ ├── VmrCloneManager.cs
│ │ ├── VmrCodeflower.cs
│ │ ├── VmrDependencyTracker.cs
│ │ ├── VmrDependencyUpdate.cs
│ │ ├── VmrForwardFlower.cs
│ │ ├── VmrInfo.cs
│ │ ├── VmrIngestionPatch.cs
│ │ ├── VmrInitializer.cs
│ │ ├── VmrManagerBase.cs
│ │ ├── VmrPatchHandler.cs
│ │ ├── VmrPusher.cs
│ │ ├── VmrRegistrations.cs
│ │ ├── VmrScanner.cs
│ │ ├── VmrUpdater.cs
│ │ ├── WorkBranch.cs
│ │ └── WorkBranchFactory.cs
└── ProductConstructionService
│ ├── BarVizBlazor.sln
│ ├── DependencyFlowProcess.md
│ ├── Microsoft.DotNet.ProductConstructionService.Client
│ ├── AuthenticationException.cs
│ ├── Build.cs
│ ├── BuildData.cs
│ ├── Generated
│ │ ├── Assets.cs
│ │ ├── AzDo.cs
│ │ ├── BuildTime.cs
│ │ ├── Builds.cs
│ │ ├── Channels.cs
│ │ ├── DefaultChannels.cs
│ │ ├── Goal.cs
│ │ ├── Models
│ │ │ ├── ApiError.cs
│ │ │ ├── Asset.cs
│ │ │ ├── AssetAndLocation.cs
│ │ │ ├── AssetData.cs
│ │ │ ├── AssetLocation.cs
│ │ │ ├── AssetLocationData.cs
│ │ │ ├── AzDoBuild.cs
│ │ │ ├── Build.cs
│ │ │ ├── BuildData.cs
│ │ │ ├── BuildGraph.cs
│ │ │ ├── BuildIncoherence.cs
│ │ │ ├── BuildRef.cs
│ │ │ ├── BuildTime.cs
│ │ │ ├── BuildUpdate.cs
│ │ │ ├── Channel.cs
│ │ │ ├── Commit.cs
│ │ │ ├── DefaultChannel.cs
│ │ │ ├── DefaultChannelCreateData.cs
│ │ │ ├── DefaultChannelUpdateData.cs
│ │ │ ├── FlowEdge.cs
│ │ │ ├── FlowGraph.cs
│ │ │ ├── FlowRef.cs
│ │ │ ├── Goal.cs
│ │ │ ├── GoalRequestJson.cs
│ │ │ ├── LocationType.cs
│ │ │ ├── MergePolicy.cs
│ │ │ ├── PullRequestUpdate.cs
│ │ │ ├── ReleasePipeline.cs
│ │ │ ├── RepositoryBranch.cs
│ │ │ ├── RepositoryHistoryItem.cs
│ │ │ ├── Subscription.cs
│ │ │ ├── SubscriptionData.cs
│ │ │ ├── SubscriptionHistoryItem.cs
│ │ │ ├── SubscriptionPolicy.cs
│ │ │ ├── SubscriptionUpdate.cs
│ │ │ ├── TrackedPullRequest.cs
│ │ │ └── UpdateFrequency.cs
│ │ ├── PagedResponse.cs
│ │ ├── Pipelines.cs
│ │ ├── ProductConstructionServiceApi.cs
│ │ ├── PullRequest.cs
│ │ ├── Repository.cs
│ │ ├── Status.cs
│ │ └── Subscriptions.cs
│ ├── GlobalSuppressions.cs
│ ├── Microsoft.DotNet.ProductConstructionService.Client.csproj
│ ├── PcsApiFactory.cs
│ ├── ProductConstructionServiceApi.cs
│ ├── ProductConstructionServiceApiOptions.cs
│ ├── Subscription.cs
│ ├── Subscriptions.cs
│ └── generate-client.cmd
│ ├── ProductConstructionService.Api
│ ├── Api
│ │ ├── ApiError.cs
│ │ ├── GitHubInstallationIdResolver.cs
│ │ ├── HandleDuplicateKeyRowsAttribute.cs
│ │ ├── RepositoryUrlAttribute.cs
│ │ ├── ValidateModelStateAttribute.cs
│ │ ├── v2018_07_16
│ │ │ ├── Controllers
│ │ │ │ ├── AssetsController.cs
│ │ │ │ ├── BuildsController.cs
│ │ │ │ ├── ChannelsController.cs
│ │ │ │ ├── DefaultChannelsController.cs
│ │ │ │ ├── PipelinesController.cs
│ │ │ │ ├── RepositoryController.cs
│ │ │ │ └── SubscriptionsController.cs
│ │ │ └── Models
│ │ │ │ ├── Asset.cs
│ │ │ │ ├── AssetData.cs
│ │ │ │ ├── AssetLocation.cs
│ │ │ │ ├── AssetLocationData.cs
│ │ │ │ ├── Build.cs
│ │ │ │ ├── BuildData.cs
│ │ │ │ ├── BuildDataValidator.cs
│ │ │ │ ├── Channel.cs
│ │ │ │ ├── DefaultChannel.cs
│ │ │ │ ├── FlowEdge.cs
│ │ │ │ ├── FlowGraph.cs
│ │ │ │ ├── FlowRef.cs
│ │ │ │ ├── LocationType.cs
│ │ │ │ ├── MergePolicy.cs
│ │ │ │ ├── ReleasePipeline.cs
│ │ │ │ ├── RepositoryBranch.cs
│ │ │ │ ├── RepositoryHistoryItem.cs
│ │ │ │ ├── Subscription.cs
│ │ │ │ ├── SubscriptionData.cs
│ │ │ │ ├── SubscriptionHistoryItem.cs
│ │ │ │ ├── SubscriptionPolicy.cs
│ │ │ │ ├── SubscriptionUpdate.cs
│ │ │ │ └── UpdateFrequency.cs
│ │ ├── v2019_01_16
│ │ │ ├── Controllers
│ │ │ │ ├── BuildTimeController.cs
│ │ │ │ ├── BuildsController.cs
│ │ │ │ ├── GoalController.cs
│ │ │ │ └── SubscriptionsController.cs
│ │ │ └── Models
│ │ │ │ ├── Build.cs
│ │ │ │ ├── BuildData.cs
│ │ │ │ ├── BuildGraph.cs
│ │ │ │ ├── BuildTime.cs
│ │ │ │ ├── BuildUpdate.cs
│ │ │ │ ├── Goal.cs
│ │ │ │ └── Subscription.cs
│ │ └── v2020_02_20
│ │ │ ├── Controllers
│ │ │ ├── AssetsController.cs
│ │ │ ├── BuildsController.cs
│ │ │ ├── ChannelsController.cs
│ │ │ ├── DefaultChannelsController.cs
│ │ │ ├── GoalController.cs
│ │ │ ├── PullRequestController.cs
│ │ │ └── SubscriptionsController.cs
│ │ │ └── Models
│ │ │ ├── AssetAndLocation.cs
│ │ │ ├── Build.cs
│ │ │ ├── BuildData.cs
│ │ │ ├── BuildGraph.cs
│ │ │ ├── BuildIncoherence.cs
│ │ │ ├── BuildUpdate.cs
│ │ │ ├── Channel.cs
│ │ │ ├── CodeFlowRequest.cs
│ │ │ ├── Commit.cs
│ │ │ ├── CreateBranchRequest.cs
│ │ │ ├── DefaultChannel.cs
│ │ │ ├── Goal.cs
│ │ │ ├── Subscription.cs
│ │ │ ├── SubscriptionData.cs
│ │ │ └── SubscriptionUpdate.cs
│ ├── Configuration
│ │ ├── ApiRedirection.cs
│ │ ├── AuthenticationConfiguration.cs
│ │ ├── DataProtection.cs
│ │ ├── GitHubClientFactoryConfiguration.cs
│ │ ├── KeyVaultSecretsWithPrefix.cs
│ │ ├── MaestroAuthTestRepositoryExtensions.cs
│ │ ├── NameRequestBodyFilter.cs
│ │ ├── PaginatedExtension.cs
│ │ ├── RequestBodyNameExtension.cs
│ │ ├── SpaApplicationBuilderExtensions.cs
│ │ ├── SubscriptionTriggerConfiguration.cs
│ │ ├── SwaggerConfiguration.cs
│ │ └── WorkItemProcessorStateInitialization.cs
│ ├── Controllers
│ │ ├── AccountController.cs
│ │ ├── ActionResults
│ │ │ └── PreconditionFailedActionResult.cs
│ │ ├── AzDevController.cs
│ │ ├── AzDoController.cs
│ │ ├── GitHubWebhookEventProcessor.cs
│ │ ├── Models
│ │ │ └── AzDoBuild.cs
│ │ └── StatusController.cs
│ ├── Dockerfile
│ ├── InitializationBackgroundService.cs
│ ├── InitializationHealthCheck.cs
│ ├── Pages
│ │ ├── DependencyFlow
│ │ │ ├── GitHubInfo.cs
│ │ │ ├── Incoming.cshtml
│ │ │ ├── Incoming.cshtml.cs
│ │ │ ├── IncomingRepo.cs
│ │ │ ├── Sla.cs
│ │ │ └── SlaOptions.cs
│ │ ├── Error.cshtml
│ │ ├── Error.cshtml.cs
│ │ ├── _Layout.cshtml
│ │ └── _ViewStart.cshtml
│ ├── PcsStartup.cs
│ ├── ProductConstructionService.Api.csproj
│ ├── Program.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Telemetry
│ │ ├── RemoveDefaultPropertiesTelemetryProcessor.cs
│ │ ├── TelemetryConfiguration.cs
│ │ ├── TelemetryRecorder.cs
│ │ └── TelemetryRoleNameInitializer.cs
│ ├── VirtualMonoRepo
│ │ └── VmrConfiguration.cs
│ ├── appsettings.Development.json
│ ├── appsettings.Production.json
│ ├── appsettings.Staging.json
│ ├── appsettings.json
│ └── wwwroot
│ │ └── _
│ ├── ProductConstructionService.AppHost
│ ├── ProductConstructionService.AppHost.csproj
│ ├── Program.cs
│ ├── appsettings.Development.json
│ └── appsettings.json
│ ├── ProductConstructionService.BarViz
│ ├── App.razor
│ ├── Code
│ │ ├── Helpers
│ │ │ ├── BuildGraphData.cs
│ │ │ ├── BuildHelper.cs
│ │ │ ├── BuildTreeViewItem.cs
│ │ │ ├── DateFormatter.cs
│ │ │ ├── JSRuntimeExtensions.cs
│ │ │ ├── RepoUrlConverter.cs
│ │ │ └── StringExtensions.cs
│ │ ├── SelectedDependencyRelationType.cs
│ │ └── Services
│ │ │ ├── UrlRedirectManager.cs
│ │ │ └── UserRoleManager.cs
│ ├── Components
│ │ ├── Assets.razor
│ │ ├── BuildInfo.razor
│ │ ├── ChannelNavMenuItem.razor
│ │ ├── CodeflowContextMenu.razor
│ │ ├── CodeflowSubscriptionContextMenu.razor
│ │ ├── Common
│ │ │ ├── DataGridLoadingSkeleton.razor
│ │ │ ├── DependencyRelationIcon.razor
│ │ │ ├── GridViewTemplate.razor
│ │ │ ├── PageLoadingStatus.razor
│ │ │ ├── PageLoadingStatus.razor.css
│ │ │ ├── SmallBadge.razor
│ │ │ └── SmallBadge.razor.css
│ │ ├── Dependencies.razor
│ │ ├── Dependencies.razor.cs
│ │ ├── DependencyGrid.razor
│ │ ├── DependencyGrid.razor.cs
│ │ ├── DependencyTree.razor
│ │ ├── PinnedChannels.razor
│ │ ├── PullRequestContextMenu.razor
│ │ ├── SiteSettingsPanel.razor
│ │ ├── SubscriptionContextMenu.razor
│ │ ├── SubscriptionDetailDialog.razor
│ │ └── SubscriptionGrid.razor
│ ├── Layout
│ │ ├── MainLayout.razor
│ │ └── NavMenu.razor
│ ├── Model
│ │ └── CodeflowSubscription.cs
│ ├── Pages
│ │ ├── Build.razor
│ │ ├── Channel.razor
│ │ ├── Codeflows.razor
│ │ ├── Home.razor
│ │ ├── PullRequests.razor
│ │ └── Subscriptions.razor
│ ├── ProductConstructionService.BarViz.csproj
│ ├── Program.cs
│ ├── Properties
│ │ └── launchSettings.json
│ ├── _Imports.razor
│ ├── watch.ps1
│ └── wwwroot
│ │ ├── css
│ │ ├── app.css
│ │ ├── bootstrap-reboot.min.css
│ │ └── bootstrap.min.css
│ │ ├── favicon.ico
│ │ └── index.html
│ ├── ProductConstructionService.Common
│ ├── AddJobLoggingExtension.cs
│ ├── CompactConsoleLoggerFormatter.cs
│ ├── ConfigurationExtension.cs
│ ├── IRedisCacheFactory.cs
│ ├── MetricRecorder.cs
│ ├── ProductConstructionService.Common.csproj
│ ├── ProductConstructionServiceExtension.cs
│ ├── RedisCache.cs
│ └── Utility.cs
│ ├── ProductConstructionService.DependencyFlow
│ ├── BatchedPullRequestUpdater.cs
│ ├── DependencyFlowConfiguration.cs
│ ├── IPullRequestUpdater.cs
│ ├── ISubscriptionTriggerer.cs
│ ├── InProgressPullRequest.cs
│ ├── MergePolicyEvaluator.cs
│ ├── Model
│ │ ├── Asset.cs
│ │ ├── DependencyFlowEvent.cs
│ │ ├── MergePolicyCheckResult.cs
│ │ └── SubscriptionUpdateAction.cs
│ ├── NonBatchedPullRequestUpdater.cs
│ ├── PcsVmrBackFlower.cs
│ ├── PcsVmrForwardFlower.cs
│ ├── ProductConstructionService.DependencyFlow.csproj
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── PullRequestBuilder.cs
│ ├── PullRequestConflictNotifier.cs
│ ├── PullRequestPolicyFailureNotifier.cs
│ ├── PullRequestStatus.cs
│ ├── PullRequestUpdater.cs
│ ├── PullRequestUpdaterFactory.cs
│ ├── PullRequestUpdaterId.cs
│ ├── SubscriptionException.cs
│ ├── SubscriptionPullRequestUpdate.cs
│ ├── SubscriptionTriggerer.cs
│ ├── SubscriptionType.cs
│ ├── WorkItemProcessors
│ │ ├── BuildCoherencyInfoProcessor.cs
│ │ ├── DependencyFlowUpdateProcessor.cs
│ │ ├── PullRequestCheckProcessor.cs
│ │ ├── SubscriptionTriggerProcessor.cs
│ │ └── SubscriptionUpdateProcessor.cs
│ └── WorkItems
│ │ ├── BuildCoherencyInfoWorkItem.cs
│ │ ├── DependencyFlowWorkItem.cs
│ │ ├── PullRequestCheck.cs
│ │ ├── SubscriptionTriggerWorkItem.cs
│ │ └── SubscriptionUpdateWorkItem.cs
│ ├── ProductConstructionService.FeedCleaner
│ ├── FeedCleaner.cs
│ ├── FeedCleanerConfiguration.cs
│ ├── FeedCleanerJob.cs
│ ├── FeedCleanerOptions.cs
│ ├── ProductConstructionService.FeedCleaner.csproj
│ ├── Program.cs
│ ├── appsettings.Development.json
│ ├── appsettings.Production.json
│ ├── appsettings.Staging.json
│ └── appsettings.json
│ ├── ProductConstructionService.ServiceDefaults
│ ├── Extensions.cs
│ └── ProductConstructionService.ServiceDefaults.csproj
│ ├── ProductConstructionService.SubscriptionTriggerer
│ ├── ProductConstructionService.SubscriptionTriggerer.csproj
│ ├── Program.cs
│ ├── SubscriptionTriggerer.cs
│ ├── SubscriptionTriggererConfiguration.cs
│ ├── appsettings.Development.json
│ ├── appsettings.Production.json
│ ├── appsettings.Staging.json
│ └── appsettings.json
│ └── ProductConstructionService.WorkItems
│ ├── LocalReplicaWorkItemProcessorStateCacheFactory.cs
│ ├── ProductConstructionService.WorkItems.csproj
│ ├── Properties
│ └── AssemblyInfo.cs
│ ├── ReminderManager.cs
│ ├── ReminderManagerFactory.cs
│ ├── ReplicaWorkItemProcessorStateCache.cs
│ ├── WorkItem.cs
│ ├── WorkItemConfiguration.cs
│ ├── WorkItemConsumer.cs
│ ├── WorkItemConsumerOptions.cs
│ ├── WorkItemProcessor.cs
│ ├── WorkItemProcessorRegistrations.cs
│ ├── WorkItemProcessorState.cs
│ ├── WorkItemProcessorStateCache.cs
│ ├── WorkItemProducer.cs
│ ├── WorkItemProducerFactory.cs
│ ├── WorkItemScope.cs
│ └── WorkItemScopeManager.cs
├── test
├── Directory.Build.props
├── Maestro.Data.Tests
│ ├── DependencyRegistrationTests.cs
│ └── Maestro.Data.Tests.csproj
├── Microsoft.DotNet.Darc.Tests
│ ├── AzureDevOpsClientTests.cs
│ ├── DependencyAddUpdateTests.cs
│ ├── DependencyCoherencyTests.cs
│ ├── DependencyFileManagerTests.cs
│ ├── DependencyFlowGraphTests.cs
│ ├── DependencyFlowTestDriver.cs
│ ├── DependencyGraphTests.cs
│ ├── DependencyRegistrationTests.cs
│ ├── DependencyTestDriver.cs
│ ├── Helpers
│ │ ├── ConsoleOutputIntercepter.cs
│ │ └── UxManagerHelpers.cs
│ ├── Microsoft.DotNet.Darc.Tests.csproj
│ ├── Operations
│ │ ├── GetBuildOperationTests.cs
│ │ ├── GetSubscriptionsOperationTests.GetSubscriptionsOperationTests_ExecuteAsync_returns_json.verified.txt
│ │ ├── GetSubscriptionsOperationTests.GetSubscriptionsOperationTests_ExecuteAsync_returns_sorted_text.verified.txt
│ │ ├── GetSubscriptionsOperationTests.GetSubscriptionsOperationTests_ExecuteAsync_returns_text.verified.txt
│ │ ├── GetSubscriptionsOperationTests.cs
│ │ └── OperationsTests.cs
│ ├── TestHelpers.cs
│ └── inputs
│ │ ├── AddArcadeDependency1
│ │ ├── input
│ │ │ ├── eng
│ │ │ │ ├── Version.Details.xml
│ │ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ └── output
│ │ │ ├── eng
│ │ │ ├── Version.Details.xml
│ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ ├── AddArcadeDependency2
│ │ ├── input
│ │ │ ├── eng
│ │ │ │ ├── Version.Details.xml
│ │ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ └── output
│ │ │ ├── eng
│ │ │ ├── Version.Details.xml
│ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ ├── AddProductDependency1
│ │ ├── input
│ │ │ ├── eng
│ │ │ │ ├── Version.Details.xml
│ │ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ └── output
│ │ │ ├── eng
│ │ │ ├── Version.Details.xml
│ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ ├── AddProductDependency2
│ │ ├── input
│ │ │ ├── eng
│ │ │ │ ├── Version.Details.xml
│ │ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ └── output
│ │ │ ├── eng
│ │ │ ├── Version.Details.xml
│ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ ├── AddProductDependency4
│ │ ├── input
│ │ │ ├── eng
│ │ │ │ ├── Version.Details.xml
│ │ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ └── output
│ │ │ ├── eng
│ │ │ ├── Version.Details.xml
│ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ ├── AddProductDependency5
│ │ ├── input
│ │ │ ├── eng
│ │ │ │ ├── Version.Details.xml
│ │ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ └── output
│ │ │ ├── eng
│ │ │ ├── Version.Details.xml
│ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ ├── AddProductDependency6
│ │ ├── input
│ │ │ ├── eng
│ │ │ │ ├── Version.Details.xml
│ │ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ └── output
│ │ │ ├── eng
│ │ │ ├── Version.Details.xml
│ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ ├── DependencyFlowGraph
│ │ └── IncludeBuildTimes
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── DependencyGraph
│ │ └── input
│ │ │ ├── AspNetCore-Tooling
│ │ │ ├── 5e05f5ff63eb6ade6621c915a36573a763ea2791
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── 88edd69c1979129bc25a883f419da7a0cb936bab
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ └── bd7fc9ddf67dec0d582168bcd3d1d4681747f81a
│ │ │ │ ├── eng
│ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── AspNetCore
│ │ │ ├── 1aa50faa290ecda304507981cd01ed92651d5e34
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ └── 9de74918a2441fe320d44e7a3b8e58dc37434a02
│ │ │ │ ├── eng
│ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── DotNet-Trusted
│ │ │ ├── 24b4ae9332545f7677a8ce2f8916cc2284e31b75
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ └── 619a17dad9a44c9dd349fd192141019279a6a020
│ │ │ │ ├── eng
│ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── EntityFrameworkCore
│ │ │ ├── 3d1e08eb08789a9dde3ac20851d3c82fdf9272e5
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── 4c985938cf66e449802ce4600917a181a80e7159
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ └── c4d81f30919599abf1254fcd55f81320a91ae702
│ │ │ │ ├── eng
│ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── Extensions
│ │ │ ├── 0de62ae930da31048ba7e54c8cd0c6c0bcbd9095
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── 36471a9622b74a43185915550907aa28605be099
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── 9d9fbcd3fa2278d73900c0a00fb73bf0aee29b06
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ └── a7d89b7301abfc949a5d87c00f67feb65abbddea
│ │ │ │ ├── eng
│ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── arcade
│ │ │ ├── 044fa99d22e576fcfaf63f09ee9bba821855dddb
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── 0fb5fc58347f42121ddc9c0b361e84b8acbffb12
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── 289a8e607ef2a7358c351ddf3d08056186d4e554
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── 35ce15432d5ae2faa563ad0ba99aff49f8e28130
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── 4de204b5decdcee471d186e2290a09e35c5c3996
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── 52d4b539dd1ab771015bdf33ed4221afcaaabf3d
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── 8694eb83a2c13057a8da3c80f829363de4dc8c9c
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── 96c87ddd97d9c562ef77f1e4606a0dbb000ab644
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── af8ab7d7ca13d5f129c31cfa7aeda19f6d168e6e
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── bed438c56afcd799b4de747291cf68815ae2f53b
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── e7e2a81eefde4d3973a579458079e6da27ed0018
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ └── f3336ecb1009ee5c6f68142c0d05a68bc5609a60
│ │ │ │ ├── eng
│ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── cli
│ │ │ ├── 4d8c4255cbf3e6219ea8361c9b7691e6ab37aedf
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ └── 511071e1e199c8ccd8fad072cc31327db0737577
│ │ │ │ ├── eng
│ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── cliCommandLineParser
│ │ │ └── d8f545b1995fb62fd5c64f794491afbfcf6a84ca
│ │ │ │ ├── eng
│ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── core-sdk
│ │ │ ├── 36e48aa03cb568c128f387a090ad5ece86933c1c
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ └── c57bde45936fc120c0124bf964f570c45bfd8f8b
│ │ │ │ ├── eng
│ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── core-setup
│ │ │ ├── 108365c2f4ba1d6b2bc2dc44dba575b22ab59865
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── 464f69912c1e644e1b6e3aa0184f5c7c1a690cec
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── 5bdcd4b15d203109d341a6c42bfdf7c730633bdb
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── 63a01b08e5d1d1a6b8544f598b3d3bda76e6e424
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── 66bef64d51b21f583b431428a41982aee1b6305c
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── 9b55524cc97e033052fa95fb5ca7a68d4bb011ae
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── b54833551f0102ea4456439438e4ca84028bfc3e
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ └── dacf8569e562f9c89aba859ceed11f729ad62e42
│ │ │ │ ├── eng
│ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── coreclr
│ │ │ ├── 35c8c4e01066e50756c04893e535777b50e6f0e0
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── 401e931714e9b0890aaaa047710d0eb582bb8722
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── 635a609eba8db8082a4e1245ce1291f9bbe9835c
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── 80720a220c340e99aa88d04ebae8118eb4fc198b
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── b2c6dd4eb427caf7cb852998076b0b1543447a28
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ └── b9e88989458e24fa9764e045917b141e3338eae7
│ │ │ │ ├── eng
│ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── corefx
│ │ │ ├── 351ca391579740ae8af8a5405cffa16d152ad6b2
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── bc0cfc49d1a8c1681fb09603f3389ef65342d542
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ └── d8c200414ccf65e0be94358937e9c711c0fd532d
│ │ │ │ ├── eng
│ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── msbuild
│ │ │ ├── 966cdf2ac602e359530ad63f608e6cbba9c9fd0f
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ └── b2db71bebaae4f54f7236ca303e2b0a14aca1a0d
│ │ │ │ ├── eng
│ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── roslyn
│ │ │ └── 359844cc9c32a5b4c1ba72a6e73a32989bd5daeb
│ │ │ │ ├── eng
│ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── sdk
│ │ │ ├── 010b0fb362878d3eb8dfff7f521fc0db6b7e3a50
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── 674b4ae3250f294d3c922a425b44a1731dcff207
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ └── 6c3324d3624a10c9d1dfcfba188c974063e86984
│ │ │ │ ├── eng
│ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── templating
│ │ │ └── ac8f12b90238542dfd2ea596178ae24ea20a0f55
│ │ │ │ ├── eng
│ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── toolset
│ │ │ ├── 7d58b0e59dc51ef1dbd4c27f1cf0199a000936d7
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ └── b1d20340cbb0da27bb9e17bc64a83b9f44921f5b
│ │ │ │ ├── eng
│ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── websdk
│ │ │ └── c92b1354da7d7290ec63984cf445a4d2cc9667e8
│ │ │ │ ├── eng
│ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ ├── winforms
│ │ │ ├── 383a83c08f15540289d78cfd684b1a0b58ad1a85
│ │ │ │ ├── eng
│ │ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ └── 63c7e76b747e67819a00b153b2d9dea6d9045d7b
│ │ │ │ ├── eng
│ │ │ │ └── Version.Details.xml
│ │ │ │ ├── graph-with-toolset.xml
│ │ │ │ └── graph-without-toolset.xml
│ │ │ └── wpf
│ │ │ └── dbd3bd96849f6bca8c0ca0275de36895bd77a835
│ │ │ ├── eng
│ │ │ └── Version.Details.xml
│ │ │ ├── graph-with-toolset.xml
│ │ │ └── graph-without-toolset.xml
│ │ ├── EmptyVersions1
│ │ ├── input
│ │ │ ├── NuGet.config
│ │ │ ├── eng
│ │ │ │ ├── Version.Details.xml
│ │ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ └── output
│ │ │ ├── eng
│ │ │ ├── Version.Details.xml
│ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ ├── EmptyVersions2
│ │ ├── input
│ │ │ ├── NuGet.Config
│ │ │ ├── eng
│ │ │ │ ├── Version.Details.xml
│ │ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ └── output
│ │ │ ├── eng
│ │ │ ├── Version.Details.xml
│ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ ├── NugetConfigFiles
│ │ ├── AddFeedsToNuGetConfigWithoutManagedFeeds
│ │ │ ├── NuGet.input.config
│ │ │ └── NuGet.output.config
│ │ ├── EnsureAppendsDisableEntryAfterLastClear
│ │ │ ├── NuGet.input.config
│ │ │ └── NuGet.output.config
│ │ ├── EnsureMultipleDisabledSourcesGetComments
│ │ │ ├── NuGet.input.config
│ │ │ └── NuGet.output.config
│ │ ├── ExistingFeedsHaveCommentsOutOfAlphabeticOrder
│ │ │ ├── NuGet.input.config
│ │ │ └── NuGet.output.config
│ │ ├── MalformedMaestroManagedFeedComentsJustBegin
│ │ │ ├── NuGet.input.config
│ │ │ └── NuGet.output.config
│ │ ├── MalformedMaestroManagedFeedComentsJustEnd
│ │ │ ├── NuGet.input.config
│ │ │ └── NuGet.output.config
│ │ ├── MatchMoreFeedPatterns
│ │ │ ├── NuGet.input.config
│ │ │ └── NuGet.output.config
│ │ ├── NoManagedFeedsToAdd
│ │ │ ├── NuGet.input.config
│ │ │ └── NuGet.output.config
│ │ ├── NonManagedDisabledFeedSources
│ │ │ ├── NuGet.input.config
│ │ │ └── NuGet.output.config
│ │ ├── PreserveCommentsInRightLocationsWhenReplacing
│ │ │ ├── NuGet.input.config
│ │ │ └── NuGet.output.config
│ │ ├── PreserveCommentsInRightLocationsWithNoExistingBlock
│ │ │ ├── NuGet.input.config
│ │ │ └── NuGet.output.config
│ │ ├── PreserveManagedFeedFromOutside
│ │ │ ├── NuGet.input.config
│ │ │ └── NuGet.output.config
│ │ ├── RedisableCurrentlyEnabledIntSources
│ │ │ ├── NuGet.input.config
│ │ │ └── NuGet.output.config
│ │ ├── RemoveAllManagedFeeds
│ │ │ ├── NuGet.input.config
│ │ │ └── NuGet.output.config
│ │ ├── RemovingAllSourcesKeepsTheComments
│ │ │ ├── NuGet.input.config
│ │ │ └── NuGet.output.config
│ │ ├── ReplaceExistingFeedsWithNewOnes
│ │ │ ├── NuGet.input.config
│ │ │ └── NuGet.output.config
│ │ └── WhiteSpaceCorrectlyFormatted
│ │ │ ├── NuGet.input.config
│ │ │ └── NuGet.output.config
│ │ ├── SupportAlternateVersionPropertyFormats1
│ │ ├── input
│ │ │ ├── NuGet.config
│ │ │ ├── eng
│ │ │ │ ├── Version.Details.xml
│ │ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ └── output
│ │ │ ├── eng
│ │ │ ├── Version.Details.xml
│ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ ├── SupportAlternateVersionPropertyFormats2
│ │ ├── input
│ │ │ ├── NuGet.config
│ │ │ ├── eng
│ │ │ │ ├── Version.Details.xml
│ │ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ └── output
│ │ │ ├── eng
│ │ │ ├── Version.Details.xml
│ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ ├── UpdateArcadeDependency1
│ │ ├── input
│ │ │ ├── NuGet.config
│ │ │ ├── eng
│ │ │ │ ├── Version.Details.xml
│ │ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ └── output
│ │ │ ├── eng
│ │ │ ├── Version.Details.xml
│ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ ├── UpdateArcadeDependency2
│ │ ├── input
│ │ │ ├── NuGet.config
│ │ │ ├── eng
│ │ │ │ ├── Version.Details.xml
│ │ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ └── output
│ │ │ ├── eng
│ │ │ ├── Version.Details.xml
│ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ ├── UpdateArcadeDependencyWithSdkUpdate
│ │ ├── input
│ │ │ ├── NuGet.config
│ │ │ ├── eng
│ │ │ │ ├── Version.Details.xml
│ │ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ └── output
│ │ │ ├── eng
│ │ │ ├── Version.Details.xml
│ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ ├── UpdateDependencies1
│ │ ├── input
│ │ │ ├── NuGet.config
│ │ │ ├── eng
│ │ │ │ ├── Version.Details.xml
│ │ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ └── output
│ │ │ ├── eng
│ │ │ ├── Version.Details.xml
│ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ ├── UpdateDependencies3
│ │ ├── input
│ │ │ ├── NuGet.config
│ │ │ ├── eng
│ │ │ │ ├── Version.Details.xml
│ │ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ └── output
│ │ │ ├── eng
│ │ │ ├── Version.Details.xml
│ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ ├── UpdateDependencies4
│ │ ├── input
│ │ │ ├── NuGet.config
│ │ │ ├── eng
│ │ │ │ ├── Version.Details.xml
│ │ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ └── output
│ │ │ ├── eng
│ │ │ ├── Version.Details.xml
│ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ ├── UpdateDependencies5
│ │ ├── input
│ │ │ ├── NuGet.config
│ │ │ ├── eng
│ │ │ │ ├── Version.Details.xml
│ │ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ └── output
│ │ │ ├── eng
│ │ │ ├── Version.Details.xml
│ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ ├── UpdateToolsJsonFile1
│ │ ├── input
│ │ │ ├── .config
│ │ │ │ └── dotnet-tools.json
│ │ │ ├── NuGet.config
│ │ │ ├── eng
│ │ │ │ ├── Version.Details.xml
│ │ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ └── output
│ │ │ ├── .config
│ │ │ └── dotnet-tools.json
│ │ │ ├── eng
│ │ │ ├── Version.Details.xml
│ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ ├── UpdateToolsJsonNotPresent
│ │ ├── input
│ │ │ ├── .config
│ │ │ │ └── pizza-bananas.json
│ │ │ ├── NuGet.config
│ │ │ ├── eng
│ │ │ │ ├── Version.Details.xml
│ │ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ └── output
│ │ │ ├── .config
│ │ │ └── pizza-bananas.json
│ │ │ ├── eng
│ │ │ ├── Version.Details.xml
│ │ │ └── Versions.props
│ │ │ └── global.json.test
│ │ ├── VersionPropsFiles
│ │ ├── AlternateNamesDuplicated.props
│ │ ├── DuplicatedSameConditions.props
│ │ ├── NoDuplicatedDifferentConditions.props
│ │ ├── NothingDuplicated.props
│ │ └── SimpleDuplicated.props
│ │ └── source-mappings.json
├── Microsoft.DotNet.Darc.VirtualMonoRepo.E2E.Tests
│ ├── Constants.cs
│ ├── GitOperationsHelper.cs
│ ├── LoadSourceMappingsFromInstallerTest.cs
│ ├── Microsoft.DotNet.Darc.VirtualMonoRepo.E2E.Tests.csproj
│ ├── RemoteFactory.cs
│ ├── Resources
│ │ ├── add-file.patch
│ │ ├── add-submodule-file.patch
│ │ ├── changed-patch.patch
│ │ ├── changed-test-repo-file.txt
│ │ ├── example.patch
│ │ ├── new-patch.patch
│ │ ├── product-repo1-file.txt
│ │ ├── remove-file.patch
│ │ ├── test-file-after-changed-patch.txt
│ │ ├── test-file-after-new-patch.txt
│ │ └── test-file-after-patch.txt
│ ├── VmrBackflowTest.cs
│ ├── VmrCloakedFileScannerTest.cs
│ ├── VmrCodeFlowTests.cs
│ ├── VmrForwardFlowTest.cs
│ ├── VmrMultipleRemotesTests.cs
│ ├── VmrPatchAddingFileTest.cs
│ ├── VmrPatchAddingSubmoduleFileTest.cs
│ ├── VmrPatchChangingFileTest.cs
│ ├── VmrPatchRemovingFileTest.cs
│ ├── VmrPatchesTestsBase.cs
│ ├── VmrRecursiveSyncTests.cs
│ ├── VmrRepoDeletionTest.cs
│ ├── VmrRepositoryCloningTest.cs
│ ├── VmrSyncAdditionalMappingsTest.cs
│ ├── VmrSyncRepoChangesTest.cs
│ ├── VmrTestsBase.cs
│ ├── VmrTestsOneTimeSetUp.cs
│ └── VmrTwoWayCodeflowTest.cs
├── Microsoft.DotNet.DarcLib.Tests
│ ├── GitHubClientTests.cs
│ ├── Helpers
│ │ ├── DarcManifestHelperTests.cs
│ │ ├── DependencyFileManagerTests.cs
│ │ ├── GitRepoUrlParserTest.cs
│ │ ├── LocalPathTests.cs
│ │ ├── VersionDetailsParserTests.cs
│ │ └── VersionFilesTests.cs
│ ├── Microsoft.DotNet.DarcLib.Tests.csproj
│ ├── Models
│ │ ├── Darc
│ │ │ └── DependencyFlowNodeTests.cs
│ │ └── VirtualMonoRepo
│ │ │ ├── GitInfoFileTests.cs
│ │ │ ├── ManifestRecordTests.cs
│ │ │ └── MsBuildPropsFileTests.cs
│ ├── RemoteTests.cs
│ └── VirtualMonoRepo
│ │ ├── RepositoryCloneManagerTests.cs
│ │ ├── VersionFileCodeFlowUpdaterTests.cs
│ │ ├── VmrPatchHandlerTests.cs
│ │ ├── VmrPusherTests.cs
│ │ └── VmrRegistrationsTests.cs
├── Microsoft.DotNet.Maestro.Tasks.Tests
│ ├── AddAssetTests.cs
│ ├── CreateMergedManifestBuildModelTests.cs
│ ├── GetManifestAsAssetTests.cs
│ ├── MergeSigningInfoTests.cs
│ ├── MergedManifestTests.cs
│ ├── Microsoft.DotNet.Maestro.Tasks.Tests.csproj
│ ├── Mocks
│ │ ├── MockBuildEngine.cs
│ │ └── VersionIdentifierMock.cs
│ ├── ParseBuildManifestMetadataTests.cs
│ ├── SharedMethods.cs
│ └── XmlSerializationHelperTests.cs
├── ProductConstructionService.Api.Tests
│ ├── ApiTestConfiguration.cs
│ ├── BuildController20190116Tests.cs
│ ├── BuildController20200914Tests.cs
│ ├── ChannelsController20180716Tests.cs
│ ├── ChannelsController20200220Tests.cs
│ ├── DefaultChannelsController20200220Tests.cs
│ ├── DependencyRegistrationTests.cs
│ ├── GlobalUsings.cs
│ ├── LoggingConfigurationTests.cs
│ ├── ProductConstructionService.Api.Tests.csproj
│ ├── RepositoryUrlAttributeTests.cs
│ ├── SubscriptionsController20200220Tests.cs
│ └── TestDatabase.cs
├── ProductConstructionService.BarViz.Tests
│ ├── ProductConstructionService.BarViz.Tests.csproj
│ ├── RedirectsTests.cs
│ └── RepoUrlConverterTests.cs
├── ProductConstructionService.DependencyFlow.Tests
│ ├── Disposable.cs
│ ├── MockRedisCache.cs
│ ├── MockRedisCacheFactory.cs
│ ├── MockReminderManager.cs
│ ├── MockReminderManagerFactory.cs
│ ├── PendingCodeFlowUpdatesTests.cs
│ ├── PendingUpdatePullRequestUpdaterTests.cs
│ ├── PendingUpdatesTests.cs
│ ├── ProductConstructionService.DependencyFlow.Tests.csproj
│ ├── PullRequestBuilderTests.cs
│ ├── PullRequestPolicyFailureNotifierTests.cs
│ ├── PullRequestUpdaterTests.cs
│ ├── SubscriptionOrPullRequestUpdaterTests.cs
│ ├── SubscriptionUpdaterTests.cs
│ ├── TestsWithMocks.cs
│ ├── TestsWithServices.cs
│ ├── UpdateAssetsForCodeFlowTests.cs
│ ├── UpdateAssetsPullRequestUpdaterTests.cs
│ ├── UpdateAssetsTests.cs
│ ├── UpdaterTests.cs
│ └── VerifyableMockRepository.cs
├── ProductConstructionService.FeedCleaner.Tests
│ ├── DependencyRegistrationTest.cs
│ ├── FeedCleanerTests.cs
│ └── ProductConstructionService.FeedCleaner.Tests.csproj
├── ProductConstructionService.ScenarioTests.Tests
│ ├── ProductConstructionService.ScenarioTests.Tests.csproj
│ └── TestHelpersTest.cs
├── ProductConstructionService.ScenarioTests
│ ├── AsyncDisposable.cs
│ ├── AsyncDisposableValue.cs
│ ├── CodeFlowScenarioTestBase.cs
│ ├── Disposable.cs
│ ├── EndToEndFlowLogic.cs
│ ├── ObjectHelpers
│ │ ├── BuildRefComparer.cs
│ │ ├── DependencyCollectionStringBuilder.cs
│ │ └── SubscriptionBuilder.cs
│ ├── ProductConstructionService.ScenarioTests.csproj
│ ├── ScenarioTestBase.cs
│ ├── ScenarioTests
│ │ ├── ScenarioTests_AzDoFlow.cs
│ │ ├── ScenarioTests_Builds.cs
│ │ ├── ScenarioTests_Channels.cs
│ │ ├── ScenarioTests_Clone.cs
│ │ ├── ScenarioTests_CodeFlow.cs
│ │ ├── ScenarioTests_CodeFlowConflicts.cs
│ │ ├── ScenarioTests_DefaultChannels.cs
│ │ ├── ScenarioTests_Dependencies.cs
│ │ ├── ScenarioTests_GitHubFlow.cs
│ │ ├── ScenarioTests_MergePolicies.cs
│ │ ├── ScenarioTests_RepoPolicies.cs
│ │ ├── ScenarioTests_SdkUpdate.cs
│ │ └── ScenarioTests_Subscriptions.cs
│ ├── Shareable.cs
│ ├── TemporaryDirectory.cs
│ ├── TestHelpers.cs
│ ├── TestParameters.cs
│ └── TestRepository.cs
├── ProductConstructionService.SubscriptionTriggerer.Tests
│ ├── DependencyRegistrationTests.cs
│ ├── GlobalUsings.cs
│ ├── ProductConstructionService.SubscriptionTriggerer.Tests.csproj
│ └── SubscriptionTriggererTests.cs
├── ProductConstructionService.WorkItem.Tests
│ ├── FakeRedisCache.cs
│ ├── GlobalUsings.cs
│ ├── ProductConstructionService.WorkItem.Tests.csproj
│ ├── WorkItemScopeTests.cs
│ └── WorkItemsProcessorScopeManagerTests.cs
└── VersionPropsFormatter.Tests
│ ├── VersionPropsFormatter.Tests.csproj
│ └── VersionPropsFormatterTest.cs
└── tools
├── ProductConstructionService.Cli
├── Operations
│ ├── DeploymentOperation.cs
│ ├── GetPCSStatusOperation.cs
│ ├── IOperation.cs
│ ├── StartPCSOperation.cs
│ └── StopPCSOperation.cs
├── Options
│ ├── DeploymentOptions.cs
│ ├── GetPCSStatusOptions.cs
│ ├── Options.cs
│ ├── PCSStatusOptions.cs
│ ├── StartPCSOptions.cs
│ └── StopPCSOptions.cs
├── ProductConstructionService.Cli.csproj
└── Program.cs
├── ProductConstructionService.ReproTool
├── AsyncDisposable.cs
├── AsyncDisposableValue.cs
├── DarcProcessManager.cs
├── Operations
│ ├── FlowCommitOperation.cs
│ ├── ForwardFlowTestOperation.cs
│ ├── FullBackflowTestOperation.cs
│ ├── Operation.cs
│ └── ReproOperation.cs
├── Options
│ ├── FlowCommitOptions.cs
│ ├── ForwardFlowTestOptions.cs
│ ├── FullBackflowTestOptions.cs
│ ├── Options.cs
│ └── ReproOptions.cs
├── ProductConstructionService.ReproTool.csproj
└── Program.cs
├── Tools.Common
├── Constants.cs
├── Tools.Common.csproj
└── VmrDependencyResolver.cs
└── VersionPropsFormatter
├── Program.cs
├── VersionPropsFormatter.cs
└── VersionPropsFormatter.csproj
/.config/dotnet-tools.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": 1,
3 | "isRoot": true,
4 | "tools": {
5 | "microsoft.dnceng.secretmanager": {
6 | "version": "1.1.0-beta.25230.4",
7 | "commands": [
8 | "secret-manager"
9 | ]
10 | },
11 | "dotnet-ef": {
12 | "version": "8.0.0",
13 | "commands": [
14 | "dotnet-ef"
15 | ]
16 | },
17 | "microsoft.dnceng.configuration.bootstrap": {
18 | "version": "1.1.0-beta.25230.4",
19 | "commands": [
20 | "bootstrap-dnceng-configuration"
21 | ]
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/.config/tsaoptions.json:
--------------------------------------------------------------------------------
1 | {
2 | "instanceUrl": "https://devdiv.visualstudio.com/",
3 | "template": "TFSDEVDIV",
4 | "projectName": "DEVDIV",
5 | "areaPath": "DevDiv\\NET Fundamentals\\Infrastructure\\Arcade\\SDL",
6 | "iterationPath": "DevDiv",
7 | "notificationAliases": [ "dnceng@microsoft.com" ],
8 | "repositoryName":"Arcade-Services",
9 | "codebaseName": "Arcade-Services"
10 | }
--------------------------------------------------------------------------------
/.dockerignore:
--------------------------------------------------------------------------------
1 | **/.classpath
2 | **/.dockerignore
3 | **/.env
4 | **/.git
5 | **/.gitignore
6 | **/.project
7 | **/.settings
8 | **/.toolstarget
9 | **/.vs
10 | **/.vscode
11 | **/*.*proj.user
12 | **/*.dbmdl
13 | **/*.jfm
14 | **/azds.yaml
15 | **/bin
16 | **/charts
17 | **/docker-compose*
18 | **/Dockerfile*
19 | **/node_modules
20 | **/npm-debug.log
21 | **/obj
22 | **/secrets.dev.yaml
23 | **/values.dev.yaml
24 | LICENSE
25 | README.md
26 | !**/.gitignore
27 | !.git/HEAD
28 | !.git/config
29 | !.git/packed-refs
30 | !.git/refs/heads/**
31 | !**/*.csproj
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 | *.sh text=auto eol=lf
3 |
--------------------------------------------------------------------------------
/.github/copilot-setup-steps.yml:
--------------------------------------------------------------------------------
1 | name: Copilot Setup Steps
2 |
3 | # These steps will be executed before GitHub Copilot assists with code
4 | # This helps ensure Copilot has access to properly restored dependencies
5 |
6 | steps:
7 | - name: Checkout repository
8 | uses: actions/checkout@v3
9 | with:
10 | fetch-depth: 0
11 |
12 | - name: Restore dependencies
13 | run: |
14 | ./eng/common/build.sh -restore
15 | shell: bash
16 |
--------------------------------------------------------------------------------
/.github/pull_request_template.md:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/.github/workflows/inter-branch-merge-flow.yml:
--------------------------------------------------------------------------------
1 | name: Inter-branch merge workflow
2 | on:
3 | push:
4 | branches:
5 | - production
6 |
7 | permissions:
8 | contents: write
9 | pull-requests: write
10 |
11 | jobs:
12 | Merge:
13 | uses: dotnet/arcade/.github/workflows/inter-branch-merge-base.yml@main
--------------------------------------------------------------------------------
/.packages/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.packages/Directory.Build.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.packages/Directory.Packages.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.vault-config/helixkv.yaml:
--------------------------------------------------------------------------------
1 | storageLocation:
2 | type: azure-key-vault
3 | parameters:
4 | subscription: a4fc5514-21a9-4296-bfaf-5c7ee7fa35d1
5 | name: helixkv
6 |
7 | secrets:
8 | dn-bot-account-redmond:
9 | type: domain-account
10 | parameters:
11 | accountName: dn-bot
12 | description: The dn-bot account
13 |
--------------------------------------------------------------------------------
/.vault-config/product-construction-dev.yaml:
--------------------------------------------------------------------------------
1 | storageLocation:
2 | type: azure-key-vault
3 | parameters:
4 | subscription: e6b5f9f5-0ca4-4351-879b-014d78400ec2
5 | name: ProductConstructionDev
6 |
7 | secrets:
8 |
9 | github:
10 | type: github-app-secret
11 | parameters:
12 | hasPrivateKey: true
13 | hasWebhookSecret: false
14 | hasOAuthSecret: true
--------------------------------------------------------------------------------
/.vault-config/product-construction-int.yaml:
--------------------------------------------------------------------------------
1 | storageLocation:
2 | type: azure-key-vault
3 | parameters:
4 | subscription: e6b5f9f5-0ca4-4351-879b-014d78400ec2
5 | name: ProductConstructionInt
6 |
7 | secrets:
8 | github:
9 | type: github-app-secret
10 | parameters:
11 | hasPrivateKey: true
12 | hasWebhookSecret: false
13 | hasOAuthSecret: true
14 |
--------------------------------------------------------------------------------
/Build.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0eng\common\Build.ps1""" -restore -build %*"
3 | exit /b %ErrorLevel%
4 |
--------------------------------------------------------------------------------
/CODE-OF-CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Code of Conduct
2 |
3 | This project has adopted the code of conduct defined by the Contributor Covenant
4 | to clarify expected behavior in our community.
5 |
6 | For more information, see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/code-of-conduct).
7 |
--------------------------------------------------------------------------------
/CredScanSuppressions.json:
--------------------------------------------------------------------------------
1 | {
2 | "tool": "Credential Scanner",
3 | "suppressions": [
4 | {
5 | "placeholder": " hasWebHookSecret: boolean",
6 | "_justification": "The word secret is not a secret"
7 | },
8 | {
9 | "hash": "0wmzz0zI9MmVLebdqWxSIJ9uxLJ13oIQKoWkEWrmViw=",
10 | "_justification": "SecretReference is the name of a Type. It is not a secret."
11 | }
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/Directory.Build.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/THIRD-PARTY-NOTICES.TXT:
--------------------------------------------------------------------------------
1 | .NET uses third-party libraries or other resources that may be
2 | distributed under licenses different than the .NET software.
3 |
4 | In the event that we accidentally failed to list a required notice, please
5 | bring it to our attention. Post an issue or email us:
6 |
7 | dotnet@microsoft.com
8 |
9 | The attached notices are provided for information only.
10 |
11 | No notices are provided at this time.
12 |
--------------------------------------------------------------------------------
/artifacts/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/artifacts/Directory.Build.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/artifacts/Directory.Packages.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | source="${BASH_SOURCE[0]}"
4 |
5 | # resolve $SOURCE until the file is no longer a symlink
6 | while [[ -h $source ]]; do
7 | scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
8 | source="$(readlink "$source")"
9 |
10 | # if $source was a relative symlink, we need to resolve it relative to the path where the
11 | # symlink file was located
12 | [[ $source != /* ]] && source="$scriptroot/$source"
13 | done
14 |
15 | scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
16 | "$scriptroot/eng/common/build.sh" --build --restore $@
17 |
--------------------------------------------------------------------------------
/docs/Images/build-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/arcade-services/f6e232e800f932967f91173548fc11244f05a9a1/docs/Images/build-view.png
--------------------------------------------------------------------------------
/docs/Images/channels-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/arcade-services/f6e232e800f932967f91173548fc11244f05a9a1/docs/Images/channels-view.png
--------------------------------------------------------------------------------
/eng/PoliCheckExclusions.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | SWAGGER
5 |
--------------------------------------------------------------------------------
/eng/Publishing.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 3
5 |
6 |
--------------------------------------------------------------------------------
/eng/common/BuildConfiguration/build-configuration.json:
--------------------------------------------------------------------------------
1 | {
2 | "RetryCountLimit": 1,
3 | "RetryByAnyError": false
4 | }
5 |
--------------------------------------------------------------------------------
/eng/common/CIBuild.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0Build.ps1""" -restore -build -test -sign -pack -publish -ci %*"
--------------------------------------------------------------------------------
/eng/common/PSScriptAnalyzerSettings.psd1:
--------------------------------------------------------------------------------
1 | @{
2 | IncludeRules=@('PSAvoidUsingCmdletAliases',
3 | 'PSAvoidUsingWMICmdlet',
4 | 'PSAvoidUsingPositionalParameters',
5 | 'PSAvoidUsingInvokeExpression',
6 | 'PSUseDeclaredVarsMoreThanAssignments',
7 | 'PSUseCmdletCorrectly',
8 | 'PSStandardDSCFunctionsInResource',
9 | 'PSUseIdenticalMandatoryParametersForDSC',
10 | 'PSUseIdenticalParametersForDSC')
11 | }
--------------------------------------------------------------------------------
/eng/common/cibuild.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | source="${BASH_SOURCE[0]}"
4 |
5 | # resolve $SOURCE until the file is no longer a symlink
6 | while [[ -h $source ]]; do
7 | scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
8 | source="$(readlink "$source")"
9 |
10 | # if $source was a relative symlink, we need to resolve it relative to the path where
11 | # the symlink file was located
12 | [[ $source != /* ]] && source="$scriptroot/$source"
13 | done
14 | scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
15 |
16 | . "$scriptroot/build.sh" --restore --build --test --pack --publish --ci $@
--------------------------------------------------------------------------------
/eng/common/cross/arm/sources.list.focal:
--------------------------------------------------------------------------------
1 | deb http://ports.ubuntu.com/ubuntu-ports/ focal main restricted universe
2 | deb-src http://ports.ubuntu.com/ubuntu-ports/ focal main restricted universe
3 |
4 | deb http://ports.ubuntu.com/ubuntu-ports/ focal-updates main restricted universe
5 | deb-src http://ports.ubuntu.com/ubuntu-ports/ focal-updates main restricted universe
6 |
7 | deb http://ports.ubuntu.com/ubuntu-ports/ focal-backports main restricted
8 | deb-src http://ports.ubuntu.com/ubuntu-ports/ focal-backports main restricted
9 |
10 | deb http://ports.ubuntu.com/ubuntu-ports/ focal-security main restricted universe multiverse
11 | deb-src http://ports.ubuntu.com/ubuntu-ports/ focal-security main restricted universe multiverse
12 |
--------------------------------------------------------------------------------
/eng/common/cross/arm/sources.list.jammy:
--------------------------------------------------------------------------------
1 | deb http://ports.ubuntu.com/ubuntu-ports/ jammy main restricted universe
2 | deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy main restricted universe
3 |
4 | deb http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main restricted universe
5 | deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main restricted universe
6 |
7 | deb http://ports.ubuntu.com/ubuntu-ports/ jammy-backports main restricted
8 | deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy-backports main restricted
9 |
10 | deb http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse
11 | deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse
12 |
--------------------------------------------------------------------------------
/eng/common/cross/arm/sources.list.jessie:
--------------------------------------------------------------------------------
1 | # Debian (sid) # UNSTABLE
2 | deb http://ftp.debian.org/debian/ sid main contrib non-free
3 | deb-src http://ftp.debian.org/debian/ sid main contrib non-free
4 |
--------------------------------------------------------------------------------
/eng/common/cross/arm/sources.list.zesty:
--------------------------------------------------------------------------------
1 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe
2 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe
3 |
4 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe
5 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe
6 |
7 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted
8 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted
9 |
10 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse
11 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse
12 |
--------------------------------------------------------------------------------
/eng/common/cross/arm/tizen/tizen.patch:
--------------------------------------------------------------------------------
1 | diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so
2 | --- a/usr/lib/libc.so 2016-12-30 23:00:08.284951863 +0900
3 | +++ b/usr/lib/libc.so 2016-12-30 23:00:32.140951815 +0900
4 | @@ -2,4 +2,4 @@
5 | Use the shared library, but some functions are only in
6 | the static library, so try that secondarily. */
7 | OUTPUT_FORMAT(elf32-littlearm)
8 | -GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a AS_NEEDED ( /lib/ld-linux-armhf.so.3 ) )
9 | +GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld-linux-armhf.so.3 ) )
10 |
--------------------------------------------------------------------------------
/eng/common/cross/arm64/sources.list.buster:
--------------------------------------------------------------------------------
1 | deb http://deb.debian.org/debian buster main
2 | deb-src http://deb.debian.org/debian buster main
3 |
4 | deb http://deb.debian.org/debian-security/ buster/updates main
5 | deb-src http://deb.debian.org/debian-security/ buster/updates main
6 |
7 | deb http://deb.debian.org/debian buster-updates main
8 | deb-src http://deb.debian.org/debian buster-updates main
9 |
10 | deb http://deb.debian.org/debian buster-backports main contrib non-free
11 | deb-src http://deb.debian.org/debian buster-backports main contrib non-free
12 |
--------------------------------------------------------------------------------
/eng/common/cross/arm64/sources.list.focal:
--------------------------------------------------------------------------------
1 | deb http://ports.ubuntu.com/ubuntu-ports/ focal main restricted universe
2 | deb-src http://ports.ubuntu.com/ubuntu-ports/ focal main restricted universe
3 |
4 | deb http://ports.ubuntu.com/ubuntu-ports/ focal-updates main restricted universe
5 | deb-src http://ports.ubuntu.com/ubuntu-ports/ focal-updates main restricted universe
6 |
7 | deb http://ports.ubuntu.com/ubuntu-ports/ focal-backports main restricted
8 | deb-src http://ports.ubuntu.com/ubuntu-ports/ focal-backports main restricted
9 |
10 | deb http://ports.ubuntu.com/ubuntu-ports/ focal-security main restricted universe multiverse
11 | deb-src http://ports.ubuntu.com/ubuntu-ports/ focal-security main restricted universe multiverse
12 |
--------------------------------------------------------------------------------
/eng/common/cross/arm64/sources.list.jammy:
--------------------------------------------------------------------------------
1 | deb http://ports.ubuntu.com/ubuntu-ports/ jammy main restricted universe
2 | deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy main restricted universe
3 |
4 | deb http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main restricted universe
5 | deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main restricted universe
6 |
7 | deb http://ports.ubuntu.com/ubuntu-ports/ jammy-backports main restricted
8 | deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy-backports main restricted
9 |
10 | deb http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse
11 | deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse
12 |
--------------------------------------------------------------------------------
/eng/common/cross/arm64/sources.list.stretch:
--------------------------------------------------------------------------------
1 | deb http://deb.debian.org/debian stretch main
2 | deb-src http://deb.debian.org/debian stretch main
3 |
4 | deb http://deb.debian.org/debian-security/ stretch/updates main
5 | deb-src http://deb.debian.org/debian-security/ stretch/updates main
6 |
7 | deb http://deb.debian.org/debian stretch-updates main
8 | deb-src http://deb.debian.org/debian stretch-updates main
9 |
10 | deb http://deb.debian.org/debian stretch-backports main contrib non-free
11 | deb-src http://deb.debian.org/debian stretch-backports main contrib non-free
12 |
13 |
--------------------------------------------------------------------------------
/eng/common/cross/arm64/sources.list.zesty:
--------------------------------------------------------------------------------
1 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe
2 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe
3 |
4 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe
5 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe
6 |
7 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted
8 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted
9 |
10 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse
11 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse
12 |
--------------------------------------------------------------------------------
/eng/common/cross/arm64/tizen/tizen.patch:
--------------------------------------------------------------------------------
1 | diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so
2 | --- a/usr/lib64/libc.so 2016-12-30 23:00:08.284951863 +0900
3 | +++ b/usr/lib64/libc.so 2016-12-30 23:00:32.140951815 +0900
4 | @@ -2,4 +2,4 @@
5 | Use the shared library, but some functions are only in
6 | the static library, so try that secondarily. */
7 | OUTPUT_FORMAT(elf64-littleaarch64)
8 | -GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a AS_NEEDED ( /lib/ld-linux-aarch64.so.1 ) )
9 | +GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld-linux-aarch64.so.1 ) )
10 |
--------------------------------------------------------------------------------
/eng/common/cross/armel/sources.list.jessie:
--------------------------------------------------------------------------------
1 | # Debian (jessie) # Stable
2 | deb http://ftp.debian.org/debian/ jessie main contrib non-free
3 | deb-src http://ftp.debian.org/debian/ jessie main contrib non-free
4 |
--------------------------------------------------------------------------------
/eng/common/cross/armel/tizen/tizen.patch:
--------------------------------------------------------------------------------
1 | diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so
2 | --- a/usr/lib/libc.so 2016-12-30 23:00:08.284951863 +0900
3 | +++ b/usr/lib/libc.so 2016-12-30 23:00:32.140951815 +0900
4 | @@ -2,4 +2,4 @@
5 | Use the shared library, but some functions are only in
6 | the static library, so try that secondarily. */
7 | OUTPUT_FORMAT(elf32-littlearm)
8 | -GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a AS_NEEDED ( /lib/ld-linux.so.3 ) )
9 | +GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld-linux.so.3 ) )
10 |
--------------------------------------------------------------------------------
/eng/common/cross/armv6/sources.list.buster:
--------------------------------------------------------------------------------
1 | deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
2 | deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
3 |
--------------------------------------------------------------------------------
/eng/common/cross/riscv64/sources.list.sid:
--------------------------------------------------------------------------------
1 | deb http://deb.debian.org/debian-ports sid main
2 |
--------------------------------------------------------------------------------
/eng/common/cross/x86/sources.list.bionic:
--------------------------------------------------------------------------------
1 | deb http://archive.ubuntu.com/ubuntu/ bionic main restricted universe
2 | deb-src http://archive.ubuntu.com/ubuntu/ bionic main restricted universe
3 |
4 | deb http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe
5 | deb-src http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe
6 |
7 | deb http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted
8 | deb-src http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted
9 |
10 | deb http://archive.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse
11 | deb-src http://archive.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse
12 |
--------------------------------------------------------------------------------
/eng/common/cross/x86/sources.list.xenial:
--------------------------------------------------------------------------------
1 | deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe
2 | deb-src http://archive.ubuntu.com/ubuntu/ xenial main restricted universe
3 |
4 | deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe
5 | deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe
6 |
7 | deb http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted
8 | deb-src http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted
9 |
10 | deb http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse
11 | deb-src http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse
12 |
--------------------------------------------------------------------------------
/eng/common/dotnet-install.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0dotnet-install.ps1""" %*"
--------------------------------------------------------------------------------
/eng/common/enable-cross-org-publishing.ps1:
--------------------------------------------------------------------------------
1 | param(
2 | [string] $token
3 | )
4 |
5 |
6 | . $PSScriptRoot\pipeline-logging-functions.ps1
7 |
8 | # Write-PipelineSetVariable will no-op if a variable named $ci is not defined
9 | # Since this script is only ever called in AzDO builds, just universally set it
10 | $ci = $true
11 |
12 | Write-PipelineSetVariable -Name 'VSS_NUGET_ACCESSTOKEN' -Value $token -IsMultiJobVariable $false
13 | Write-PipelineSetVariable -Name 'VSS_NUGET_URI_PREFIXES' -Value 'https://dnceng.pkgs.visualstudio.com/;https://pkgs.dev.azure.com/dnceng/;https://devdiv.pkgs.visualstudio.com/;https://pkgs.dev.azure.com/devdiv/' -IsMultiJobVariable $false
14 |
--------------------------------------------------------------------------------
/eng/common/init-tools-native.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | powershell -NoProfile -NoLogo -ExecutionPolicy ByPass -command "& """%~dp0init-tools-native.ps1""" %*"
3 | exit /b %ErrorLevel%
--------------------------------------------------------------------------------
/eng/common/internal/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/eng/common/internal/NuGet.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/eng/common/msbuild.ps1:
--------------------------------------------------------------------------------
1 | [CmdletBinding(PositionalBinding=$false)]
2 | Param(
3 | [string] $verbosity = 'minimal',
4 | [bool] $warnAsError = $true,
5 | [bool] $nodeReuse = $true,
6 | [switch] $ci,
7 | [switch] $prepareMachine,
8 | [switch] $excludePrereleaseVS,
9 | [string] $msbuildEngine = $null,
10 | [Parameter(ValueFromRemainingArguments=$true)][String[]]$extraArgs
11 | )
12 |
13 | . $PSScriptRoot\tools.ps1
14 |
15 | try {
16 | if ($ci) {
17 | $nodeReuse = $false
18 | }
19 |
20 | MSBuild @extraArgs
21 | }
22 | catch {
23 | Write-Host $_.ScriptStackTrace
24 | Write-PipelineTelemetryError -Category 'Build' -Message $_
25 | ExitWithExitCode 1
26 | }
27 |
28 | ExitWithExitCode 0
--------------------------------------------------------------------------------
/eng/common/sdl/NuGet.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/eng/common/sdl/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/eng/common/templates-official/post-build/trigger-subscription.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | ChannelId: 0
3 |
4 | steps:
5 | - task: PowerShell@2
6 | displayName: Triggering subscriptions
7 | inputs:
8 | filePath: $(Build.SourcesDirectory)/eng/common/post-build/trigger-subscriptions.ps1
9 | arguments: -SourceRepo $(Build.Repository.Uri)
10 | -ChannelId ${{ parameters.ChannelId }}
11 | -MaestroApiAccessToken $(MaestroAccessToken)
12 | -MaestroApiEndPoint $(MaestroApiEndPoint)
13 | -MaestroApiVersion $(MaestroApiVersion)
14 |
--------------------------------------------------------------------------------
/eng/common/templates-official/steps/add-build-to-channel.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | ChannelId: 0
3 |
4 | steps:
5 | - task: PowerShell@2
6 | displayName: Add Build to Channel
7 | inputs:
8 | filePath: $(Build.SourcesDirectory)/eng/common/post-build/add-build-to-channel.ps1
9 | arguments: -BuildId $(BARBuildId)
10 | -ChannelId ${{ parameters.ChannelId }}
11 | -MaestroApiAccessToken $(MaestroApiAccessToken)
12 | -MaestroApiEndPoint $(MaestroApiEndPoint)
13 | -MaestroApiVersion $(MaestroApiVersion)
14 |
--------------------------------------------------------------------------------
/eng/common/templates-official/steps/build-reason.yml:
--------------------------------------------------------------------------------
1 | # build-reason.yml
2 | # Description: runs steps if build.reason condition is valid. conditions is a string of valid build reasons
3 | # to include steps (',' separated).
4 | parameters:
5 | conditions: ''
6 | steps: []
7 |
8 | steps:
9 | - ${{ if and( not(startsWith(parameters.conditions, 'not')), contains(parameters.conditions, variables['build.reason'])) }}:
10 | - ${{ parameters.steps }}
11 | - ${{ if and( startsWith(parameters.conditions, 'not'), not(contains(parameters.conditions, variables['build.reason']))) }}:
12 | - ${{ parameters.steps }}
13 |
--------------------------------------------------------------------------------
/eng/common/templates-official/steps/component-governance.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | disableComponentGovernance: false
3 | componentGovernanceIgnoreDirectories: ''
4 |
5 | steps:
6 | - ${{ if eq(parameters.disableComponentGovernance, 'true') }}:
7 | - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true"
8 | displayName: Set skipComponentGovernanceDetection variable
9 | - ${{ if ne(parameters.disableComponentGovernance, 'true') }}:
10 | - task: ComponentGovernanceComponentDetection@0
11 | continueOnError: true
12 | inputs:
13 | ignoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }}
--------------------------------------------------------------------------------
/eng/common/templates-official/variables/sdl-variables.yml:
--------------------------------------------------------------------------------
1 | variables:
2 | # The Guardian version specified in 'eng/common/sdl/packages.config'. This value must be kept in
3 | # sync with the packages.config file.
4 | - name: DefaultGuardianVersion
5 | value: 0.109.0
6 | - name: GuardianPackagesConfigFile
7 | value: $(Build.SourcesDirectory)\eng\common\sdl\packages.config
--------------------------------------------------------------------------------
/eng/common/templates/post-build/trigger-subscription.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | ChannelId: 0
3 |
4 | steps:
5 | - task: PowerShell@2
6 | displayName: Triggering subscriptions
7 | inputs:
8 | filePath: $(Build.SourcesDirectory)/eng/common/post-build/trigger-subscriptions.ps1
9 | arguments: -SourceRepo $(Build.Repository.Uri)
10 | -ChannelId ${{ parameters.ChannelId }}
11 | -MaestroApiAccessToken $(MaestroAccessToken)
12 | -MaestroApiEndPoint $(MaestroApiEndPoint)
13 | -MaestroApiVersion $(MaestroApiVersion)
14 |
--------------------------------------------------------------------------------
/eng/common/templates/steps/add-build-to-channel.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | ChannelId: 0
3 |
4 | steps:
5 | - task: PowerShell@2
6 | displayName: Add Build to Channel
7 | inputs:
8 | filePath: $(Build.SourcesDirectory)/eng/common/post-build/add-build-to-channel.ps1
9 | arguments: -BuildId $(BARBuildId)
10 | -ChannelId ${{ parameters.ChannelId }}
11 | -MaestroApiAccessToken $(MaestroApiAccessToken)
12 | -MaestroApiEndPoint $(MaestroApiEndPoint)
13 | -MaestroApiVersion $(MaestroApiVersion)
14 |
--------------------------------------------------------------------------------
/eng/common/templates/steps/build-reason.yml:
--------------------------------------------------------------------------------
1 | # build-reason.yml
2 | # Description: runs steps if build.reason condition is valid. conditions is a string of valid build reasons
3 | # to include steps (',' separated).
4 | parameters:
5 | conditions: ''
6 | steps: []
7 |
8 | steps:
9 | - ${{ if and( not(startsWith(parameters.conditions, 'not')), contains(parameters.conditions, variables['build.reason'])) }}:
10 | - ${{ parameters.steps }}
11 | - ${{ if and( startsWith(parameters.conditions, 'not'), not(contains(parameters.conditions, variables['build.reason']))) }}:
12 | - ${{ parameters.steps }}
13 |
--------------------------------------------------------------------------------
/eng/common/templates/steps/component-governance.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | disableComponentGovernance: false
3 | componentGovernanceIgnoreDirectories: ''
4 |
5 | steps:
6 | - ${{ if eq(parameters.disableComponentGovernance, 'true') }}:
7 | - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true"
8 | displayName: Set skipComponentGovernanceDetection variable
9 | - ${{ if ne(parameters.disableComponentGovernance, 'true') }}:
10 | - task: ComponentGovernanceComponentDetection@0
11 | continueOnError: true
12 | inputs:
13 | ignoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }}
--------------------------------------------------------------------------------
/eng/common/templates/steps/run-on-unix.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | agentOs: ''
3 | steps: []
4 |
5 | steps:
6 | - ${{ if ne(parameters.agentOs, 'Windows_NT') }}:
7 | - ${{ parameters.steps }}
8 |
--------------------------------------------------------------------------------
/eng/common/templates/steps/run-on-windows.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | agentOs: ''
3 | steps: []
4 |
5 | steps:
6 | - ${{ if eq(parameters.agentOs, 'Windows_NT') }}:
7 | - ${{ parameters.steps }}
8 |
--------------------------------------------------------------------------------
/eng/common/templates/variables/sdl-variables.yml:
--------------------------------------------------------------------------------
1 | variables:
2 | # The Guardian version specified in 'eng/common/sdl/packages.config'. This value must be kept in
3 | # sync with the packages.config file.
4 | - name: DefaultGuardianVersion
5 | value: 0.109.0
6 | - name: GuardianPackagesConfigFile
7 | value: $(Build.SourcesDirectory)\eng\common\sdl\packages.config
--------------------------------------------------------------------------------
/eng/service-templates/ProductConstructionService/FullCreate/provision.ps1:
--------------------------------------------------------------------------------
1 | param(
2 | [Parameter(Mandatory=$true)][string]$subscriptionName,
3 | [Parameter(Mandatory=$true)][string]$bicepparamFileName
4 | )
5 |
6 | az account set --subscription $subscriptionName
7 |
8 | # creates a resource group `product-construction-service` in West US 2
9 | az group create --name product-construction-service --location "West US 2"
10 |
11 | $paramFile = Join-Path -Path $PSScriptRoot -ChildPath $bicepparamFileName
12 | az deployment group create --resource-group product-construction-service --parameters $paramFile --name deploy
--------------------------------------------------------------------------------
/eng/service-templates/ProductConstructionService/FullCreate/public-ip-address.bicep:
--------------------------------------------------------------------------------
1 | param publicIpAddressName string
2 | param location string
3 |
4 | resource publicIpAddress 'Microsoft.Network/publicIPAddresses@2022-09-01' = {
5 | name: publicIpAddressName
6 | location: location
7 | properties: {
8 | publicIPAllocationMethod: 'static'
9 | publicIPAddressVersion: 'IPv4'
10 | }
11 | sku: {
12 | name: 'Standard'
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/eng/service-templates/ProductConstructionService/RecreateEnvOnly/README.md:
--------------------------------------------------------------------------------
1 | The scripts in this folder are used to just recreate the container app environment, the containerapp, the jobs, and the virtual environment.
2 | All other resources (KeyVault, ManagedIdentities, etc..) are reused
--------------------------------------------------------------------------------
/eng/templates/steps/build.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | - name: configuration
3 | type: string
4 | - name: buildArgs
5 | type: string
6 | default: ''
7 |
8 | steps:
9 | - task: NuGetToolInstaller@0
10 | displayName: Install NuGet
11 | inputs:
12 | versionSpec: 6.11.x
13 |
14 | - powershell: |
15 | Write-Host "##vso[task.setvariable variable=VersionPrefix]1.1.0"
16 | displayName: Set Package Version
17 |
18 | - script: >
19 | .\eng\common\cibuild.cmd
20 | -configuration ${{ parameters.configuration }}
21 | -prepareMachine
22 | /p:Test=false
23 | /p:Sign=false
24 | ${{ parameters.buildArgs }}
25 | displayName: Build
26 |
--------------------------------------------------------------------------------
/github-merge-flow.jsonc:
--------------------------------------------------------------------------------
1 | // IMPORTANT: This file is read by the merge flow from main branch only.
2 | {
3 | "merge-flow-configurations": {
4 | "production":{
5 | "MergeToBranch": "main"
6 | }
7 | }
8 | }
--------------------------------------------------------------------------------
/global.json:
--------------------------------------------------------------------------------
1 | {
2 | "sdk": {
3 | "version": "8.0.303",
4 | "rollForward": "minor"
5 | },
6 | "tools": {
7 | "dotnet": "8.0.303",
8 | "runtimes": {
9 | "dotnet": [
10 | "6.0.29"
11 | ],
12 | "aspnetcore": [
13 | "6.0.29"
14 | ]
15 | }
16 | },
17 | "msbuild-sdks": {
18 | "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.25264.2"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.Common/AzureDevOpsTokens/AzureDevOpsCredentialResolverOptions.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using Maestro.Common.AppCredentials;
5 |
6 | namespace Maestro.Common.AzureDevOpsTokens;
7 |
8 | public class AzureDevOpsCredentialResolverOptions : AppCredentialResolverOptions
9 | {
10 | public AzureDevOpsCredentialResolverOptions()
11 | : base("499b84ac-1321-427f-aa17-267ca6975798")
12 | {
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.Common/AzureDevOpsTokens/AzureDevOpsTokenProviderOptions.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Maestro.Common.AzureDevOpsTokens;
5 |
6 | public class AzureDevOpsTokenProviderOptions : Dictionary
7 | {
8 | }
9 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.Common/AzureDevOpsTokens/IAzureDevOpsTokenProvider.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Maestro.Common.AzureDevOpsTokens;
5 |
6 | public interface IAzureDevOpsTokenProvider : IRemoteTokenProvider
7 | {
8 | string GetTokenForAccount(string account);
9 |
10 | Task GetTokenForAccountAsync(string account);
11 | }
12 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.Common/IRemoteTokenProvider.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Maestro.Common;
5 |
6 | public interface IRemoteTokenProvider
7 | {
8 | string? GetTokenForRepository(string repoUri);
9 |
10 | Task GetTokenForRepositoryAsync(string repoUri);
11 | }
12 |
13 | public class ResolvedTokenProvider(string? token) : IRemoteTokenProvider
14 | {
15 | public string? GetTokenForRepository(string repoUri) => token;
16 |
17 | public Task GetTokenForRepositoryAsync(string repoUri) => Task.FromResult(token);
18 | }
19 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.Data/ApplicationUser.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System;
5 | using System.Collections.Generic;
6 | using Microsoft.AspNetCore.Identity;
7 |
8 | namespace Maestro.Data;
9 |
10 | public class ApplicationUser : IdentityUser
11 | {
12 | public List PersonalAccessTokens { get; set; }
13 |
14 | [PersonalData]
15 | public string FullName { get; set; }
16 |
17 | public DateTimeOffset LastUpdated { get; set; } = DateTimeOffset.UtcNow;
18 | }
19 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.Data/GlobalSuppressions.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.Diagnostics.CodeAnalysis;
5 |
6 | // This file is used by Code Analysis to maintain SuppressMessage
7 | // attributes that are applied to this project.
8 | // Project-level suppressions either have no target or are given
9 | // a specific target and scoped to a namespace, type, member, etc.
10 | [assembly: SuppressMessage("Style", "IDE0161:Convert to file-scoped namespace", Justification = "", Scope = "namespace", Target = "~N:Maestro.Data.Migrations")]
11 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.Data/Models/AssetFilter.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.ComponentModel.DataAnnotations;
5 | using System.ComponentModel.DataAnnotations.Schema;
6 |
7 | namespace Maestro.Data.Models;
8 |
9 | public class AssetFilter
10 | {
11 | [Key]
12 | [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
13 | public int Id { get; set; }
14 |
15 | ///
16 | /// Filter for assets to ignore, e.g. "Microsoft.AspNetCore.App", "Microsoft.NETCore.*", etc.
17 | ///
18 | public string Filter { get; set; }
19 | }
20 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.Data/Models/AssetLocation.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.ComponentModel.DataAnnotations;
5 | using System.ComponentModel.DataAnnotations.Schema;
6 |
7 | namespace Maestro.Data.Models;
8 |
9 | public class AssetLocation
10 | {
11 | [Key]
12 | [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
13 | public int Id { get; set; }
14 |
15 | public string Location { get; set; }
16 |
17 | public LocationType Type { get; set; }
18 | }
19 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.Data/Models/BuildIncoherence.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.ComponentModel.DataAnnotations;
5 | using System.ComponentModel.DataAnnotations.Schema;
6 |
7 | namespace Maestro.Data.Models;
8 |
9 | [Table("BuildIncoherencies")]
10 | public class BuildIncoherence
11 | {
12 | [Key]
13 | [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
14 | public int Id { get; set; }
15 | public string Name { get; set; }
16 | public string Version { get; set; }
17 | public string Repository { get; set; }
18 | public string Commit { get; set; }
19 | }
20 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.Data/Models/GoalTime.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Maestro.Data.Models;
5 |
6 | public class GoalTime
7 | {
8 | public int ChannelId { get; set; }
9 | public Channel Channel { get; set; }
10 | public int DefinitionId { get; set; }
11 | public int Minutes { get; set; }
12 | }
13 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.Data/Models/LocationType.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Maestro.Data.Models;
5 |
6 | public enum LocationType
7 | {
8 | None = 0,
9 | NugetFeed,
10 | Container
11 | }
12 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.Data/Models/LongestBuildPath.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System;
5 |
6 | namespace Maestro.Data.Models;
7 |
8 | public class LongestBuildPath
9 | {
10 | public int Id { get; set; }
11 | public int ChannelId { get; set; }
12 | public Channel Channel { get; set; }
13 | public DateTimeOffset ReportDate { get; set; }
14 | public double BestCaseTimeInMinutes { get; set; }
15 | public double WorstCaseTimeInMinutes { get; set; }
16 | public string ContributingRepositories { get; set; }
17 | }
18 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.Data/Models/MergePolicyDefinition.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.Collections.Generic;
5 | using Newtonsoft.Json.Linq;
6 |
7 | namespace Maestro.Data.Models;
8 |
9 | public class MergePolicyDefinition
10 | {
11 | public string Name { get; set; }
12 |
13 | public Dictionary Properties { get; set; }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.Data/Models/SubscriptionPolicy.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.Collections.Generic;
5 |
6 | namespace Maestro.Data.Models;
7 |
8 | public class SubscriptionPolicy
9 | {
10 | public bool Batchable { get; set; }
11 |
12 | public UpdateFrequency UpdateFrequency { get; set; }
13 |
14 | public List MergePolicies { get; set; }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.Data/Models/UpdateFrequency.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Maestro.Data.Models;
5 |
6 | public enum UpdateFrequency
7 | {
8 | None = 0,
9 | EveryDay,
10 | EveryBuild,
11 | TwiceDaily,
12 | EveryWeek,
13 | EveryTwoWeeks,
14 | EveryMonth,
15 | }
16 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.Data/dotnet-ef.ps1:
--------------------------------------------------------------------------------
1 | ## How to Use
2 | ##
3 | ## Call this script before running any `dotnet ef` commands. For example:
4 | ## to run `dotnet ef database update`, at the command line, call:
5 | ## .\dotnet-ef.ps1 database update
6 |
7 | $extPath = Resolve-Path "..\..\..\artifacts\obj\Maestro.Data"
8 | Write-Output "Adding MSBuild Project Extension Path: '$extPath'"
9 |
10 | dotnet ef --msbuildprojectextensionspath "$extPath" @args
11 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.DataProviders/ISqlBarClient.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System;
5 | using System.Threading.Tasks;
6 | using Microsoft.DotNet.DarcLib;
7 |
8 | namespace Maestro.DataProviders;
9 | public interface ISqlBarClient : IBasicBarClient
10 | {
11 | ///
12 | /// Register a subscription update in the database. This is used to track the status of subscription updates.
13 | ///
14 | Task RegisterSubscriptionUpdate(
15 | Guid subscriptionId,
16 | string updateMessage);
17 | }
18 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.DataProviders/MultiProjectKustoQuery.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using Microsoft.DotNet.Kusto;
5 |
6 | namespace Maestro.DataProviders;
7 |
8 | public class MultiProjectKustoQuery
9 | {
10 | public MultiProjectKustoQuery(KustoQuery internalQuery, KustoQuery publicQuery)
11 | {
12 | Internal = internalQuery;
13 | Public = publicQuery;
14 | }
15 |
16 | public KustoQuery Internal { get; set; }
17 | public KustoQuery Public { get; set; }
18 | }
19 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.MergePolicies/CodeFlowDirection.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Maestro.MergePolicies;
5 |
6 | public enum CodeFlowDirection
7 | {
8 | None = 0,
9 | ForwardFlow = 1,
10 | BackFlow = 2
11 | }
12 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.MergePolicies/CoherencyErrorDetails.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.Collections.Generic;
5 | using System.Runtime.Serialization;
6 |
7 | namespace Maestro.MergePolicies;
8 |
9 | [DataContract]
10 | public class CoherencyErrorDetails
11 | {
12 | [DataMember]
13 | public string Error { get; set; }
14 |
15 | [DataMember]
16 | public IEnumerable PotentialSolutions { get; set; }
17 | }
18 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.MergePolicyEvaluation/IMergePolicyInfo.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Maestro.MergePolicyEvaluation;
5 |
6 | public interface IMergePolicyInfo
7 | {
8 | string Name { get; }
9 | string DisplayName { get; }
10 | }
11 |
12 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.MergePolicyEvaluation/Maestro.MergePolicyEvaluation.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net6.0
5 | true
6 | enable
7 | enable
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/Maestro/Maestro.MergePolicyEvaluation/MergePolicyEvaluationStatus.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Maestro.MergePolicyEvaluation;
5 |
6 | public enum MergePolicyEvaluationStatus
7 | {
8 | Pending = 0,
9 | DecisiveSuccess, // success that doesn't need to be evaluated again if the commit didn't change
10 | TransientSuccess, // success that needs to be re-evaluated even when on the same commit
11 | DecisiveFailure, // failure that cannot be resolved by simply re-evaluating without adding new commits
12 | TransientFailure, // failure that may be resolved by simply re-evaluating
13 | }
14 |
--------------------------------------------------------------------------------
/src/Maestro/Microsoft.DotNet.Maestro.Tasks/src/LaunchDebugger.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using Microsoft.Build.Utilities;
5 | using System.Diagnostics;
6 |
7 | namespace Microsoft.DotNet.Maestro.Tasks
8 | {
9 | public class LaunchDebugger : Task
10 | {
11 | public override bool Execute()
12 | {
13 | Debugger.Launch();
14 | return true;
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/Darc/Models/PopUps/MergePolicyData.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.Collections.Generic;
5 | using YamlDotNet.Serialization;
6 |
7 | namespace Microsoft.DotNet.Darc.Models.PopUps;
8 |
9 | public class MergePolicyData
10 | {
11 | [YamlMember(Alias = "Name")]
12 | public string Name { get; set; }
13 | [YamlMember(Alias = "Properties")]
14 | public Dictionary Properties { get; set; }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/Darc/Operations/Operation.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.Threading.Tasks;
5 |
6 | #nullable enable
7 | namespace Microsoft.DotNet.Darc.Operations;
8 |
9 | public abstract class Operation
10 | {
11 | public abstract Task ExecuteAsync();
12 | }
13 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/Darc/Options/AuthenticateCommandLineOptions.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using CommandLine;
5 | using Microsoft.DotNet.Darc.Operations;
6 |
7 | namespace Microsoft.DotNet.Darc.Options;
8 |
9 | [Verb("authenticate", HelpText = "Stores the VSTS and GitHub tokens required for remote operations.")]
10 | internal class AuthenticateCommandLineOptions : CommandLineOptions
11 | {
12 | [Option("clear", HelpText = "Clear any settings to defaults.")]
13 | public bool Clear { get; set; }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/Darc/Options/DarcOutputType.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.Darc.Options;
5 |
6 | ///
7 | /// Output type that darc should use. Commandline enum parsing is case sensitive
8 | /// so we put these as lower case.
9 | ///
10 | public enum DarcOutputType
11 | {
12 | text,
13 | json
14 | }
15 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/Darc/Options/DeleteChannelCommandLineOptions.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using CommandLine;
5 | using Microsoft.DotNet.Darc.Operations;
6 |
7 | namespace Microsoft.DotNet.Darc.Options;
8 |
9 | [Verb("delete-channel", HelpText = "Deletes an existing channel.")]
10 | internal class DeleteChannelCommandLineOptions : CommandLineOptions
11 | {
12 | [Option('n', "name", Required = true, HelpText = "Name of channel to delete.")]
13 | public string Name { get; set; }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/Darc/Options/GetChannelsCommandLineOptions.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using CommandLine;
5 | using Microsoft.DotNet.Darc.Operations;
6 |
7 | namespace Microsoft.DotNet.Darc.Options;
8 |
9 | [Verb("get-channels", HelpText = "Get a list of channels.")]
10 | internal class GetChannelsCommandLineOptions : CommandLineOptions
11 | {
12 | public override bool IsOutputFormatSupported()
13 | => OutputFormat switch
14 | {
15 | DarcOutputType.json => true,
16 | _ => base.IsOutputFormatSupported(),
17 | };
18 | }
19 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/Darc/Options/GetDependenciesCommandLineOptions.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using CommandLine;
5 | using Microsoft.DotNet.Darc.Operations;
6 |
7 | namespace Microsoft.DotNet.Darc.Options;
8 |
9 | [Verb("get-dependencies", HelpText = "Get local dependencies.")]
10 | internal class GetDependenciesCommandLineOptions : CommandLineOptions
11 | {
12 | [Option('n', "name", HelpText = "Name of dependency to query for.")]
13 | public string Name { get; set; }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/Darc/Options/VerifyCommandLineOptions.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using CommandLine;
5 | using Microsoft.DotNet.Darc.Operations;
6 |
7 | namespace Microsoft.DotNet.Darc.Options;
8 |
9 | [Verb("verify", HelpText = "Verify that the dependency information in the repository is correct.")]
10 | internal class VerifyCommandLineOptions : CommandLineOptions
11 | {
12 | }
13 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/Darc/Options/VirtualMonoRepo/CloakedFileScanOptions.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using CommandLine;
5 | using Microsoft.DotNet.Darc.Operations.VirtualMonoRepo;
6 |
7 | #nullable enable
8 | namespace Microsoft.DotNet.Darc.Options.VirtualMonoRepo;
9 |
10 | [Verb("scan-cloaked-files", HelpText = "Scans the VMR, checking if it contains any cloaked files")]
11 | internal class CloakedFileScanOptions : VmrScanOptions
12 | {
13 | }
14 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/Darc/Options/VirtualMonoRepo/IBaseVmrCommandLineOptions.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.Collections.Generic;
5 |
6 | namespace Microsoft.DotNet.Darc.Options.VirtualMonoRepo;
7 |
8 | internal interface IBaseVmrCommandLineOptions : ICommandLineOptions
9 | {
10 | string VmrPath { get; }
11 |
12 | string TmpPath { get; }
13 |
14 | IEnumerable AdditionalRemotes { get; }
15 |
16 | IEnumerable Repositories { get; }
17 | }
18 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/Darc/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.Runtime.CompilerServices;
5 |
6 | [assembly: InternalsVisibleTo("Microsoft.DotNet.Darc.Tests")]
7 | [assembly: InternalsVisibleTo("Microsoft.DotNet.Darc.VirtualMonoRepo.E2E.Tests")]
8 | [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
9 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/Darc/runtimeconfig.template.json:
--------------------------------------------------------------------------------
1 | {
2 | "rollForwardOnNoCandidateFx": 2
3 | }
4 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Commit.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib;
5 |
6 | public class Commit
7 | {
8 | public Commit(string author, string sha, string message)
9 | {
10 | Author = author;
11 | Sha = sha;
12 | Message = message;
13 | }
14 |
15 | public string Author { get; }
16 | public string Sha { get; }
17 | public string Message { get; }
18 |
19 | public static string GetShortSha(string commitSha) => commitSha[..7];
20 | }
21 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/GitSubmoduleInfo.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | #nullable enable
5 | namespace Microsoft.DotNet.DarcLib;
6 |
7 | public record GitSubmoduleInfo(
8 | string Name,
9 | string Path,
10 | string Url,
11 | string Commit);
12 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/HealthMetrics/HealthMetric.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.Threading.Tasks;
5 |
6 | namespace Microsoft.DotNet.DarcLib.HealthMetrics;
7 |
8 | public enum HealthResult
9 | {
10 | Passed,
11 | Failed,
12 | Warning
13 | }
14 |
15 | public abstract class HealthMetric
16 | {
17 | public abstract string MetricName { get; }
18 |
19 | public abstract string MetricDescription { get; }
20 |
21 | public HealthResult Result { get; protected set; }
22 |
23 | public abstract Task EvaluateAsync();
24 | }
25 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Helpers/GitObjectType.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Helpers;
5 |
6 | public enum GitObjectType
7 | {
8 | Unknown,
9 | Blob,
10 | Tree,
11 | Commit,
12 | Tag,
13 | }
14 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Helpers/GitRepoType.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Helpers;
5 |
6 | public enum GitRepoType
7 | {
8 | GitHub,
9 | AzureDevOps,
10 | Local,
11 | None
12 | }
13 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/IRemoteFactory.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using Microsoft.DotNet.DarcLib.Helpers;
5 | using System.Threading.Tasks;
6 |
7 | namespace Microsoft.DotNet.DarcLib;
8 |
9 | ///
10 | /// For certain use cases where components will step between various remote repositories
11 | /// (e.g. between azure devops and github).
12 | ///
13 | public interface IRemoteFactory
14 | {
15 | Task CreateRemoteAsync(string repoUrl);
16 |
17 | Task CreateDependencyFileManagerAsync(string repoUrl);
18 | }
19 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/KnownDependencyType.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib;
5 |
6 | public enum KnownDependencyType
7 | {
8 | GlobalJson,
9 | Docker
10 | }
11 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/MergePullRequestParameters.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib;
5 |
6 | public class MergePullRequestParameters
7 | {
8 | public string CommitToMerge { get; set; }
9 | public bool SquashMerge { get; set; } = true;
10 | public bool DeleteSourceBranch { get; set; } = true;
11 | }
12 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsArtifact.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps;
5 |
6 | public class AzureDevOpsArtifact
7 | {
8 | public string Type { get; set; }
9 |
10 | public string Alias { get; set; }
11 |
12 | public AzureDevOpsArtifactSourceReference DefinitionReference { get; set; }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsArtifactSourceReference.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps;
5 |
6 | public class AzureDevOpsArtifactSourceReference
7 | {
8 | public AzureDevOpsIdNamePair DefaultVersionSpecific { get; set; }
9 |
10 | public AzureDevOpsIdNamePair DefaultVersionType { get; set; }
11 |
12 | public AzureDevOpsIdNamePair Definition { get; set; }
13 |
14 | public AzureDevOpsIdNamePair Project { get; set; }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsBuild.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps;
5 |
6 | public class AzureDevOpsBuild
7 | {
8 | public long Id { get; set; }
9 |
10 | public string BuildNumber { get; set; }
11 |
12 | public AzureDevOpsBuildDefinition Definition { get; set; }
13 |
14 | public AzureDevOpsProject Project { get; set; }
15 |
16 | public string Status { get; set; }
17 |
18 | public string Result { get; set; }
19 | }
20 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsBuildArtifact.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps;
5 |
6 | public class AzureDevOpsBuildArtifact
7 | {
8 | public int Id { get; set; }
9 |
10 | public string Name { get; set; }
11 | }
12 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsBuildDefinition.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps;
5 |
6 | public class AzureDevOpsBuildDefinition : AzureDevOpsIdNamePair
7 | {
8 | }
9 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsChangeType.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps;
5 |
6 | public class AzureDevOpsChangeType
7 | {
8 | public const int Add = 1;
9 |
10 | public const int Edit = 2;
11 |
12 | public const int Delete = 16;
13 | }
14 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsCheckState.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps;
5 |
6 | public enum AzureDevOpsCheckState
7 | {
8 | None,
9 | Queued,
10 | Broken,
11 | Rejected,
12 | Approved,
13 | Running
14 | }
15 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsCommit.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.Collections.Generic;
5 |
6 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps;
7 |
8 | public class AzureDevOpsCommit
9 | {
10 | public AzureDevOpsCommit(List changes, string commitComment)
11 | {
12 | Changes = changes;
13 | Comment = commitComment;
14 | }
15 |
16 | public List Changes { get; set; }
17 |
18 | public string Comment { get; set; }
19 | }
20 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsIdNamePair.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps;
5 |
6 | public class AzureDevOpsIdNamePair
7 | {
8 | public string Id { get; set; }
9 |
10 | public string Name { get; set; }
11 | }
12 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsItem.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps;
5 |
6 | public class AzureDevOpsItem
7 | {
8 | public string Path { get; set; }
9 |
10 | public bool IsFolder { get; set; }
11 | }
12 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsPipelineResourceParameter.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps;
5 |
6 | public class AzureDevOpsPipelineResourceParameter
7 | {
8 | public string Version { get; set; }
9 |
10 | public AzureDevOpsPipelineResourceParameter(string version)
11 | {
12 | Version = version;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsPipelineRunDefinition.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.Collections.Generic;
5 |
6 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps;
7 |
8 | public class AzureDevOpsPipelineRunDefinition
9 | {
10 | public AzureDevOpsRunResourcesParameters Resources { get; set; }
11 |
12 | public Dictionary TemplateParameters { get; set; }
13 |
14 | public Dictionary Variables { get; set; }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsPrStatus.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps;
5 |
6 | public enum AzureDevOpsPrStatus
7 | {
8 | None,
9 | Active,
10 | Completed,
11 | Abandoned
12 | }
13 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsProject.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps;
5 |
6 | public partial class AzureDevOpsProject : AzureDevOpsIdNamePair
7 | {
8 | public AzureDevOpsProject(string name, string id)
9 | {
10 | Id = id;
11 | Name = name;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsPush.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.Collections.Generic;
5 |
6 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps;
7 |
8 | public class AzureDevOpsPush
9 | {
10 | public AzureDevOpsPush(AzureDevOpsRefUpdate refUpdate, AzureDevOpsCommit vstsCommit)
11 | {
12 | RefUpdates = [refUpdate];
13 | Commits = [vstsCommit];
14 | }
15 |
16 | public List RefUpdates { get; set; }
17 |
18 | public List Commits { get; set; }
19 | }
20 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsRefUpdate.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps;
5 |
6 | public class AzureDevOpsRefUpdate
7 | {
8 | public AzureDevOpsRefUpdate(string branch, string currentSha)
9 | {
10 | Name = branch;
11 | OldObjectId = currentSha;
12 | }
13 |
14 | public string Name { get; set; }
15 |
16 | public string OldObjectId { get; set; }
17 | }
18 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsRelease.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps;
5 |
6 | public partial class AzureDevOpsRelease
7 | {
8 | public long Id { get; set; }
9 |
10 | public AzureDevOpsReleaseEnvironment[] Environments { get; set; }
11 |
12 | public string Name { get; set; }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsReleaseEnvironment.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps;
5 |
6 | public partial class AzureDevOpsReleaseEnvironment
7 | {
8 | public string Status { get; set; }
9 | }
10 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsReleaseStatus.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps;
5 |
6 | public static class AzureDevOpsReleaseStatus
7 | {
8 | ///
9 | /// A successfull release.
10 | ///
11 | public const string Succeeded = "succeeded";
12 | ///
13 | /// A failed release.
14 | ///
15 | public const string Rejected = "rejected";
16 | }
17 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsRepositoryResourceParameter.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps;
5 |
6 | public class AzureDevOpsRepositoryResourceParameter
7 | {
8 | public string RefName { get; set; }
9 | public string Version { get; set; }
10 |
11 | public AzureDevOpsRepositoryResourceParameter(string refName, string version)
12 | {
13 | RefName = refName;
14 | Version = version;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsVariable.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps;
5 |
6 | public class AzureDevOpsVariable
7 | {
8 | public bool IsSecret { get; set; }
9 | public string Value { get; set; }
10 |
11 | public AzureDevOpsVariable(string value, bool isSecret = false)
12 | {
13 | Value = value;
14 | IsSecret = isSecret;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/Check.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models;
5 |
6 | public class Check
7 | {
8 | public Check(CheckState status, string name, string url, bool isMaestroMergePolicy = false)
9 | {
10 | Status = status;
11 | Name = name;
12 | Url = url;
13 | IsMaestroMergePolicy = isMaestroMergePolicy;
14 | }
15 |
16 | public CheckState Status { get; }
17 | public string Name { get; }
18 | public string Url { get; }
19 | public bool IsMaestroMergePolicy { get; }
20 | }
21 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/CheckState.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models;
5 |
6 | public enum CheckState
7 | {
8 | None,
9 | Pending,
10 | Error,
11 | Failure,
12 | Success
13 | }
14 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/Darc/BuildComparer.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using Microsoft.DotNet.ProductConstructionService.Client.Models;
5 | using System.Collections.Generic;
6 |
7 | namespace Microsoft.DotNet.DarcLib.Models.Darc;
8 |
9 | public class BuildComparer : IEqualityComparer
10 | {
11 | public bool Equals(Build x, Build y)
12 | {
13 | return x.Id == y.Id;
14 | }
15 |
16 | public int GetHashCode(Build obj)
17 | {
18 | return obj.Id;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/Darc/CoherencyMode.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.Darc;
5 |
6 | ///
7 | /// Method of coherency.
8 | ///
9 | public enum CoherencyMode
10 | {
11 | Legacy,
12 | Strict
13 | }
14 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/Darc/DependencyType.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.Darc;
5 |
6 | public enum DependencyType
7 | {
8 | Toolset,
9 | Product
10 | }
11 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/GitHub/GitHubComment.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.GitHub;
5 |
6 | public class GitHubComment
7 | {
8 | public GitHubComment(string commentBody)
9 | {
10 | Body = commentBody;
11 | }
12 |
13 | public string Body { get; set; }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/GitHub/GitHubCommit.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.Collections.Generic;
5 |
6 | namespace Microsoft.DotNet.DarcLib.Models.GitHub;
7 |
8 | public class GitHubCommit
9 | {
10 | public string Message { get; set; }
11 |
12 | public string Tree { get; set; }
13 |
14 | public List Parents { get; set; }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/GitHub/GitHubContent.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.GitHub;
5 |
6 | public class GitHubContent
7 | {
8 | public string Type { get; set; }
9 |
10 | public string Path { get; set; }
11 |
12 | public string Sha { get; set; }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/GitHub/GitHubContentType.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.GitHub;
5 |
6 | public class GitHubContentType
7 | {
8 | public const string File = "file";
9 | public const string Dir = "dir";
10 | }
11 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/GitHub/GitHubMergeMethod.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.GitHub;
5 |
6 | public class GitHubMergeMethod
7 | {
8 | public const string Merge = "merge";
9 | public const string Squash = "squash";
10 | public const string Rebase = "rebase";
11 | }
12 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/GitHub/GitHubPullRequest.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.GitHub;
5 |
6 | public class GitHubPullRequest
7 | {
8 | public GitHubPullRequest(string title, string body, string head, string baseBranch)
9 | {
10 | Title = title;
11 | Body = body;
12 | Head = head;
13 | Base = baseBranch;
14 | }
15 |
16 | public string Title { get; set; }
17 |
18 | public string Body { get; set; }
19 |
20 | public string Head { get; set; }
21 |
22 | public string Base { get; set; }
23 | }
24 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/GitHub/GitHubRef.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.GitHub;
5 |
6 | public class GitHubRef
7 | {
8 | public GitHubRef(string githubRef, string sha)
9 | {
10 | Ref = githubRef;
11 | Sha = sha;
12 | }
13 |
14 | public string Ref { get; set; }
15 |
16 | public string Sha { get; set; }
17 |
18 | public bool Force { get; set; }
19 | }
20 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/GitHub/GitHubTree.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.Collections.Generic;
5 | using Newtonsoft.Json;
6 |
7 | namespace Microsoft.DotNet.DarcLib.Models.GitHub;
8 |
9 | public class GitHubTree
10 | {
11 | [JsonProperty("base_tree")]
12 | public string BaseTree { get; set; }
13 |
14 | public List Tree { get; set; }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/GitHub/GitHubTreeItem.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models.GitHub;
5 |
6 | public class GitHubTreeItem
7 | {
8 | public string Mode { get; set; }
9 |
10 | public string Type { get; set; }
11 |
12 | public string Path { get; set; }
13 |
14 | public string Content { get; set; }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/PrStatus.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models;
5 |
6 | public enum PrStatus
7 | {
8 | None,
9 | Open,
10 | Closed,
11 | Merged
12 | }
13 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/Review.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models;
5 |
6 | public class Review
7 | {
8 | public Review(ReviewState state, string url)
9 | {
10 | Status = state;
11 | Url = url;
12 | }
13 |
14 | public ReviewState Status { get; }
15 | public string Url { get; }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/ReviewState.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib.Models;
5 |
6 | public enum ReviewState
7 | {
8 | Approved,
9 | ChangesRequested,
10 | Commented,
11 | Rejected,
12 | Pending
13 | }
14 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/VirtualMonoRepo/CodeFlowParameters.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | #nullable enable
5 | using System.Collections.Generic;
6 | using Microsoft.DotNet.DarcLib.VirtualMonoRepo;
7 |
8 | namespace Microsoft.DotNet.DarcLib.Models.VirtualMonoRepo;
9 |
10 | public record CodeFlowParameters(
11 | IReadOnlyCollection AdditionalRemotes,
12 | string? TpnTemplatePath,
13 | bool GenerateCodeOwners,
14 | bool GenerateCredScanSuppressions,
15 | bool DiscardPatches,
16 | bool ApplyAdditionalMappings);
17 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/Models/VirtualMonoRepo/CodeFlowResult.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.Collections.Generic;
5 | using Microsoft.DotNet.DarcLib.Helpers;
6 | using Microsoft.DotNet.DarcLib.Models.Darc;
7 |
8 | #nullable enable
9 | namespace Microsoft.DotNet.DarcLib.Models.VirtualMonoRepo;
10 |
11 | public record CodeFlowResult(
12 | bool HadUpdates,
13 | IReadOnlyCollection ConflictedFiles,
14 | NativePath RepoPath,
15 | List DependencyUpdates);
16 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/PullRequestNotMergeableException.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System;
5 |
6 | namespace Microsoft.DotNet.DarcLib;
7 |
8 | [Serializable]
9 | public class PullRequestNotMergeableException : DarcException
10 | {
11 | public PullRequestNotMergeableException() : base() { }
12 |
13 | public PullRequestNotMergeableException(string message) : base(message) { }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/PullRequestProperties.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.DarcLib;
5 |
6 | public class PullRequestProperties
7 | {
8 | public const string TitleTag = "[Darc-Update]";
9 | }
10 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/VirtualMonoRepo/EmptySyncException.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System;
5 |
6 | #nullable enable
7 | namespace Microsoft.DotNet.DarcLib.VirtualMonoRepo;
8 |
9 | public class EmptySyncException : Exception
10 | {
11 | public EmptySyncException(string message) : base(message)
12 | {
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/VirtualMonoRepo/IVmrScanner.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.Collections.Generic;
5 | using System.Threading;
6 | using System.Threading.Tasks;
7 |
8 | #nullable enable
9 | namespace Microsoft.DotNet.DarcLib.VirtualMonoRepo;
10 |
11 | public interface IVmrScanner
12 | {
13 | Task> ScanVmr(string? baselineFilePath, CancellationToken cancellationToken);
14 | }
15 |
--------------------------------------------------------------------------------
/src/Microsoft.DotNet.Darc/DarcLib/VirtualMonoRepo/InvalidSynchronizationException.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System;
5 |
6 | #nullable enable
7 | namespace Microsoft.DotNet.DarcLib.VirtualMonoRepo;
8 |
9 | public class InvalidSynchronizationException : Exception
10 | {
11 | public InvalidSynchronizationException(string message)
12 | : base(message)
13 | {
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/Microsoft.DotNet.ProductConstructionService.Client/Generated/Models/ApiError.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.Collections.Generic;
5 | using Newtonsoft.Json;
6 |
7 | namespace Microsoft.DotNet.ProductConstructionService.Client.Models
8 | {
9 | public partial class ApiError
10 | {
11 | public ApiError()
12 | {
13 | }
14 |
15 | [JsonProperty("message")]
16 | public string Message { get; set; }
17 |
18 | [JsonProperty("errors")]
19 | public List Errors { get; set; }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/Microsoft.DotNet.ProductConstructionService.Client/Generated/Models/BuildUpdate.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using Newtonsoft.Json;
5 |
6 | namespace Microsoft.DotNet.ProductConstructionService.Client.Models
7 | {
8 | public partial class BuildUpdate
9 | {
10 | public BuildUpdate()
11 | {
12 | }
13 |
14 | [JsonProperty("released")]
15 | public bool? Released { get; set; }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/Microsoft.DotNet.ProductConstructionService.Client/Generated/Models/GoalRequestJson.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using Newtonsoft.Json;
5 |
6 | namespace Microsoft.DotNet.ProductConstructionService.Client.Models
7 | {
8 | public partial class GoalRequestJson
9 | {
10 | public GoalRequestJson(int minutes)
11 | {
12 | Minutes = minutes;
13 | }
14 |
15 | [JsonProperty("minutes")]
16 | public int Minutes { get; set; }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/Microsoft.DotNet.ProductConstructionService.Client/Generated/Models/LocationType.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.Runtime.Serialization;
5 |
6 | namespace Microsoft.DotNet.ProductConstructionService.Client.Models
7 | {
8 | public enum LocationType
9 | {
10 | [EnumMember(Value = "none")]
11 | None,
12 | [EnumMember(Value = "nugetFeed")]
13 | NugetFeed,
14 | [EnumMember(Value = "container")]
15 | Container,
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/Microsoft.DotNet.ProductConstructionService.Client/Subscription.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace Microsoft.DotNet.ProductConstructionService.Client.Models
5 | {
6 | public partial class Subscription
7 | {
8 | public bool IsBackflow() => SourceEnabled && !string.IsNullOrEmpty(SourceDirectory);
9 | public bool IsForwardFlow() => SourceEnabled && !string.IsNullOrEmpty(TargetDirectory);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/Microsoft.DotNet.ProductConstructionService.Client/generate-client.cmd:
--------------------------------------------------------------------------------
1 | dotnet msbuild /t:GenerateCode /p:TargetFramework=netstandard2.0
2 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.Api/Api/ApiError.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace ProductConstructionService.Api.Api;
5 |
6 | public class ApiError
7 | {
8 | public ApiError(string message, IEnumerable? errors = null)
9 | {
10 | Message = message;
11 | Errors = errors;
12 | }
13 |
14 | public string Message { get; }
15 | public IEnumerable? Errors { get; }
16 | }
17 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.Api/Api/v2018_07_16/Models/BuildDataValidator.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using FluentValidation;
5 |
6 | #nullable disable
7 | namespace ProductConstructionService.Api.v2018_07_16.Models;
8 |
9 | public class BuildDataValidator : AbstractValidator
10 | {
11 | public BuildDataValidator()
12 | {
13 | RuleFor(b => b.Assets).NotEmpty();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.Api/Api/v2018_07_16/Models/LocationType.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | #nullable disable
5 | namespace ProductConstructionService.Api.v2018_07_16.Models;
6 |
7 | public enum LocationType
8 | {
9 | None = 0,
10 | NugetFeed,
11 | Container
12 | }
13 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.Api/Api/v2018_07_16/Models/ReleasePipeline.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | #nullable disable
5 | namespace ProductConstructionService.Api.v2018_07_16.Models;
6 |
7 | public class ReleasePipeline
8 | {
9 | public int Id { get; set; }
10 |
11 | public int PipelineIdentifier { get; set; }
12 |
13 | public string Organization { get; set; }
14 |
15 | public string Project { get; set; }
16 | }
17 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.Api/Api/v2018_07_16/Models/UpdateFrequency.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | #nullable disable
5 | namespace ProductConstructionService.Api.v2018_07_16.Models;
6 |
7 | public enum UpdateFrequency
8 | {
9 | None = 0,
10 | EveryDay,
11 | EveryBuild,
12 | TwiceDaily,
13 | EveryWeek,
14 | EveryTwoWeeks,
15 | EveryMonth,
16 | }
17 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.Api/Api/v2019_01_16/Models/BuildUpdate.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | #nullable disable
5 | namespace ProductConstructionService.Api.v2019_01_16.Models;
6 |
7 | public class BuildUpdate
8 | {
9 | public bool? Released { get; set; }
10 | }
11 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.Api/Api/v2020_02_20/Models/AssetAndLocation.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using ProductConstructionService.Api.v2018_07_16.Models;
5 |
6 | #nullable disable
7 | namespace ProductConstructionService.Api.v2020_02_20.Models;
8 |
9 | public class AssetAndLocation
10 | {
11 | public int AssetId { get; set; }
12 |
13 | public string Location { get; set; }
14 |
15 | public LocationType LocationType { get; set; }
16 | }
17 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.Api/Api/v2020_02_20/Models/BuildUpdate.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | #nullable disable
5 | namespace ProductConstructionService.Api.v2020_02_20.Models;
6 |
7 | public class BuildUpdate
8 | {
9 | public bool? Released { get; set; }
10 | }
11 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.Api/Api/v2020_02_20/Models/Commit.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | #nullable disable
5 | namespace ProductConstructionService.Api.v2020_02_20.Models;
6 |
7 | public class Commit
8 | {
9 | public Commit(string author, string sha, string message)
10 | {
11 | Author = author;
12 | Sha = sha;
13 | Message = message ?? string.Empty;
14 | }
15 |
16 | public string Author { get; }
17 | public string Sha { get; }
18 | public string Message { get; }
19 | }
20 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.Api/Configuration/KeyVaultSecretsWithPrefix.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using Azure.Extensions.AspNetCore.Configuration.Secrets;
5 | using Azure.Security.KeyVault.Secrets;
6 |
7 | namespace ProductConstructionService.Api.Configuration;
8 |
9 | internal class KeyVaultSecretsWithPrefix(string prefix) : KeyVaultSecretManager
10 | {
11 | private readonly string _prefix = prefix;
12 |
13 | public override string GetKey(KeyVaultSecret secret)
14 | => _prefix + secret.Name.Replace("--", ConfigurationPath.KeyDelimiter);
15 | }
16 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.Api/Configuration/RequestBodyNameExtension.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using Microsoft.OpenApi.Interfaces;
5 | using Microsoft.OpenApi.Writers;
6 | using Microsoft.OpenApi;
7 |
8 | namespace ProductConstructionService.Api.Configuration;
9 |
10 | internal class RequestBodyNameExtension : IOpenApiExtension
11 | {
12 | public string? Name { get; set; }
13 |
14 | public void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion)
15 | {
16 | writer.WriteValue(Name);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.Api/Controllers/Models/AzDoBuild.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace ProductConstructionService.Api.Controllers.Models;
5 |
6 | public class AzDoBuild
7 | {
8 | public required DateTime FinishTime { get; init; }
9 | public required int Id { get; init; }
10 | public required string Result { get; init; }
11 | }
12 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.Api/Pages/DependencyFlow/GitHubInfo.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | namespace ProductConstructionService.Api.Pages.DependencyFlow;
5 |
6 | public record GitHubInfo(string Owner, string Repo);
7 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.Api/Pages/DependencyFlow/IncomingRepo.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using Maestro.Data.Models;
5 |
6 | namespace ProductConstructionService.Api.Pages.DependencyFlow;
7 |
8 | public record IncomingRepo(
9 | Build LastConsumedBuild,
10 | string ShortName,
11 | Build? OldestPublishedButUnconsumedBuild,
12 | string CommitUrl,
13 | string BuildUrl,
14 | int? CommitDistance,
15 | DateTimeOffset? CommitAge);
16 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.Api/Pages/DependencyFlow/Sla.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.Diagnostics;
5 |
6 | namespace ProductConstructionService.Api.Pages.DependencyFlow;
7 |
8 | [DebuggerDisplay("{GetDebuggerDisplay(),nq}")]
9 | public class Sla
10 | {
11 | public int WarningUnconsumedBuildAge { get; set; }
12 | public int FailUnconsumedBuildAge { get; set; }
13 |
14 | private string GetDebuggerDisplay()
15 | => $"{nameof(Sla)}(Warn: {WarningUnconsumedBuildAge}, Fail: {FailUnconsumedBuildAge})";
16 | }
17 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.Api/Pages/_ViewStart.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | Layout = "_Layout";
3 | ViewBag.Brand = "Maestro++";
4 | }
5 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.Api/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using System.Runtime.CompilerServices;
5 |
6 | [assembly: InternalsVisibleTo("ProductConstructionService.Api.Tests")]
7 | [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
8 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.Api/Telemetry/TelemetryRoleNameInitializer.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using Microsoft.ApplicationInsights.Extensibility;
5 | using Microsoft.ApplicationInsights.Channel;
6 |
7 | namespace ProductConstructionService.Api.Telemetry;
8 |
9 | internal class TelemetryRoleNameInitializer : ITelemetryInitializer
10 | {
11 | public void Initialize(ITelemetry telemetry)
12 | {
13 | telemetry.Context.Cloud.RoleName = "pcs";
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.Api/wwwroot/_:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dotnet/arcade-services/f6e232e800f932967f91173548fc11244f05a9a1/src/ProductConstructionService/ProductConstructionService.Api/wwwroot/_
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.AppHost/Program.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | var builder = DistributedApplication.CreateBuilder(args);
5 |
6 | var redisCache = builder
7 | .AddRedis("redis", port: 55689);
8 |
9 | var queues = builder.AddAzureStorage("storage")
10 | .RunAsEmulator()
11 | .AddQueues("queues");
12 |
13 | builder.AddProject("productConstructionServiceApi")
14 | .WithReference(queues)
15 | .WithReference(redisCache);
16 |
17 | builder.Build().Run();
18 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.AppHost/appsettings.Development.json:
--------------------------------------------------------------------------------
1 | {
2 | "Logging": {
3 | "LogLevel": {
4 | "Default": "Information",
5 | "Microsoft.AspNetCore": "Warning"
6 | }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.AppHost/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "Logging": {
3 | "LogLevel": {
4 | "Default": "Information",
5 | "Microsoft.AspNetCore": "Warning",
6 | "Aspire.Hosting.Dcp": "Warning"
7 | }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/ProductConstructionService/ProductConstructionService.BarViz/Code/Helpers/JSRuntimeExtensions.cs:
--------------------------------------------------------------------------------
1 | // Licensed to the .NET Foundation under one or more agreements.
2 | // The .NET Foundation licenses this file to you under the MIT license.
3 |
4 | using Microsoft.JSInterop;
5 |
6 | namespace ProductConstructionService.BarViz.Code.Helpers;
7 |
8 | internal static class JSRuntimeExtensions
9 | {
10 | public static async Task OpenNewWindow(this IJSRuntime jsRuntime, string uri)
11 | {
12 | await jsRuntime.InvokeAsync