testng-team / testng

TestNG testing framework
https://testng.org
Apache License 2.0
1.99k stars 1.02k forks source link

Try jreleaser for releases #2812

Open juherr opened 2 years ago

juherr commented 2 years ago

https://jreleaser.org/

krmahadevan commented 1 year ago

@juherr - Can you please help elaborate as to what aspects of our release would this streamline? Just trying to understand the scope of what this ticket asks for.

juherr commented 1 year ago

@krmahadevan the goal is having the release process described in a file that automatize it.

Currently, I think only the maven central part is automatic.

It could be improved by the group announce, github release changelog, ...

aalmiray commented 1 year ago

Hello there! I'm the JReleaser author. Happy to help with any questions you may have 😄

krmahadevan commented 1 year ago

@aalmiray - I will surely bug you with questions. I haven't yet gotten around to exploring JReleaser yet but I will definitely want to automate the entire release orchestration :)

aalmiray commented 1 year ago

There are a several projects out there that use the JReleaser Gradle plugin in combination with the Kotlin DSL. Recently (in v1.3.0 we added an option to also upload JARs & POMs to Maven Central. The upcoming v1.5.0 will support uploading Gradle metadata files if that's what you do today with your current setup.

krmahadevan commented 1 year ago

@aalmiray - Here's what we have as of today.

I have created a wiki page that explains all this.

@juherr wanted us to explore JReleaser to see if we can automate all of this as well.

I hope that gives you some context on what the expectation is here.

aalmiray commented 1 year ago

I see. Perhaps keeping the stage-vote-release-plugin in place is the safest choice as it currently serves its purpose. JReleaser could support a voting process but it does not do it yet.

Now, creating the Git release and posting announcements is where JReleaser could help. The announcement to Google Groups may be posted via the SMTP announcer. Posting to Linkedin may be trickier as I believe it requires registering an app and obtaining an OAuth access token. Might be possible to use the HTTP announcer.

A GH workflow that reacts to a tag being created could be used to trigger the creation of a Git release + announcements.

krmahadevan commented 1 year ago

@aalmiray - Thanks for sharing those details. That should help me get started with the experimentation part. Will keep you posted on the progress that I make.

juherr commented 1 year ago

For linkedin post, something could be done with https://www.make.com/en/help/app/linkedin Then jreleaser could just have to call an http url

aalmiray commented 1 year ago

Unfortunately that integration requires OAuth which means it's browser bound. OTOH it looks like GoReleaser only requires an access token (somehow obtained from a previous OAuth authentication session) and likely calls a REST endpoint https://goreleaser.com/customization/announce/linkedin/

juherr commented 1 year ago

I suppose jreleaser is able to make and http query. If the make.com flow is triggered by a webhook, we can decide what is the http security.. Then make.com manages all the auth problem with LinkedIn.

Not the best way but it should work 😁

krmahadevan commented 1 year ago

@juherr - Personally, I am not too concerned on the LinkedIn integration because that ties it with me. I can still live with having to do this manually. As long as the rest of the stuff can be done, I think we should be good.

Basically anyone in the TestNG dev (today its mostly just you and me) should be able to do this release. Posting on LinkedIn|Twitter is just an added bonus :)

juherr commented 1 year ago

Yes, agree