You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add azure.springboot and azd spring init for trusted, single-module Maven Spring Boot applications without an existing azure.yaml.
Infer active Spring profiles, datasource engine, and authentication from application configuration. Supported databases are in-memory, MySQL password, PostgreSQL password, and PostgreSQL managed identity.
Generate extension-owned azure.yaml, container build assets, Bicep, and database bootstrap hooks. Core azd is unchanged.
Include extension tests and independent Petclinic generation scenarios for MySQL password and PostgreSQL managed identity.
Validation
Extension tests, vet, build, initialization, and Bicep compilation passed.
Both independent generation scenarios pass locally against the pinned extension commit.
H2 and PostgreSQL password deployments passed live write/read and restart checks.
The extension-generated PostgreSQL managed-identity flow passed live deployment, Entra-only authentication, exact SQL grant checks, write/read, restart persistence, fresh-session verification, and credential non-disclosure checks. Disposable Azure resources were removed.
Deferred scope
MySQL managed identity, restrictive networking, Gradle, and multi-module projects.
Live MySQL password deployment validation; generation is covered.
Handling credentials already present in application-owned configuration or packaged resources remains under review.
This extension reuses the published azd Go module v1.34.2; the links below pin that release's source.
MySQL live provisioning is blocked. Core pins MySQL AVM 0.6.1. Initialization/compilation pass, but the live attempt fails ARM validation: Microsoft.KeyVault/vaults/dummyVault/keys/dummyKey is not defined. This PR does not replace that module or work around the failure.
SQL generation adds Key Vault alongside ACA password secrets. Core already supplies the database password through an ACA secret, but also creates Key Vault to store an additional copy. The app reads the ACA secret-backed environment variable, not Key Vault. This is an inherited scaffold design choice: reusing the generator unchanged does not offer a vault-free MySQL/PostgreSQL configuration.
Managed-identity database authentication is not supported by this init flow. The generated SQL setup uses administrator credentials and password authentication, as shown in the PostgreSQL parameters. Managed-identity database authentication remains follow-up work. Detected passwordless intent is rejected, not silently downgraded.
Database network defaults allow all public IP addresses. The PostgreSQL firewall configuration uses an all-IP rule; MySQL has the same broad default. Restrictive firewall rules and private networking/DNS are separate follow-up work, independent of the database authentication method.
H2 and PostgreSQL passed full live write/read and restart checks; MySQL is not claimed as live-validated.
Keep Spring Boot development status in the extension README, consistent with other extensions.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The reason will be displayed to describe this comment to others. Learn more.
Core context (azd v1.34.2): init --from-code generates project/tooling assets without rewriting Spring configuration. Core's Maven packaging also copies the built archive to staging without sanitizing embedded application configuration.
That is not a reason to dismiss this finding: our Dockerfile explicitly copies external configuration into the runtime image, and runtime overrides do not remove embedded credentials. Keeping this item open. Any fix should preserve the user's app source and address the generated deployment artifacts; we should not claim the entire application image is automatically sanitized.
Track the shared PR publishing stage and version-setting script in both main and PR triggers, matching existing extension pipelines.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace core project/scaffold composition with one parameterized template for embedded databases, MySQL password, PostgreSQL password, and PostgreSQL managed identity. Defer MySQL managed identity pending live configuration validation.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep Spring documentation and spelling terms extension-local; revert feature additions under docs.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The effective POM lists declared/inherited dependencies, not the resolved transitive runtime graph. An otherwise supported application that receives its JDBC driver through a starter or shared library therefore fails the “no runtime JDBC driver” checks even though Maven packages that driver. Resolve the runtime dependency graph before checking driver availability, and cover a transitively supplied driver.
Also addressed the review-body finding about transitive JDBC drivers in 7bdcd71: Maven dependency:list now supplies the resolved compile/runtime graph to driver and packaged-dependency checks, with resolver coverage in 1ec0998.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
Infrastructure and administrator-run SQL bootstrap need human review, with integrated managed-identity validation incomplete and a dependency-parsing defect unresolved.
Maven dependency:list can append Java module annotations such as :runtime -- module org.postgresql.jdbc [auto], including in its output file. The scope comparison below rejects that entire field, silently dropping the dependency. Applications whose JDBC driver is only transitive can then fail initialization because analysis reports the driver as missing. Parse the coordinate token before whitespace annotations, and add a regression covering module-decorated entries.
Addressed the review-body finding about module-decorated Maven dependency output in cbb01a4. The parser now isolates the coordinate token before scope validation, with parser and resolver regressions covering runtime -- module ... [auto] entries.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
The generated infrastructure and SQL identity bootstrap need human review because integrated managed-identity deployment validation remains incomplete.
The PR description still says generation reuses core serialization/Bicep APIs and managed identity is out of scope, but this implementation owns the templates and generates PostgreSQL managed-identity hooks. Its MySQL validation note also describes the replaced core scaffold. Update Summary, Validation, and WIP to match the implementation and README, including the incomplete integrated managed-identity validation, so reviewers see the actual scope.
This substring also matches JndiDataSourceAutoConfiguration and XADataSourceAutoConfiguration. Excluding either leaves ordinary datasource auto-configuration enabled, but a supported app with a JDBC URL is rejected here as invalid. Match individual excluded class names instead, and add regressions for these independent exclusions.
Addressed the latest review findings in 3a85a0bd4:
Reject DBCP2 URL, username, password, and driver overrides, including explicitly empty values.
Skip Maven test compilation and execution in deployment image builds with maven.test.skip=true; a main Java 17/test Java 21 regression confirms the production image remains on Java 17.
Honor spring-boot.repackage.skip when plugin and execution settings are unspecified, while preserving explicit plugin/execution precedence.
Match only the exact DataSourceAutoConfiguration exclusion, preserving JNDI- and XA-only exclusions.
Update the PR description to reflect extension-owned templates and completed PostgreSQL managed-identity live validation.
The application-owned credential-retention thread remains open for a separate scope decision.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
azure.springbootandazd spring initfor trusted, single-module Maven Spring Boot applications without an existingazure.yaml.azure.yaml, container build assets, Bicep, and database bootstrap hooks. Coreazdis unchanged.Validation
Deferred scope