janus-idp / backstage-plugins

Plugins for Backstage
https://janus-idp.io
Apache License 2.0
145 stars 147 forks source link

🔌 Plugin: Quarkus #254

Closed gastaldi closed 1 month ago

gastaldi commented 1 year ago

🔖 Summary

Support deploying applications using Quarkus as the backend

🌐 Project website (if applicable)

https://quarkus.io

✌️ Context

No response

👀 Have you spent some time to check if this plugin request has been raised before?

🏢 Have you read the Code of Conduct?

Are you willing to submit PR?

Yes I am willing to submit a PR!

serenamarie125 commented 1 year ago

Thanks for sharing your idea! Could you add more information

gastaldi commented 1 year ago
  • what's the value add of the plugin
  • what are the use cases which will be supported by this plugin?
christophe-f commented 1 year ago

Will it be offering more features than the current Golden Path template that we have in Janus? https://github.com/janus-idp/software-templates/tree/main/scaffolder-templates/quarkus-backend-template

This template will create a repo, inject the Quarkus skeleton project, a CI pipeline and the ArgoCD manifests.

The Quarkus code is coming from the devfiles project.

gastaldi commented 1 year ago

I guess the main issue with the existing solution is that the content in https://github.com/janus-idp/software-templates/tree/main/scaffolder-templates/quarkus-backend-template/skeleton is static and potentially becoming stale between releases.

This is akin to what I experienced while developing the Red Hat Developers Launcher - keeping the sources in sync between releases becomes a maintenance nightmare.

I propose this plugin to invoke the Quarkus tooling APIs using code.quarkus.io (to generate the application) and registry.quarkus.io (to fetch the recommended releases for a particular platform) - and their productized counterparts - to generate the application instead.

What comes next (setting up the CI pipeline and CD manifests) looks fine to me.

christophe-f commented 1 year ago

To keep things consistent with Backstage and the other templates, this could be a custom action instead of a plugin. The custom action could call the code.quarkus.io and generate the skeleton.

Currently the templates are basic, but the idea is that a customer can use that as a base and then tweak for their environments. Ie add custom security, actuator properties, etc so the devs don't have to care about this. It's automatically part of the template. Also accessing external apis could be a challenge in some setup.

Happy to discuss more about this to have something more dynamic if possible

cmoulliard commented 8 months ago

@gastaldi @christophe-f We have developed with @iocanel a quarkus plugin able to offer such features

Front

Backend => actions

Project: https://github.com/q-shift/backstage-plugins/tree/main

Modules:

cmoulliard commented 8 months ago

What should we do to integrate this work part of janus-idp ? @christophe-f

gastaldi commented 8 months ago

@cmoulliard would it be possible to integrate the code.quarkus.io frontend in the create link instead of introducing a new UI? Maybe with @ia3andy's help?

cmoulliard commented 8 months ago

in the create link instead

Is it an action, another plugin, etc ? @gastaldi

gastaldi commented 8 months ago

I am looking at the screenshots in https://github.com/q-shift/backstage-plugins/tree/main and there is a Create... link there. I don't have enough knowledge in Backstage, but I'll guess it's a plugin?

gastaldi commented 8 months ago

Also, looking at the screenshots this looks really cool, great job!

maxandersen commented 8 months ago

@cmoulliard would it be possible to integrate the code.quarkus.io frontend in the create link instead of introducing a new UI? Maybe with @ia3andy's help?

adding code.quarkus.io to backstage would not be a good fit for backstage. hence the plugin/templating approach.

gastaldi commented 8 months ago

@maxandersen I mean the UI only, not the code.quarkus.io external website BTW

cmoulliard commented 8 months ago

I am looking at the screenshots in https://github.com/q-shift/backstage-plugins/tree/main and there is a Create... link there. I don't have enough knowledge in Backstage, but I'll guess it's a plugin?

As I mentioned :up:, our project includes UI fields to be used in a backstage template and actions (= backend part ) to either call code.quarkus.io and get a zip of the project generated OR clone a quickstart github repository

@gastaldi

cmoulliard commented 8 months ago

Also, looking at the screenshots this looks really cool, great job!

I must collect new screenshot as I improved a little bit the look'n'feel of the field showing the list of the quickstarts

maxandersen commented 8 months ago

@maxandersen I mean the UI only, not the code.quarkus.io external website BTW

Yes I get that. Code.quarkus ui is not what make sense to put into backstage. It's not how backstage flows/functions. It would be "alien".

Hence why we made the plug-in that consist of part ui/part template config so you as platform end. can preconfigured at the level that makes snese for your org and integrate with rest of backstage/janus work.

rhdh-bot commented 1 month ago

This issue has been closed due to the fact that the Janus community is being sunset.

For future plugin issues, please use https://github.com/backstage/community-plugins/issues

For future showcase issues, please use https://issues.redhat.com/browse/RHIDP

For more information on the sunset, see:

https://janus-idp.io/blog/2024/07/05/future-of-janus-community https://issues.redhat.com/browse/RHIDP-3690 https://issues.redhat.com/browse/RHIDP-1018