chore: publish from main

This commit is contained in:
github-actions[bot]
2026-07-01 01:11:17 +00:00
parent 5075e262b5
commit 7646f29d36
14 changed files with 4779 additions and 0 deletions
@@ -0,0 +1,175 @@
// catalog.mjs — Static catalog of GitHub Copilot App Modernization for Java
// predefined tasks and supported Java upgrade paths. Sourced from Microsoft Learn:
// /azure/developer/java/migration/migrate-github-copilot-app-modernization-for-java-predefined-tasks
// /azure/developer/github-copilot-app-modernization/tools
//
// `detect` lists dependency-signature keys (see scan.mjs DEP_SIGNATURES). When a
// repo's build files match one of those keys, the task is flagged "relevant".
export const PREDEFINED_TASKS = [
{
id: "rabbitmq-to-servicebus",
name: "RabbitMQ to Azure Service Bus",
category: "Messaging",
summary:
"Convert RabbitMQ usage (Spring AMQP, Spring JMS, or Jakarta EE over AMQP) to Azure Service Bus, preserving messaging semantics with secure auth by default.",
detect: ["rabbitmq"],
},
{
id: "activemq-to-servicebus",
name: "ActiveMQ to Azure Service Bus",
category: "Messaging",
summary:
"Convert ActiveMQ producers, consumers, connection factories, and queue/topic interactions to Azure Service Bus equivalents.",
detect: ["activemq"],
},
{
id: "aws-sqs-to-servicebus",
name: "AWS SQS to Azure Service Bus",
category: "Messaging",
summary:
"Translate AWS SQS queue operations and message handling to Azure Service Bus, preserving at-least-once delivery, batching, and visibility-timeout behaviors.",
detect: ["awsSqs"],
},
{
id: "managed-identity-db",
name: "Managed Identities for Database migration",
category: "Identity & Secrets",
summary:
"Prepare your codebase for Managed Identity authentication when moving from a local database to Azure SQL, MySQL, PostgreSQL, or Cosmos DB.",
detect: ["jdbc"],
},
{
id: "managed-identity-credentials",
name: "Managed Identities for Credential Migration",
category: "Identity & Secrets",
summary:
"Replace connection strings / shared access signatures for messaging services (Event Hubs, Service Bus) with Azure Managed Identity authentication.",
detect: ["rabbitmq", "activemq", "jms"],
},
{
id: "secrets-to-keyvault",
name: "Secrets & Certificate Management to Azure Key Vault",
category: "Identity & Secrets",
summary:
"Move hardcoded secrets and local TLS/mTLS certificates (Java KeyStores) to Azure Key Vault, retrieving them at runtime via the JCA provider.",
detect: ["keystore"],
},
{
id: "crypto-to-keyvault",
name: "Cryptography operations to Azure Key Vault",
category: "Identity & Secrets",
summary:
"Migrate local signing, verification, encryption, and decryption to Azure Key Vault so keys never leave the vault.",
detect: ["crypto"],
},
{
id: "aws-secrets-to-keyvault",
name: "AWS Secret Manager to Azure Key Vault",
category: "Identity & Secrets",
summary:
"Reconfigure secret creation, retrieval, update, and deletion from AWS Secret Manager to Azure Key Vault.",
detect: ["awsSecrets"],
},
{
id: "entra-id-auth",
name: "User authentication to Microsoft Entra ID",
category: "Identity & Secrets",
summary:
"Transition LDAP-based user authentication to Microsoft Entra ID authentication.",
detect: ["ldap"],
},
{
id: "aws-s3-to-blob",
name: "AWS S3 to Azure Storage Blob",
category: "Storage",
summary:
"Convert code that interacts with AWS S3 into Azure Storage Blob logic while maintaining the same semantics.",
detect: ["awsS3"],
},
{
id: "file-io-to-fileshare",
name: "Local file I/O to Azure Storage File share mounts",
category: "Storage",
summary:
"Convert local file reads/writes to unified mount-path access so an Azure Storage File share can persist data across replicas.",
detect: [],
},
{
id: "logging-to-console",
name: "Logging to local file → console (Azure Monitor)",
category: "Observability",
summary:
"Convert file-based logging to console-based logging so Azure hosting integrates it with Azure Monitor automatically.",
detect: ["filelog"],
},
{
id: "javamail-to-acs",
name: "Java Mail to Azure Communication Services",
category: "Email",
summary:
"Convert SMTP-based mail sending to Azure Communication Services, which works in Azure hosting environments that block port 25.",
detect: ["javamail"],
},
{
id: "databases-to-azure",
name: "On-prem databases to Azure database offerings",
category: "Database",
summary:
"Migrate Oracle, IBM Db2, Informix, or Sybase ASE to Azure Database for PostgreSQL or Azure SQL with passwordless Entra ID auth, reconciling SQL dialect differences.",
detect: ["oracle", "db2", "sybase", "informix"],
},
{
id: "cache-to-redis",
name: "Cache solutions to Azure Managed Redis",
category: "Cache",
summary:
"Migrate in-memory or distributed caches (Infinispan, SwarmCache, Memcached, etc.) to Azure Managed Redis with passwordless Entra ID auth.",
detect: ["cache"],
},
{
id: "ant-eclipse-to-maven",
name: "Ant / Eclipse project to Maven",
category: "Build",
summary:
"Convert Ant or Eclipse IDE projects to Maven so the project builds consistently from any environment.",
detect: ["ant"],
},
];
// Java runtime upgrade ladder targeted by App Modernization (8 → 11 → 17 → 21 → 25),
// with particular focus on Spring Boot apps.
export const JAVA_UPGRADE_TARGETS = [11, 17, 21, 25];
// Day-to-day Java utilities you can invoke in Copilot Chat with the `#` prefix.
export const APPMOD_TOOLS = {
cve: {
id: "appmod-validate-cves-for-java",
label: "Validate CVEs",
summary:
"Scan the project for known Java CVEs and validate that critical vulnerabilities are addressed.",
},
tests: {
id: "appmod-generate-tests-for-java",
label: "Generate unit tests",
summary: "Use AI code understanding to generate unit tests for the Java code.",
},
};
// The five validation gates App Modernization runs after code transformation.
export const VALIDATION_GATES = [
{ key: "build", label: "Build" },
{ key: "tests", label: "Unit Tests" },
{ key: "cve", label: "CVE Check" },
{ key: "consistency", label: "Consistency" },
{ key: "completeness", label: "Completeness" },
];
/** Return the catalog with a `relevant` flag set per task based on detected deps. */
export function catalogWithRelevance(detectedKeys) {
const set = new Set(detectedKeys || []);
return PREDEFINED_TASKS.map((t) => ({
...t,
relevant: t.detect.some((d) => set.has(d)),
}));
}