Azure / azure-dev

A developer CLI that reduces the time it takes for you to get started on Azure. The Azure Developer CLI (azd) provides a set of developer-friendly commands that map to key stages in your workflow - code, build, deploy, monitor, repeat.
https://aka.ms/azd
MIT License
416 stars 204 forks source link

Questions Regarding Best Practices for CI/CD with Aspire #3957

Open softwaretirol opened 6 months ago

softwaretirol commented 6 months ago

We are currently developing an application on Aspire and have successfully deployed it using azd to Azure for both test and production environments. While we have managed to configure each environment using environment variables, we still have a few questions:

  1. Build Pipeline:

    • Previously, we used Azure DevOps to build our application (dotnet publish and dotnet test). Although this is no longer strictly necessary, is it still considered best practice to run these steps to at least execute the tests in the build pipeline?
  2. Release Pipeline:

    • In the past, we deployed our staging environments using a Release Pipeline. With Aspire, does this mean we should now use azd up -e Test within the Release Pipelines to build and publish our containers for these environments?
  3. Versioning:

    • How should we handle the versioning of our .NET assemblies? This was previously an independent step in the build pipeline.
  4. Blue-Green Deployment:

    • Does Aspire/azd up support Blue-Green Deployment such that the containers are deployed "on the fly" with zero downtime?

Any guidance or suggestions on how to address these concerns would be greatly appreciated.

Bpflugrad commented 5 months ago

I also have some of these questions. We are transitioning from Azure Functions and use release pipes and slot swap heavily, so Blue-Green Deployment is something I an pretty curious about.

Mike-E-angelo commented 2 months ago

I am interested in this, particularly with Azure DevOps. I am reviewing what is available and it only appears that GitHub actions is supported at the moment.

With AppService, I have staging slots that I deploy to and test the application first before pushing it to production. I am curious how this is done using using this model as it seems everything is pushed directly into production. 🤔