Skip to content
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

Java app build extension #348

Merged
merged 4 commits into from
Jan 21, 2025
Merged

Java app build extension #348

merged 4 commits into from
Jan 21, 2025

Conversation

aaronpowell
Copy link
Member

This uses an event to run the mvnw build (or it can be customised via options), so it is only used when the app host is running the resource

Closes #339

PR Checklist

  • Created a feature/dev branch in your fork (vs. submitting directly from a commit on main)
  • Based off latest main branch of toolkit
  • PR doesn't include merge commits (always rebase on top of our main, if needed)
  • New integration
    • Docs are written
    • Added description of major feature to project description for NuGet package (4000 total character limit, so don't push entire description over that)
  • Tests for the changes have been added (for bug fixes / features) (if applicable)
  • Contains NO breaking changes
  • Every new API (including internal ones) has full XML docs
  • Code follows all style conventions

Other information

@aaronpowell aaronpowell added the integration A new .NET Aspire integration label Dec 24, 2024
State = new($"mvnw exited with {mvnw.ExitCode}", KnownResourceStates.FailedToStart)
}).ConfigureAwait(false);

throw new InvalidOperationException($"mvnw build failed with exit code {mvnw.ExitCode}");

Choose a reason for hiding this comment

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

Why throw?

Copy link
Member Author

Choose a reason for hiding this comment

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

It's how I've seen other hooks implemented in the past.

Choose a reason for hiding this comment

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

Where does this show up? Wouldn't it be better to show it in the dashboard? Also what happens when the build fails? Do I need to restart the entire apphost to rebuild or can I trigger it from the dashboard? (custom command)

Worth thinking through that I think.

Copy link
Member Author

Choose a reason for hiding this comment

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

The notification service reporting shows up on the dashboard and I think the exception bubbles to the console of the resource that it was relative for.

A custom command would be a good idea to run a rebuild, I'll add that.

private static IResourceBuilder<JavaAppExecutableResource> WithJavaDefaults(
this IResourceBuilder<JavaAppExecutableResource> builder,
JavaAppExecutableResourceOptions options) =>
builder.WithOtlpExporter()

Choose a reason for hiding this comment

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

Does this work without making https work?

Copy link
Member Author

Choose a reason for hiding this comment

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

Without HTTPS on the dashboard?

Choose a reason for hiding this comment

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

Yea does this work right now?

Copy link
Member Author

Choose a reason for hiding this comment

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

I assume so 🤣

This uses an event to run the mvnw build (or it can be customised via options), so it is only used when the app host is running the resource

Fixes #339
Allows you to rebuild the java app without having to restart the whole app host.
Copy link

Code Coverage

Package Line Rate Branch Rate Complexity Health
CommunityToolkit.Aspire.EventStore 100% 100% 46
CommunityToolkit.Aspire.Hosting.ActiveMQ 60% 24% 104
CommunityToolkit.Aspire.Hosting.ActiveMQ.MassTransit 1% 0% 14
CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder 100% 100% 22
CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps 100% 100% 28
CommunityToolkit.Aspire.Hosting.Bun 81% 71% 54
CommunityToolkit.Aspire.Hosting.Deno 84% 75% 72
CommunityToolkit.Aspire.Hosting.EventStore 90% 71% 62
CommunityToolkit.Aspire.Hosting.Golang 94% 50% 16
CommunityToolkit.Aspire.Hosting.Java 69% 72% 120
CommunityToolkit.Aspire.Hosting.Meilisearch 61% 27% 94
CommunityToolkit.Aspire.Hosting.Ngrok 59% 50% 58
CommunityToolkit.Aspire.Hosting.NodeJS.Extensions 90% 68% 92
CommunityToolkit.Aspire.Hosting.Ollama 65% 64% 198
CommunityToolkit.Aspire.Hosting.Python.Extensions 67% 46% 56
CommunityToolkit.Aspire.Hosting.Rust 94% 83% 16
CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects 75% 61% 96
CommunityToolkit.Aspire.MassTransit.RabbitMQ 100% 100% 30
CommunityToolkit.Aspire.Meilisearch 97% 92% 68
CommunityToolkit.Aspire.OllamaSharp 87% 82% 68
Summary 74% (2576 / 3468) 63% (648 / 1028) 1314

Minimum allowed line rate is 60%

@github-actions github-actions bot added the Stale label Jan 21, 2025
@aaronpowell aaronpowell merged commit 1c00b94 into main Jan 21, 2025
10 checks passed
@aaronpowell aaronpowell deleted the aaronpowell/issue339 branch January 21, 2025 04:16
aaronpowell added a commit that referenced this pull request Jan 22, 2025
* Migrating sample from dotnet/aspire repo

