developmentseed / eoapi-cdk

AWS CDK constructs for deploying eoAPI
https://developmentseed.org/eoapi-cdk
11 stars 4 forks source link

Review usage of Semantic Releases #37

Open alukach opened 1 year ago

alukach commented 1 year ago

Is the system of Semantic Releases more trouble than its worth? I am a bit of an optimist on the strategy, but others have described it as opaque and too much magic. Should we remove it from our build system?

Pros:

Cons:

My urge to is to lean more into the strategy and build in more CI tooling that would:

Thoughts @sharkinsspatial @emileten ?

emileten commented 1 year ago

@alukach thanks !

More challenge around understanding what the impact of commit will be (ie what will the be the resultant version change?) Many small (single-change) releases (I'm admittedly not sure if this is actually a bad thing)

These are the two concerns for me. I think the former could be mitigated by having a nicer documentation regarding where releases happen (#32) and how those happen -- Perhaps in the README something a bit more detailed like :

Versioning is automated in this repository :

  • First, Pull Requests titles must comply with the format of Conventional Commits, that define a set of categories that a given PR can fall in.
  • Second, when a Pull Request is merged, it is automatically analyzed by a Semantic Release bot which follows the Conventional Commits format to determine whether or not a new release should happen, and if so, what the new version should be.

Regarding the latter concern, I don't know what the best practice is.

emileten commented 6 months ago

Just adding another comment that would be in the side of 'Cons' here.

I have been working on adding 'integration tests', which is just a github action that builds eoapi-cdk and runs an example real world deployment to check everything works before doing a release. It was intended to be an automated workflow, but I ended up defining it as a manual github workflow because I struggled a lot to integrate it to our automated release system.

More details here, but the gist is : this workflow is costly, because it's a real deployment. We only want to do it if we are going to do a release, but it's semantic-release that decides if we do one or not, and I failed finding a reliable way to code up something like "if semantic-release is about to make a release, run the test deployment".

I resorted to a manual deployment workflow + a reminder in the PR template because of this.