@cmoulliard/plugin-quarkus-backend v0.1.4
Quarkus Scaffolder Backend
This plugin proposes 2 actions able to:
- Clone a Quarkus "Quickstart" repository. Action:
quarkus:quickstart:clone - Create a Quarkus using the website
code.quarkus.ioable to generate a zip file of a Quarkus project and extensions selected (using extension list field). Action:quarkus:app:create
To use the scaffolder backend, import the package under the following path:
cd packages/backend
yarn add "@qshift/plugin-quarkus-backend"
yarn add "@backstage/integration"quickstart:clone action
To use the Quarkus action able to clone a quarkus quickstart from this repository, then edit the file packages/backend/src/plugins/scaffolder.ts to register the action: cloneQuarkusQuickstart.
Here is a snippet example of code changed
import { ScmIntegrations } from '@backstage/integration';
import {createBuiltinActions, createRouter} from '@backstage/plugin-scaffolder-backend';
import { cloneQuarkusQuickstart } from '@internal/plugin-quarkus-backend';
...
const integrations = ScmIntegrations.fromConfig(env.config);
const builtInActions = createBuiltinActions({
integrations,
catalogClient,
config: env.config,
reader: env.reader,
});
const actions = [...builtInActions, cloneQuarkusQuickstart()];
return await createRouter({
actions,The following table details the fields that you can use to use this action:
| Input | Description | Type | Required |
|---|---|---|---|
| quickstartName | The name of the quickstart project to be used | string | Yes |
| groupId | Maven GroupID | No | |
| artifactId | Maven ArtifactID | No | |
| targetPath | Target Path to access the code within the workspace | No | |
| additionalProperties | Quarkus properties | No | |
| database | Quarkus backend database (PostgreSQL, etc) | No | |
| infoEndpoint | Quarkus API endpoint | No | |
| healthEndpoint | Kubernetes Health ednpoint | No | |
| metricsEndpoint | Enpoint exposing the Quarkus metrics | No |
Example of action:
steps:
- id: template
name: Generating the Source Code Component
action: quarkus:quickstart:clone
input:
values:
groupId: ${{ parameters.groupId }}
artifactId: ${{ parameters.artifactId }}
version: ${{ parameters.version }}
quickstartName: ${{ parameters.quickstartName }}
additionalProperties: ${{ parameters.additionalProperties }}app:create action
To use the Quarkus action able to create a quarkus application using code.quarkus.io, then edit the file packages/backend/src/plugins/scaffolder.ts to register the action: createQuarkusApp.
Here is a snippet example of code changed
import { ScmIntegrations } from '@backstage/integration';
import {createBuiltinActions, createRouter} from '@backstage/plugin-scaffolder-backend';
import { createQuarkusApp } from '@internal/plugin-quarkus-backend';
...
const integrations = ScmIntegrations.fromConfig(env.config);
const builtInActions = createBuiltinActions({
integrations,
catalogClient,
config: env.config,
reader: env.reader,
});
const actions = [...builtInActions, createQuarkusApp()];
return await createRouter({
actions,The following table details the fields that you can use to use this action:
| Input | Description | Type | Required |
|---|---|---|---|
| quarkusVersion | Quarkus version | string | No |
| groupId | Maven GroupID | string | No |
| artifactId | Maven ArtifactID | string | No |
| version | Maven Version | string | No |
| buildTool | Tool to be used to build: 'MAVEN', 'GRADLE', 'GRADLE_KOTLIN_DSL' | string | No |
| extensions | List of the Quarkus extensions | array | No |
| javaVersion | JDK version | string | No |
| starterCode | Generate for the project some code to start ? | boolean | No |
| targetPath | Target Path to access the code within the workspace | string | No |
| additionalProperties | Quarkus properties | string | No |
| database | Quarkus backend database (PostgreSQL, etc) | string | No |
| infoEndpoint | Has a Quarkus API endpoint ? | boolean | No |
| healthEndpoint | Has a Kubernetes Health endpoint ? | boolean | No |
| metricsEndpoint | Has a Quarkus metrics endpoint ? | boolean | No |
Example of action:
steps:
- id: template
name: Generating the Source Code Component
action: quarkus:app:create
input:
values:
quarkusVersion: ${{ parameters.quarkusVersion[0] }}
groupId: ${{ parameters.groupId }}
artifactId: ${{ parameters.artifactId }}
version: ${{ parameters.version }}
buildTool: ${{ parameters.buildTool }}
javaVersion: ${{ parameters.javaVersion }}
extensions: ${{ parameters.extensions }}
database: ${{ parameters.database }}
infoEndpoint: ${{ parameters.infoEndpoint }}
healthEndpoint: ${{ parameters.healthEndpoint }}
metricsEndpoint: ${{ parameters.metricsEndpoint }}
additionalProperties: ${{ parameters.additionalProperties }}
starterCode: true