Skip to content

post: Introducing Quarkus Backstage #2277

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

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

iocanel
Copy link
Contributor

@iocanel iocanel commented Apr 3, 2025

** If you are updating a guide, please submit your pull request to the main repository: https://github.com/quarkusio/quarkus/tree/main/docs/src/main/asciidoc **

Copy link

github-actions bot commented Apr 3, 2025

🎊 PR Preview 66bd23d has been successfully built and deployed to https://quarkus-site-pr-2277-preview.surge.sh

  • Images of blog posts older than 3 months are not available.
  • Newsletters older than 3 months are not available.

@iocanel iocanel force-pushed the introducing-quarkus-backstage branch from c9cf345 to fbc2289 Compare April 4, 2025 08:32
@iocanel iocanel force-pushed the introducing-quarkus-backstage branch from fbc2289 to 0ceca27 Compare April 6, 2025 07:42
@iocanel iocanel requested a review from maxandersen April 7, 2025 16:00
https://backstage.io[Backstage] is a great tool for organizations to survive the Microservice Architecture chaos.
A tool, can't help if it's not used nor if it's feed with stale data.
The https://docs.quarkiverse.io/quarkus-backstage/dev/index.html[Quarkus Backstage] project was created to leverage the power of the Quarkus build system in order to keep
the catalog entities of Quarkus components up to day. In Quarkus lingo, to bring "Platform Engineer joy".
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
the catalog entities of Quarkus components up to day. In Quarkus lingo, to bring "Platform Engineer joy".
the catalog entities of Quarkus components up to date. In Quarkus lingo, to bring "Platform Engineer joy".



==== As a CLI plugin ====
Let's see how to use the https://docs.quarkiverse.io/quarkus-backstage/dev/index.html[Quarkus Backstage] CLI plguin in order to generate https://backstage.io[Backstage] entities for your Quarkus application.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Let's see how to use the https://docs.quarkiverse.io/quarkus-backstage/dev/index.html[Quarkus Backstage] CLI plguin in order to generate https://backstage.io[Backstage] entities for your Quarkus application.
Let's see how to use the https://docs.quarkiverse.io/quarkus-backstage/dev/index.html[Quarkus Backstage] CLI plugin in order to generate https://backstage.io[Backstage] entities for your Quarkus application.

Name Type Scope Location Description
* backstage maven user io.quarkiverse.backstage:quarkus-backstage-cli:0.6.0

[WARN] 🔥 Plugin was added in the user scope, but another with the same name exists in the project scope!
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what/why is that warning there?


[source,shell]
----
quarkus backstage entities generate
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

when I run this I get:

java.lang.RuntimeException: io.quarkus.bootstrap.BootstrapException: Failed to create the application model for org.acme:hello-backstage::jar:1.0.0-SNAPSHOTnull
	at io.quarkiverse.backstage.cli.common.GenerationBaseCommand.call(GenerationBaseCommand.java:113)
	at io.quarkiverse.backstage.cli.common.GenerationBaseCommand.call(GenerationBaseCommand.java:30)
	at picocli.CommandLine.executeUserObject(CommandLine.java:2045)
	at picocli.CommandLine.access$1500(CommandLine.java:148)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2465)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2457)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2419)
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
	at picocli.CommandLine$RunLast.execute(CommandLine.java:2421)
	at io.quarkus.picocli.runtime.PicocliRunner$EventExecutionStrategy.execute(PicocliRunner.java:26)
	at picocli.CommandLine.execute(CommandLine.java:2174)
	at io.quarkus.picocli.runtime.PicocliRunner.run(PicocliRunner.java:40)
	at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:143)
	at io.quarkus.runtime.Quarkus.run(Quarkus.java:77)
	at io.quarkus.runtime.Quarkus.run(Quarkus.java:48)
	at io.quarkus.runner.GeneratedMain.main(Unknown Source)