* Adding dapr tests

* Adding dapr setup to CI workflow

* Following the setup-dapr instructions

* Debugging CI

* Falling back to looking at PATH

* Fixing line endings replacement

* Added PATH lookup to Windows

* Adding some diagnostic info

* Changing log level

* init was only running on linux, which I think is wrong

* Turning up logging

* Bypass logging

* Interpolated strings

* Adding resource logger service

* Java app build extension (#348)

* Adding the ability to do a maven build in the app host

This uses an event to run the mvnw build (or it can be customised via options), so it is only used when the app host is running the resource

Fixes #339

* Adding a 'build with maven' command

Allows you to rebuild the java app without having to restart the whole app host.

* Expanding test coverage

* Some more tests

* Windows exe needs a file extension

* Rolling back some changes

* Renaming step

* Tidying up the tests

* Requiring docker for dapr tests
aaronpowell added a commit that referenced this pull request Jan 31, 2025
* Dapr migration initial import (#378)

* Dropping files from Aspire repo

* Moving to the right namespace/folder naming

* Adding to solution and getting it to compile

* Adding in the Dapr tests from the Aspire repo

Had to remove the DaprSchemaTests file as we can't do schema tests (missing a lot of infrastructure from the Aspire repo).

Had to edit the DaprTests to not use EnvironmentVariableEvaluator, which we can't leverage as it uses some internal types from Aspire.Hosting. This means that our testing of the environment variables is slightly different, and the values we assert against are not the docker internal host endpoints, but the public endpoints

* Dapr azure hosting ext (#371)

* Create Dap Azure extensions project
Create Dapr Azure Redis project
Create Example AppHost + ApiService

* Work in progress
Create Dapr resource for provisioning

* Remove specific resource as not generating properly
Use AddAzureInfrastructure

* Updated to use secret refs

* Fix - Remove code used for testing
Add AzureDaprComponentResource
Start of unit tests

* Unit tests +
Fixes based on unit tests

* remove bicep file

* Tests for AzureRedis

* Add Readme and perform small cleanup tasks

* Update src/CommunityToolkit.Aspire.Hosting.Dapr.AzureExtensions/ApplicationModel/AzureDaprComponentResource.cs

Co-authored-by: Aaron Powell <[email protected]>

* Apply suggestions from code review

Co-authored-by: Aaron Powell <[email protected]>

* Revert unintentional change to Java.AppHost

* Update tests/CommunityToolkit.Aspire.Hosting.Dapr.AzureRedis.Tests/ResourceCreationTests.cs

Co-authored-by: Aaron Powell <[email protected]>

* Updated azure redis documentation also added missing xmldocs for api

* correct unit test approach

* remove unnecessary comment

* null checking

* More null checking

* Update Azure redis readme

* Update AzureExtension readme

* move extensions to shared files
remove Dapr Azure extensions project
make dapr azure extensions internal
include extensions in dapr redis package
include extensions in dapr extensions tests
make dapr redis internals visible to dapr redis tests

* change redisCache to infra rename source to redisBuilder

---------

Co-authored-by: Aaron Powell <[email protected]>

* Fixing broken sln

* Dapr example and tests (#394)

* Migrating sample from dotnet/aspire repo

* Adding dapr tests

* Adding dapr setup to CI workflow

* Following the setup-dapr instructions

* Debugging CI

* Falling back to looking at PATH

* Fixing line endings replacement

* Added PATH lookup to Windows

* Adding some diagnostic info

* Changing log level

* init was only running on linux, which I think is wrong

* Turning up logging

* Bypass logging

* Interpolated strings

* Adding resource logger service

* Java app build extension (#348)

* Adding the ability to do a maven build in the app host

This uses an event to run the mvnw build (or it can be customised via options), so it is only used when the app host is running the resource

Fixes #339

* Adding a 'build with maven' command

Allows you to rebuild the java app without having to restart the whole app host.

* Expanding test coverage

* Some more tests

* Windows exe needs a file extension

* Rolling back some changes

* Renaming step

* Tidying up the tests

* Requiring docker for dapr tests

* Adding codeowners

* Moving dapr extensions to use our dapr package

* Forgot to update the tests project

* Adding some assembly filters

* Adding readme updates

* Slight break in the markdown

---------

Co-authored-by: Brett Smith <[email protected]>
@Alirexaa Alirexaa added this to the 9.2 milestone Feb 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
integration A new .NET Aspire integration Stale
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Remove Java as a build dependency
4 participants