enterprise-azure-policy-as-code icon indicating copy to clipboard operation
enterprise-azure-policy-as-code copied to clipboard

Feature: Preview/beta releases for improving stability

Open o-l-a-v opened this issue 9 months ago • 4 comments

Is your feature request related to a problem? Please describe.

EPAC pushes new versions and features very frequently. That's great. Recently though, some of these frequent changes have introduced regressions, which is less great.

EPAC manages critical components in production environments. It would be great if new stable releases could get some more testing before they are pushed out. We're currently POC-ing EPAC to replace our current solution, but these frequent breaking changes and regressions makes us a bit hesitant.

One way to achieve both frequent changes and improved stability would be to have prereleases, beta releases. So that's what I suggest.

Describe the solution you'd like

Release beta releases of EPAC to PowerShell Gallery. Then users can:

  • Use rolling stable releases of EPAC for deploying to production and staging environments.
  • Use rolling beta releases of EPAC to dev/test environments, to both test new features and provide the EPAC team with feedback.

Describe alternatives you've considered

  • Hardcode what EPAC version to use for deploy to production and staging environments.
    • Then updating EPAC will be a manual routine.
  • Use rolling releases for dev/test environment.

Additional context

o-l-a-v avatar May 06 '24 10:05 o-l-a-v

@techlake - something to look at in the future but I don't think we really have the resources to implement this at the moment. Maybe for new features however bug fixes we can't really avoid pushing new versions - nor do we have the test cases outside of our environments.

anwather avatar May 06 '24 10:05 anwather

@anwather considering some of the issues (bugs) we had in v10: I think we need to tackle this.

techlake avatar May 06 '24 15:05 techlake

https://learn.microsoft.com/en-us/powershell/gallery/concepts/module-prerelease-support?view=powershellget-3.x https://learn.microsoft.com/en-us/powershell/gallery/concepts/module-prerelease-support?view=powershellget-3.x#prerelease-versioning-impact-on-sort-order-and-installation-folders

https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository

  • Optionally, to notify users that the release is not ready for production and may be unstable, select This is a pre-release.
  • Optionally, select Set as latest release. If you do not select this option, the latest release label will automatically be assigned based on semantic versioning.

techlake avatar May 07 '24 01:05 techlake

I would suggest using sampler to manage the PowerShell module lifecycle. It offers the following advantages:

Immediate benefits using Sampler:

  • Automated Releases: Use GH / ADO pipelines to automate release/prerelease publications to the gallery.
  • Changelog Maintenance: Automatically updates change logs with each release.
  • CI/CD Integration: Supports GitHub Actions, Azure Pipelines, and AppVeyor.
  • Versioning: Uses GitVersion for semantic versioning.
  • Cross-Platform Support: Ensures compatibility across Windows, Linux, and macOS.
  • Consistency: Enforces standard project structure and coding practices.

Other features to consider a few later:

  • Automated Testing: Integrates Pester tests for early issue detection. (#624)
  • Documentation: Automates documentation generation from code comments and markdown files.
  • Quality Gates: Enforces code quality through coverage thresholds and linting rules.

fslef avatar May 29 '24 12:05 fslef

Adding to backlog

apybar avatar Aug 14 '24 14:08 apybar

Closing as discussed with dev team - regression testing has been added to our internal ADO repo which has improved the quality of releases.

anwather avatar Oct 22 '24 03:10 anwather