Caused by: io.quarkus.bootstrap.BootstrapException: Failed to create the application model for org.acme:hello-backstage::jar:1.0.0-SNAPSHOTnull
	at io.quarkus.bootstrap.BootstrapAppModelFactory.resolveAppModelForWorkspace(BootstrapAppModelFactory.java:280)
	at io.quarkus.bootstrap.BootstrapAppModelFactory.resolveAppModel(BootstrapAppModelFactory.java:219)
	at io.quarkus.bootstrap.app.QuarkusBootstrap.bootstrap(QuarkusBootstrap.java:138)
	at io.quarkiverse.backstage.cli.common.GenerationBaseCommand.call(GenerationBaseCommand.java:102)
	... 15 more
Caused by: io.quarkus.bootstrap.resolver.maven.BootstrapMavenException: Failed to resolve artifact org.acme:hello-backstage:jar:1.0.0-SNAPSHOT
	at io.quarkus.bootstrap.resolver.BootstrapAppModelResolver.resolve(BootstrapAppModelResolver.java:591)
	at io.quarkus.bootstrap.resolver.BootstrapAppModelResolver.resolve(BootstrapAppModelResolver.java:441)
	at io.quarkus.bootstrap.resolver.BootstrapAppModelResolver.doResolveModel(BootstrapAppModelResolver.java:297)
	at io.quarkus.bootstrap.resolver.BootstrapAppModelResolver.resolveManagedModel(BootstrapAppModelResolver.java:206)
	at io.quarkus.bootstrap.BootstrapAppModelFactory.resolveAppModelForWorkspace(BootstrapAppModelFactory.java:269)
	... 18 more
Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: The following artifacts could not be resolved: org.acme:hello-backstage:jar:1.0.0-SNAPSHOT (absent): Could not find artifact org.acme:hello-backstage:jar:1.0.0-SNAPSHOT
	at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:473)
	at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:261)
	at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:243)
	at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:278)
	at io.quarkus.bootstrap.resolver.BootstrapAppModelResolver.resolve(BootstrapAppModelResolver.java:586)
	... 22 more
Caused by: org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact org.acme:hello-backstage:jar:1.0.0-SNAPSHOT
	at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:464)
	... 26 more

should there be a mvn package instruction before this?

....


At the time of writing the extension is not part of the Extension catalog, and thus it needs to be added using
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it added by now?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, let's get it in. It's so easy to do ...

[source,shell]
----
quarkus ext add smallrye-openapi
echo "quarkus.smallrye-openapi.store-schema-directory=." >> src/main/resources/application.properties
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
echo "quarkus.smallrye-openapi.store-schema-directory=." >> src/main/resources/application.properties
quarkus config set quarkus.smallrye-openapi.store-schema-directory .

....


Let's rebuild the application and see how our `catalog-info.yaml` file looks like:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I get:

quarkus backstage entities generate
2025-04-25 12:09:50,811 WARN  [io.qua.run.con.ConfigRecorder] (main) Build time property cannot be changed at runtime:
 - quarkus.ide.target is set to 'vscode' but it is build time fixed to 'auto'. Did you change the property quarkus.ide.target after building the application?
java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
	[error]: Build step io.quarkus.deployment.index.ApplicationArchiveBuildStep#build threw an exception: org.jboss.jandex.UnsupportedVersion: Can't read Jandex index from /META-INF/jandex.idx: Can't read index version 13; this IndexReader only supports index versions 2-3,6-12
	at io.quarkus.deployment.index.IndexingUtil$MetaInfJandexReader.apply(IndexingUtil.java:299)
	at io.quarkus.deployment.index.IndexingUtil$MetaInfJandexReader.apply(IndexingUtil.java:275)

need a different version?

Copy link
Member

@maxandersen maxandersen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i completely missed this until today :/

it looks good but I'm not able to complete the steps as hitting jandex errors + added a few typo fixes.

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

Successfully merging this pull request may close these issues.

3 participants