Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Try jreleaser for releases #2812

Open
juherr opened this issue Oct 28, 2022 · 13 comments
Open

Try jreleaser for releases #2812

juherr opened this issue Oct 28, 2022 · 13 comments

Comments

@juherr
Copy link
Member

juherr commented Oct 28, 2022

https://jreleaser.org/

@krmahadevan
Copy link
Member

@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
Copy link
Member Author

juherr commented Dec 17, 2022

@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
Copy link

aalmiray commented Feb 1, 2023

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

@krmahadevan
Copy link
Member

@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
Copy link

aalmiray commented Feb 1, 2023

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
Copy link
Member

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

  • We use Gradle to build and release to Maven Central (both snapshots and releases).
  • For doing this we are using the stage-vote-release-plugin.
  • We have 2 workflow files.
    • publish-maven-central.yml creates release candidates and
    • release-maven-central.yml actually goes ahead with releasing the artifact into maven central. This is done manually because we may have n release candidates which gets vetted out for any possible issues with some early adopters before a final release happens (based on the last released candidate)
  • Once this is done, then comes the part of creating the github release in here and sending out the release announcement on Google groups (an example of it can be seen here
  • I also publish the release announcement on LinkedIn (I dont have a twitter handle)

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
Copy link

aalmiray commented Feb 1, 2023

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
Copy link
Member

@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
Copy link
Member Author

juherr commented Feb 1, 2023

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
Copy link

aalmiray commented Feb 1, 2023

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
Copy link
Member Author

juherr commented Feb 2, 2023

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
Copy link
Member

@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
Copy link
Member Author

juherr commented Feb 2, 2023

Yes, agree

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants