Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create the .NET Product Construction Service #2994

Closed
17 of 19 tasks
premun opened this issue Oct 23, 2023 · 1 comment
Closed
17 of 19 tasks

Create the .NET Product Construction Service #2994

premun opened this issue Oct 23, 2023 · 1 comment
Assignees
Labels

Comments

@premun
Copy link
Member

premun commented Oct 23, 2023

Context

As part of the Unified Build effort, we will need a new service that will be flowing code between VMR and the product repositories. The details are described here (Full Code Flow.md).

Architecture / integration with Maestro++

flowchart
  SubscriptionTrigger[1. External subscription trigger]
  EngCommon[Copy eng/common, update global.json..]
  VersionFiles[Update Versions.props, Version.Details.xml]

  SubscriptionTrigger--\nE.g. PR check finished, PR approved,\nuser calls trigger-subscription,\nbuild is added to a channel,\nweekly subscription is triggered... -->Maestro

  CallConductorService[3. Call Conductor service]
  GitHubPR[GitHub PR is opened/merged/updated/..]

  subgraph Maestro service
    Maestro{2. Maestro service processes the impuls}

    EngCommon-->VersionFiles
    Maestro--a. If source or target repo is VMR-->CallConductorService
    Maestro--b. If source repo is arcade-->EngCommon
    Maestro--c. Else-->VersionFiles
  end

  subgraph Conductor service
    Conductor{4. Conductor service prepares\nthe content in a branch\nof the target repository}
    Conductor--Maestro service is pinged back-->Maestro
  end

  CallConductorService-->Conductor

  VersionFiles-->GitHubPR
  Maestro--5. If is a ping from the Conductor service-->GitHubPR

  classDef New fill:#00DD00,stroke:#006600,stroke-width:1px,color:#006600
  class CallConductorService,Conductor,VmrChangesPushed New
  linkStyle 2,5,6,8 stroke-width:2px,fill:none,stroke:#00DD00,color:#00DD00
Loading

Requirements

  • The service is called Product Construction Service.
  • The service is an .NET 8.0 ASP.NET Core web service built using .NET Aspire.
  • The service runs as an Azure Container App.
  • The service is wired up with other infrastructure:
    • BAR database
    • Application Insights with support of custom metric collection (e.g. code flow info, disk use, git operations etc.)
    • KeyVaults
    • GitHub, AzDO accessibility
  • Grafana dashboard is created for the service
  • The code for the service lives in arcade-services and is deployed via a CI/CD pipeline. Blue/green deployment strategy should be used.
  • There is a staging and production environment.
  • The service keeps a local disk cache with clones of git repositories (VMR + product repos) and uses those without having to clone them frequently.
  • The service can be run locally against either the staging or some local environment to exercise a sample flow.
  • Local development story is a top priority
    • The service can be run locally in the same docker image as we push to the registry.
    • C# debugging must be available from Visual Studio.
    • Minimal setup required from devs (e.g. local BAR DB can be dockerized for instance

Milestones

  • Bare service with no code-flow functionality but CI/CD story and resource connectivity is created
  • Service gets an endpoint that will locally initialize/update/sync a VMR clone to test its basic git functionality

Full integration with Maestro and implementation of the real code flow will happen as a follow-up and not part of this.

Work Items

@premun premun changed the title Create a new service for VMR code flow Create a new service "Conductor" for VMR code flow Nov 6, 2023
@premun premun changed the title Create a new service "Conductor" for VMR code flow Create a Conductor service for VMR code flow Dec 12, 2023
@premun premun changed the title Create a Conductor service for VMR code flow Create the Conductor service for VMR code flow Dec 12, 2023
@premun premun moved this to In Progress in .NET Unified Build Jan 2, 2024
@tkapin tkapin added the Epic label Jan 2, 2024
@dkurepa dkurepa changed the title Create the Conductor service for VMR code flow Create the .NET Product Construction Service service for VMR code flow Jan 5, 2024
@tkapin tkapin changed the title Create the .NET Product Construction Service service for VMR code flow Create the .NET Product Construction Service for the VMR code flow Jan 12, 2024
@tkapin tkapin moved this from In Progress to Epics in Progress in .NET Unified Build Jan 15, 2024
@tkapin tkapin moved this from Epics in Progress to In Progress in .NET Unified Build Jan 15, 2024
@tkapin tkapin changed the title Create the .NET Product Construction Service for the VMR code flow Create the .NET Product Construction Service Jan 23, 2024
@dkurepa
Copy link
Member

dkurepa commented Apr 2, 2024

This Epic has been completed. We created a follow up epic that will bring additional enchantments to the Product Construction Service: https://github.com/dotnet/arcade-services/milestone/39

@dkurepa dkurepa closed this as completed Apr 2, 2024
@github-project-automation github-project-automation bot moved this from In Progress to Done in .NET Unified Build Apr 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: Done
Development

No branches or pull requests

3 participants