Elders / Cronus

Cronus is a lightweight framework for building event driven systems with DDD/CQRS in mind
Apache License 2.0
173 stars 26 forks source link

Rework the CI process #220

Open mynkow opened 4 years ago

mynkow commented 4 years ago

The problem

Right now it is time consuming to release and manage new stable and pre-release versions of the framework. The goal is to automate the entire process so that maintainers could focus on code. The biggest problem is when a change is done in the core Cronus code and it has to be distributed to all other components. This requires package update in every component repository (10+ repositories) and then writing a release notes.

Current process

  1. Write code in Cronus
  2. Update release notes in Cronus
  3. CI will publish a nuget package
  4. dependabot will automatically update every component with the new version 5. A maintainer has to write release notes in every component repository
  5. CI will publish a new version for every component package

The goal

Bottom line

I know that there will be a lot of questions and suggestions. This is an open issue which requires discussion and changes to what we currently have. I do not mind removing the current established process entirely.

Also, some of the changes may require some process changes. Keep in mind that we are a small team and currently we DO allow maintainers to push code without having written github issue or PR.

AlexPlom commented 4 years ago

Q. If we are working on Cronus main project and pumping beta versions, do we need to automatically update all the packages with beta versions?

Q. Do we actually need to create beta package releases for the cronus-containing projects, or should we just keep them automatically updated via dependabot?

Q. Do we want to automatically release versions without testing each separate package?

Please discuss

mynkow commented 4 years ago

If we are working on Cronus main project and pumping beta versions, do we need to automatically update all the packages with beta versions?

From my point of view the answer is YES. Dependabot already has a configuration how to update packages. If it is a pre-release it updates everything. If it is stable it updates only patches automatically.


Do we actually need to create beta package releases for the cronus-containing projects, or should we just keep them automatically updated via dependabot?

It is useful for development to have pre-releases and to test breaking changes before going stable

mynkow commented 3 years ago

We have successfully switched to semantic release.

The integration with dependabot will wait for now because it is not working properly with nuget packages which use SemVer2.0

https://github.com/dependabot/dependabot-core/issues/3643