jenkins-infra / helpdesk

Open your Infrastructure related issues here for the Jenkins project
https://github.com/jenkins-infra/helpdesk/issues/new/choose
16 stars 10 forks source link

Multiple requests for GSoC 2024 Plugin Modernizer Tool #4262

Open jonesbusy opened 2 weeks ago

jonesbusy commented 2 weeks ago

Service(s)

Other

Summary

Hi,

With GSoC 2024 coming to an end we would like to industrialize the Plugin Modernizer Tool we developed during the GsoC 2024 period

Right now we have a repository https://github.com/jenkinsci/plugin-modernizer-tool and this is fine for the code.

This tool has mainly 2 axis

1) Getting metadata about plugins (we are using an OpenRewrite scanning recipe for this). For example we can extract information about transitive dependencies or just to know if a specific file is present 2) Running recipe and refactoring and open a pull request with the transformation

For the 1) we would like to store this information (it's basically JSON document generated by the tool) on a Git repository. Historically some maintainer were using their personal repos to store this information (example https://github.com/gounthar/jdk8-removal) Now we would like to have a central place to store those JSON document.

What is the best organisation for this ? jenkinsci or jenkins-infra ?

In a more long term future (perhaps a future GSoC project) those metadata could be consumed by the plugin health score system to create more probe that cannot be created without help of OpenRewrite (like getting transitive dependencies and warn if a plugin doesn't use an API plugin instead).

In a short term only the maintainers of the tool would push those metadata to this repository until we have some kind of workflow/job to do it for us

The second point is about the distribution of the CLI. We would expect some frequent release and we need to think about packaging and would like perhaps to start with HomeBrew distribution to cover Linux and MacOSX user

I noticed you guys are using already a Tap on https://github.com/jenkins-infra/homebrew-tap/. Is it something we could also use to distribute our CLI ? Or do you see it more on the jenkinsci organisation ?

Thanks for taking the time to answer with your thought.

Regards,

Reproduction steps

No response

jonesbusy commented 2 weeks ago

FYI @gounthar @sridamul

timja commented 2 weeks ago

Jenkins Infra GitHub org would make most sense to me as its information and tooling for the Jenkins project and not for end users of Jenkins.

and it related to plugin health score and plugin site as well with the potential integration points.

dduportal commented 1 week ago

+1 with @timja

jonesbusy commented 1 week ago

Hi,

Looks good for me. We can transfer the repository to jenkins-infra as long we can keep our maintainers permission.

I also never published anything to homebrew, right now the GH action just use the cd.yaml workflow.

https://jreleaser.org/ looks a good alternative for Java project. They are some module to publish to HomeBrew.

The history of metadata is not so important, the last option would also be possible, how could we publish such JSON files to this WebServer. Do you have any example ?

I've craeted 2 issues related to packaging

https://github.com/jenkinsci/plugin-modernizer-tool/issues/239 https://github.com/jenkinsci/plugin-modernizer-tool/issues/240

(Perhaps for Hacktoberfest)

gounthar commented 1 week ago

For Homebrew, @jmMeessen has already published for Jenkins in https://github.com/jenkins-infra/jenkins-contribution-aggregator thanks to goreleaser, but I don't know what would be the equivalent (if any) for Java. 🤔

For the docker image, we could publish on GitHub as a package, as we did with the quickstart tutorials

timja commented 1 week ago

It means we'll have to transfer the repository jenkinsci/plugin-modernizer-tool to the @jenkins-infra organization (ping @timja does it look good to you?) as a start

Looks fine to me.

jonesbusy commented 1 week ago

but I don't know what would be the equivalent (if any) for Java. 🤔

Yes there is (https://jreleaser.org/) but I never played with it