backstage-plugins icon indicating copy to clipboard operation
backstage-plugins copied to clipboard

🔌 Plugin: Quarkus

Open gastaldi opened this issue 2 years ago • 16 comments

🔖 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?

  • [X] I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

Are you willing to submit PR?

Yes I am willing to submit a PR!

gastaldi avatar Apr 17 '23 13:04 gastaldi

Thanks for sharing your idea! Could you add more information

  • what's the value add of the plugin
  • what are the use cases which will be supported by this plugin?

serenamarie125 avatar Apr 17 '23 14:04 serenamarie125

  • what's the value add of the plugin
  • The plugin will allow users to generate and deploy Quarkus applications
  • Facilitate adoption of the Red Hat Build of Quarkus (productized version)
  • what are the use cases which will be supported by this plugin?
  • Developers will be able to start developing applications easily with Quarkus

gastaldi avatar Apr 17 '23 15:04 gastaldi

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.

christophe-f avatar Apr 17 '23 15:04 christophe-f

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.

gastaldi avatar Apr 17 '23 21:04 gastaldi

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

christophe-f avatar Apr 18 '23 01:04 christophe-f

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

Front

  • Filter, select your Quarkus extensions using the Quarkus Extension List field.
  • Select using the Quarkus QuickStart Picker one of the quickstarts available: https://github.com/quarkusio/quarkus-quickstarts NOTE: Such frontend feature(s) should be used with the quarkus scaffolder backend plugin (described hereafter) in order to get the generated project from https://code.quarkus.io/ as zip file !

Backend => actions

  • Clone a Quarkus "Quickstart" repository. Action: quarkus:quickstart:clone
  • Create a Quarkus using the website code.quarkus.io able to generate a zip file of a Quarkus project and extensions selected (using extension list field). Action: quarkus:app:create

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

Modules:

  • https://www.npmjs.com/package/@qshift/plugin-quarkus
  • https://www.npmjs.com/package/@qshift/plugin-quarkus-backend

cmoulliard avatar Jan 22 '24 14:01 cmoulliard

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

cmoulliard avatar Jan 22 '24 14:01 cmoulliard

@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?

gastaldi avatar Jan 22 '24 14:01 gastaldi

in the create link instead

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

cmoulliard avatar Jan 22 '24 14:01 cmoulliard

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 avatar Jan 22 '24 14:01 gastaldi

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

gastaldi avatar Jan 22 '24 14:01 gastaldi

@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.

maxandersen avatar Jan 22 '24 14:01 maxandersen

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

gastaldi avatar Jan 22 '24 14:01 gastaldi

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 avatar Jan 22 '24 15:01 cmoulliard

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

cmoulliard avatar Jan 22 '24 15:01 cmoulliard

@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.

maxandersen avatar Jan 22 '24 19:01 maxandersen

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

rhdh-bot avatar Sep 03 '24 17:09 rhdh-bot