From d9318bd015b819729a0364fef373d96e821c04b2 Mon Sep 17 00:00:00 2001 From: Matthew Alan Gray Date: Thu, 22 Feb 2024 10:47:48 -0600 Subject: [PATCH 1/7] Fixes to align AZD deployment with service expectations to resolve services crashing on startup --- deploy/standard/bicep/ops-rg.bicep | 550 +++++++++--------- deploy/starter/config/appconfig.template.json | 7 + deploy/starter/infra/shared/storage.bicep | 20 +- 3 files changed, 293 insertions(+), 284 deletions(-) diff --git a/deploy/standard/bicep/ops-rg.bicep b/deploy/standard/bicep/ops-rg.bicep index 76abab415a..399e04ca1e 100644 --- a/deploy/standard/bicep/ops-rg.bicep +++ b/deploy/standard/bicep/ops-rg.bicep @@ -1,275 +1,275 @@ -/** Inputs **/ -@description('Administrator Object Id') -param administratorObjectId string - -@description('Administrator principal type.') -param administratorPrincipalType string = 'Group' - -@description('DNS Resource Group Name') -param dnsResourceGroupName string - -@description('The environment name token used in naming resources.') -param environmentName string - -@description('Location used for all resources.') -param location string - -@description('Project Name, used in naming resources.') -param project string - -@description('Timestamp used in naming nested deployments.') -param timestamp string = utcNow() - -@description('Virtual Network ID, used to find the subnet IDs.') -param vnetId string - -/** Locals **/ -@description('Formatted untruncated resource name') -var kvFormattedName = toLower('${kvServiceType}-${substring(kvResourceSuffix, 0, length(kvResourceSuffix) - 4)}') - -@description('The Resource Name') -var kvTruncatedName = substring(kvFormattedName,0,min([length(kvFormattedName),20])) -var kvName = '${kvTruncatedName}-${substring(kvResourceSuffix, length(kvResourceSuffix) - 3, 3)}' - -@description('KeyVault resource suffix') -var kvResourceSuffix = resourceSuffix - -@description('The Resource Service Type token') -var kvServiceType = 'kv' - -@description('Resource Suffix used in naming resources.') -var resourceSuffix = '${project}-${environmentName}-${location}-${workload}' - -@description('Tags for all resources') -var tags = { - Environment: environmentName - IaC: 'Bicep' - Project: project - Purpose: 'DevOps' -} - -@description('Workload Token used in naming resources.') -var workload = 'ops' - -@description('Private DNS Zones for Azure Monitor Private Link Scope') -var zonesAmpls = filter( - dnsZones.outputs.ids, - (zone) => contains([ 'monitor', 'blob', 'ods', 'oms', 'agentsvc' ], zone.key) -) - -@description('Private DNS Zones for Container Registry') -var zonesRegistry = filter( - dnsZones.outputs.ids, - (zone) => contains([ 'cr', 'cr_region' ], zone.key) -) - -@description('Private DNS Zones for Storage Accounts') -var zonesStorage = filter( - dnsZones.outputs.ids, - (zone) => contains([ 'blob', 'dfs', 'file', 'queue', 'table', 'web' ], zone.key) -) - -/** Outputs **/ -@description('Azure Monitor Action Group') -output actionGroupId string = actionGroup.outputs.id - -@description('Log Analytics Workspace') -output logAnalyticsWorkspaceId string = logAnalytics.outputs.id - -/** Resources **/ -@description('User Assigned Identity for App Configuration') -resource uaiAppConfig 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = { - location: location - name: 'uai-appconfig-${resourceSuffix}' - tags: tags -} - -/** Modules **/ -@description('Read DNS Zones') -module dnsZones 'modules/utility/dnsZoneData.bicep' = { - name: 'dnsZones-${timestamp}' - scope: resourceGroup(dnsResourceGroupName) - params: { - location: location - } -} - -@description('Azure Monitor Action Group') -module actionGroup 'modules/actionGroup.bicep' = { - name: 'actionGroup-${timestamp}' - params: { - environmentName: environmentName - project: project - resourceSuffix: resourceSuffix - } -} - -@description('Azure Monitor Private Link Scope') -module ampls 'modules/ampls.bicep' = { - name: 'ampls-${timestamp}' - params: { - environmentName: environmentName - location: location - privateDnsZones: zonesAmpls - project: project - resourceSuffix: resourceSuffix - subnetId: '${vnetId}/subnets/ops' - } -} - -@description('App Configuration') -module appConfig 'modules/appConfig.bicep' = { - dependsOn: [ uaiAppConfigRoleAssignments ] - name: 'appConfig-${timestamp}' - params: { - administratorObjectId: administratorObjectId - administratorPrincipalType: administratorPrincipalType - actionGroupId: actionGroup.outputs.id - location: location - logAnalyticWorkspaceId: logAnalytics.outputs.id - privateDnsZones: filter(dnsZones.outputs.ids, (zone) => zone.key == 'configuration_stores') - resourceSuffix: resourceSuffix - subnetId: '${vnetId}/subnets/ops' - tags: tags - uaiId: uaiAppConfig.id - vaultName: keyVault.outputs.name - } -} - -@description('Application Insights') -module applicationInights 'modules/applicationInsights.bicep' = { - name: 'appInsights-${timestamp}' - params: { - amplsName: ampls.outputs.name - environmentName: environmentName - location: location - logAnalyticWorkspaceId: logAnalytics.outputs.id - project: project - resourceSuffix: resourceSuffix - tags: tags - } - dependsOn: [ keyVault ] -} - -@description('Azure Container Registry') -module containerRegistry 'modules/containerRegistry.bicep' = { - name: 'containerRegistry-${timestamp}' - params: { - agentPoolSubnetId: '${vnetId}/subnets/ops' - location: location - logAnalyticWorkspaceId: logAnalytics.outputs.id - privateDnsZones: zonesRegistry - resourceSuffix: resourceSuffix - subnetId: '${vnetId}/subnets/ops' - tags: tags - } -} - -// @description('Azure Managed Grafana') -// module grafana 'modules/grafana.bicep' = { -// name: 'grafana-${timestamp}' -// params: { -// azureMonitorWorkspaceResourceId: monitorWorkspace.outputs.id -// location: location -// privateDnsZones: filter(privateDnsZones, (zone) => zone.key == 'grafana') -// resourceSuffix: resourceSuffix -// subnetId: '${vnetId}/subnets/ops' -// tags: tags -// } -// } - -@description('Key Vault') -module keyVault 'modules/keyVault.bicep' = { - name: 'keyVault-${timestamp}' - params: { - actionGroupId: actionGroup.outputs.id - administratorObjectId: administratorObjectId - administratorPrincipalType: administratorPrincipalType - allowAzureServices: false - location: location - logAnalyticWorkspaceId: logAnalytics.outputs.id - privateDnsZones: filter(dnsZones.outputs.ids, (zone) => zone.key == 'vault') - resourceSuffix: resourceSuffix - subnetId: '${vnetId}/subnets/ops' - tags: tags - } -} - -@description('Log Analytics') -module logAnalytics 'modules/logAnalytics.bicep' = { - name: 'logAnalytics-${timestamp}' - params: { - actionGroupId: actionGroup.outputs.id - environmentName: environmentName - location: location - project: project - resourceSuffix: resourceSuffix - - ampls: { - id: ampls.outputs.id - name: ampls.outputs.name - } - } -} - -@description('Azure Monitor Workspace') -module monitorWorkspace 'modules/monitorWorksapce.bicep' = { - name: 'monitorWorkspace-${timestamp}' - params: { - location: location - privateDnsZones: filter(dnsZones.outputs.ids, (zone) => zone.key == 'prometheusMetrics') - resourceSuffix: resourceSuffix - subnetId: '${vnetId}/subnets/ops' - tags: tags - } -} - -// See: https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles -module uaiAppConfigRoleAssignments 'modules/utility/roleAssignments.bicep' = { - name: 'uaiAppConfigRoleAssignments-${timestamp}' - params: { - principalId: uaiAppConfig.properties.principalId - roleDefinitionIds: { - 'Key Vault Crypto Service Encryption User': 'e147488a-f6f5-4113-8e2d-b22465e65bf6' - } - } -} - -@description('Storage Account') -module storage 'modules/storageAccount.bicep' = { - name: 'storage-${timestamp}' - params: { - actionGroupId: actionGroup.outputs.id - location: location - logAnalyticWorkspaceId: logAnalytics.outputs.id - privateDnsZones: zonesStorage - resourceSuffix: resourceSuffix - subnetId: '${vnetId}/subnets/ops' - tags: tags - } - dependsOn: [ keyVault ] -} - -@description('Placeholder configuration setting for CSV file') -module csvFileSecret 'modules/kvSecret.bicep' = { - name: 'csvFileSecret-${timestamp}' - params: { - kvName: kvName - secretName: 'foundationallm-langchain-csvfile-url' - secretValue: 'FIXME' - tags: tags - } - dependsOn: [ keyVault ] -} - -@description('Placeholder configuration setting for Test DB Password') -module dbPasswdSecret 'modules/kvSecret.bicep' = { - name: 'dbPasswdSecret-${timestamp}' - params: { - kvName: kvName - secretName: 'foundationallm-langchain-sqldatabase-testdb-password' - secretValue: 'FIXME' - tags: tags - } - dependsOn: [ keyVault ] -} +/** Inputs **/ +@description('Administrator Object Id') +param administratorObjectId string + +@description('Administrator principal type.') +param administratorPrincipalType string = 'Group' + +@description('DNS Resource Group Name') +param dnsResourceGroupName string + +@description('The environment name token used in naming resources.') +param environmentName string + +@description('Location used for all resources.') +param location string + +@description('Project Name, used in naming resources.') +param project string + +@description('Timestamp used in naming nested deployments.') +param timestamp string = utcNow() + +@description('Virtual Network ID, used to find the subnet IDs.') +param vnetId string + +/** Locals **/ +@description('Formatted untruncated resource name') +var kvFormattedName = toLower('${kvServiceType}-${substring(kvResourceSuffix, 0, length(kvResourceSuffix) - 4)}') + +@description('The Resource Name') +var kvTruncatedName = substring(kvFormattedName,0,min([length(kvFormattedName),20])) +var kvName = '${kvTruncatedName}-${substring(kvResourceSuffix, length(kvResourceSuffix) - 3, 3)}' + +@description('KeyVault resource suffix') +var kvResourceSuffix = resourceSuffix + +@description('The Resource Service Type token') +var kvServiceType = 'kv' + +@description('Resource Suffix used in naming resources.') +var resourceSuffix = '${project}-${environmentName}-${location}-${workload}' + +@description('Tags for all resources') +var tags = { + Environment: environmentName + IaC: 'Bicep' + Project: project + Purpose: 'DevOps' +} + +@description('Workload Token used in naming resources.') +var workload = 'ops' + +@description('Private DNS Zones for Azure Monitor Private Link Scope') +var zonesAmpls = filter( + dnsZones.outputs.ids, + (zone) => contains([ 'monitor', 'blob', 'ods', 'oms', 'agentsvc' ], zone.key) +) + +@description('Private DNS Zones for Container Registry') +var zonesRegistry = filter( + dnsZones.outputs.ids, + (zone) => contains([ 'cr', 'cr_region' ], zone.key) +) + +@description('Private DNS Zones for Storage Accounts') +var zonesStorage = filter( + dnsZones.outputs.ids, + (zone) => contains([ 'blob', 'dfs', 'file', 'queue', 'table', 'web' ], zone.key) +) + +/** Outputs **/ +@description('Azure Monitor Action Group') +output actionGroupId string = actionGroup.outputs.id + +@description('Log Analytics Workspace') +output logAnalyticsWorkspaceId string = logAnalytics.outputs.id + +/** Resources **/ +@description('User Assigned Identity for App Configuration') +resource uaiAppConfig 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = { + location: location + name: 'uai-appconfig-${resourceSuffix}' + tags: tags +} + +/** Modules **/ +@description('Read DNS Zones') +module dnsZones 'modules/utility/dnsZoneData.bicep' = { + name: 'dnsZones-${timestamp}' + scope: resourceGroup(dnsResourceGroupName) + params: { + location: location + } +} + +@description('Azure Monitor Action Group') +module actionGroup 'modules/actionGroup.bicep' = { + name: 'actionGroup-${timestamp}' + params: { + environmentName: environmentName + project: project + resourceSuffix: resourceSuffix + } +} + +@description('Azure Monitor Private Link Scope') +module ampls 'modules/ampls.bicep' = { + name: 'ampls-${timestamp}' + params: { + environmentName: environmentName + location: location + privateDnsZones: zonesAmpls + project: project + resourceSuffix: resourceSuffix + subnetId: '${vnetId}/subnets/ops' + } +} + +@description('App Configuration') +module appConfig 'modules/appConfig.bicep' = { + dependsOn: [ uaiAppConfigRoleAssignments ] + name: 'appConfig-${timestamp}' + params: { + administratorObjectId: administratorObjectId + administratorPrincipalType: administratorPrincipalType + actionGroupId: actionGroup.outputs.id + location: location + logAnalyticWorkspaceId: logAnalytics.outputs.id + privateDnsZones: filter(dnsZones.outputs.ids, (zone) => zone.key == 'configuration_stores') + resourceSuffix: resourceSuffix + subnetId: '${vnetId}/subnets/ops' + tags: tags + uaiId: uaiAppConfig.id + vaultName: keyVault.outputs.name + } +} + +@description('Application Insights') +module applicationInights 'modules/applicationInsights.bicep' = { + name: 'appInsights-${timestamp}' + params: { + amplsName: ampls.outputs.name + environmentName: environmentName + location: location + logAnalyticWorkspaceId: logAnalytics.outputs.id + project: project + resourceSuffix: resourceSuffix + tags: tags + } + dependsOn: [ keyVault ] +} + +@description('Azure Container Registry') +module containerRegistry 'modules/containerRegistry.bicep' = { + name: 'containerRegistry-${timestamp}' + params: { + agentPoolSubnetId: '${vnetId}/subnets/ops' + location: location + logAnalyticWorkspaceId: logAnalytics.outputs.id + privateDnsZones: zonesRegistry + resourceSuffix: resourceSuffix + subnetId: '${vnetId}/subnets/ops' + tags: tags + } +} + +// @description('Azure Managed Grafana') +// module grafana 'modules/grafana.bicep' = { +// name: 'grafana-${timestamp}' +// params: { +// azureMonitorWorkspaceResourceId: monitorWorkspace.outputs.id +// location: location +// privateDnsZones: filter(privateDnsZones, (zone) => zone.key == 'grafana') +// resourceSuffix: resourceSuffix +// subnetId: '${vnetId}/subnets/ops' +// tags: tags +// } +// } + +@description('Key Vault') +module keyVault 'modules/keyVault.bicep' = { + name: 'keyVault-${timestamp}' + params: { + actionGroupId: actionGroup.outputs.id + administratorObjectId: administratorObjectId + administratorPrincipalType: administratorPrincipalType + allowAzureServices: true + location: location + logAnalyticWorkspaceId: logAnalytics.outputs.id + privateDnsZones: filter(dnsZones.outputs.ids, (zone) => zone.key == 'vault') + resourceSuffix: resourceSuffix + subnetId: '${vnetId}/subnets/ops' + tags: tags + } +} + +@description('Log Analytics') +module logAnalytics 'modules/logAnalytics.bicep' = { + name: 'logAnalytics-${timestamp}' + params: { + actionGroupId: actionGroup.outputs.id + environmentName: environmentName + location: location + project: project + resourceSuffix: resourceSuffix + + ampls: { + id: ampls.outputs.id + name: ampls.outputs.name + } + } +} + +@description('Azure Monitor Workspace') +module monitorWorkspace 'modules/monitorWorksapce.bicep' = { + name: 'monitorWorkspace-${timestamp}' + params: { + location: location + privateDnsZones: filter(dnsZones.outputs.ids, (zone) => zone.key == 'prometheusMetrics') + resourceSuffix: resourceSuffix + subnetId: '${vnetId}/subnets/ops' + tags: tags + } +} + +// See: https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles +module uaiAppConfigRoleAssignments 'modules/utility/roleAssignments.bicep' = { + name: 'uaiAppConfigRoleAssignments-${timestamp}' + params: { + principalId: uaiAppConfig.properties.principalId + roleDefinitionIds: { + 'Key Vault Crypto Service Encryption User': 'e147488a-f6f5-4113-8e2d-b22465e65bf6' + } + } +} + +@description('Storage Account') +module storage 'modules/storageAccount.bicep' = { + name: 'storage-${timestamp}' + params: { + actionGroupId: actionGroup.outputs.id + location: location + logAnalyticWorkspaceId: logAnalytics.outputs.id + privateDnsZones: zonesStorage + resourceSuffix: resourceSuffix + subnetId: '${vnetId}/subnets/ops' + tags: tags + } + dependsOn: [ keyVault ] +} + +@description('Placeholder configuration setting for CSV file') +module csvFileSecret 'modules/kvSecret.bicep' = { + name: 'csvFileSecret-${timestamp}' + params: { + kvName: kvName + secretName: 'foundationallm-langchain-csvfile-url' + secretValue: 'FIXME' + tags: tags + } + dependsOn: [ keyVault ] +} + +@description('Placeholder configuration setting for Test DB Password') +module dbPasswdSecret 'modules/kvSecret.bicep' = { + name: 'dbPasswdSecret-${timestamp}' + params: { + kvName: kvName + secretName: 'foundationallm-langchain-sqldatabase-testdb-password' + secretValue: 'FIXME' + tags: tags + } + dependsOn: [ keyVault ] +} diff --git a/deploy/starter/config/appconfig.template.json b/deploy/starter/config/appconfig.template.json index c2511fcc00..9cfa52d615 100644 --- a/deploy/starter/config/appconfig.template.json +++ b/deploy/starter/config/appconfig.template.json @@ -321,6 +321,13 @@ "key": "FoundationaLLM:APIs:VectorizationWorker:APIKey", "value": "vectorization-job-apikey" }, + { + "keyVault": true, + "featureFlag": false, + "isJson": false, + "key": "FoundationaLLM:APIs:VectorizationWorker:APIUrl", + "value": "WHYDOESTHISEXIST" + }, { "keyVault": true, "featureFlag": false, diff --git a/deploy/starter/infra/shared/storage.bicep b/deploy/starter/infra/shared/storage.bicep index 6505959d97..5483d9972a 100644 --- a/deploy/starter/infra/shared/storage.bicep +++ b/deploy/starter/infra/shared/storage.bicep @@ -84,15 +84,17 @@ resource keyvault 'Microsoft.KeyVault/vaults@2023-02-01' existing = { name: keyvaultName } -resource storageConnectionString 'Microsoft.KeyVault/vaults/secrets@2023-02-01' = { - name: 'storage-connection' - parent: keyvault - tags: tags - properties: { - value: 'DefaultEndpointsProtocol=https;AccountName=${name};AccountKey=${storage.listKeys().keys[0].value};EndpointSuffix=core.windows.net' +resource storageConnectionString 'Microsoft.KeyVault/vaults/secrets@2023-02-01' = [ + for secretName in secretNames: { + name: secretName + parent: keyvault + tags: tags + properties: { + value: 'DefaultEndpointsProtocol=https;AccountName=${name};AccountKey=${storage.listKeys().keys[0].value};EndpointSuffix=core.windows.net' + } } -} +] -output connectionSecretName string = storageConnectionString.name -output connectionSecretRef string = storageConnectionString.properties.secretUri +output connectionSecretName string = storageConnectionString[0].name +output connectionSecretRef string = storageConnectionString[0].properties.secretUri output name string = storage.name From b53700044de4dd7b722ab52394bd6fb8965a51cb Mon Sep 17 00:00:00 2001 From: joelhulen Date: Thu, 22 Feb 2024 11:58:54 -0500 Subject: [PATCH 2/7] Remove old Key Vault secret name for the LangChain API Key --- src/dotnet/Common/Constants/KeyVaultSecretNames.cs | 4 ---- src/dotnet/Configuration/Catalog/AppConfigurationCatalog.cs | 4 ++-- src/dotnet/Configuration/Catalog/KeyVaultSecretsCatalog.cs | 5 ----- 3 files changed, 2 insertions(+), 11 deletions(-) diff --git a/src/dotnet/Common/Constants/KeyVaultSecretNames.cs b/src/dotnet/Common/Constants/KeyVaultSecretNames.cs index 768775219e..5ef9fe5764 100644 --- a/src/dotnet/Common/Constants/KeyVaultSecretNames.cs +++ b/src/dotnet/Common/Constants/KeyVaultSecretNames.cs @@ -114,10 +114,6 @@ public static class KeyVaultSecretNames /// public const string FoundationaLLM_LangChain_SQLDatabase_Testdb_Password = "foundationallm-langchain-sqldatabase-testdb-password"; /// - /// The foundationallm-langchainapi-key Key Vault secret name. - /// - public const string FoundationaLLM_LangChainAPI_Key = "foundationallm-langchainapi-key"; - /// /// The foundationallm-management-entra-clientsecret Key Vault secret name. /// public const string FoundationaLLM_Management_Entra_ClientSecret = "foundationallm-management-entra-clientsecret"; diff --git a/src/dotnet/Configuration/Catalog/AppConfigurationCatalog.cs b/src/dotnet/Configuration/Catalog/AppConfigurationCatalog.cs index d42ae81f3f..c789809f6e 100644 --- a/src/dotnet/Configuration/Catalog/AppConfigurationCatalog.cs +++ b/src/dotnet/Configuration/Catalog/AppConfigurationCatalog.cs @@ -1421,9 +1421,9 @@ public static class AppConfigurationCatalog new( key: Common.Constants.AppConfigurationKeys.FoundationaLLM_LangChainAPI_Key, minimumVersion: "0.3.0", - defaultValue: "Key Vault secret name: `foundationallm-langchainapi-key`", + defaultValue: "Key Vault secret name: `foundationallm-apis-langchainapi-apikey`", description: "This is a Key Vault reference.", - keyVaultSecretName: Common.Constants.KeyVaultSecretNames.FoundationaLLM_LangChainAPI_Key, + keyVaultSecretName: Common.Constants.KeyVaultSecretNames.FoundationaLLM_APIs_LangChainAPI_APIKey, contentType: "text/plain", sampleObject: null ) diff --git a/src/dotnet/Configuration/Catalog/KeyVaultSecretsCatalog.cs b/src/dotnet/Configuration/Catalog/KeyVaultSecretsCatalog.cs index 6c5565b37c..9e9e55d7f8 100644 --- a/src/dotnet/Configuration/Catalog/KeyVaultSecretsCatalog.cs +++ b/src/dotnet/Configuration/Catalog/KeyVaultSecretsCatalog.cs @@ -180,11 +180,6 @@ public static class KeyVaultSecretsCatalog minimumVersion: "0.3.0", description: "" ), - new( - secretName: Common.Constants.KeyVaultSecretNames.FoundationaLLM_LangChainAPI_Key, - minimumVersion: "0.3.0", - description: "" - ), new( secretName: Common.Constants.KeyVaultSecretNames.FoundationaLLM_OpenAI_Api_Key, minimumVersion: "0.3.0", From be3002baa4983b25b82ab7d4fbd1abbd7f59b3bd Mon Sep 17 00:00:00 2001 From: joelhulen Date: Thu, 22 Feb 2024 14:59:08 -0500 Subject: [PATCH 3/7] Add environment variables for local dev and alter logging for CoreWorker --- src/dotnet/CoreWorker/CoreWorker.csproj | 1 - src/dotnet/CoreWorker/Program.cs | 19 +------------------ .../CoreWorker/Properties/launchSettings.json | 3 ++- .../Properties/launchSettings.json | 14 +++++++++----- .../Properties/launchSettings.json | 8 +++----- 5 files changed, 15 insertions(+), 30 deletions(-) diff --git a/src/dotnet/CoreWorker/CoreWorker.csproj b/src/dotnet/CoreWorker/CoreWorker.csproj index 7c4875141f..5062858a27 100644 --- a/src/dotnet/CoreWorker/CoreWorker.csproj +++ b/src/dotnet/CoreWorker/CoreWorker.csproj @@ -14,7 +14,6 @@ - diff --git a/src/dotnet/CoreWorker/Program.cs b/src/dotnet/CoreWorker/Program.cs index b3c5f4242a..9432bcfe2a 100644 --- a/src/dotnet/CoreWorker/Program.cs +++ b/src/dotnet/CoreWorker/Program.cs @@ -1,12 +1,9 @@ using Azure.Identity; -using Azure.Monitor.OpenTelemetry.AspNetCore; using FoundationaLLM.Common.Constants; using FoundationaLLM.Core.Interfaces; using FoundationaLLM.Core.Models.Configuration; using FoundationaLLM.Core.Services; using FoundationaLLM.Core.Worker; -using OpenTelemetry.Resources; -using OpenTelemetry.Trace; var builder = Host.CreateApplicationBuilder(args); @@ -32,25 +29,11 @@ builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddHostedService(); - -// Add the OpenTelemetry telemetry service and send telemetry data to Azure Monitor. -builder.Services.AddOpenTelemetry().UseAzureMonitor(options => +builder.Services.AddApplicationInsightsTelemetryWorkerService(options => { options.ConnectionString = builder.Configuration[AppConfigurationKeys.FoundationaLLM_CoreWorker_AppInsightsConnectionString]; }); -// Create a dictionary of resource attributes. -var resourceAttributes = new Dictionary { - { "service.name", "CoreWorker" }, - { "service.namespace", "FoundationaLLM" }, - { "service.instance.id", Guid.NewGuid().ToString() } -}; - -// Configure the OpenTelemetry tracer provider to add the resource attributes to all traces. -builder.Services.ConfigureOpenTelemetryTracerProvider((sp, builder) => - builder.ConfigureResource(resourceBuilder => - resourceBuilder.AddAttributes(resourceAttributes))); - var host = builder.Build(); host.Run(); diff --git a/src/dotnet/CoreWorker/Properties/launchSettings.json b/src/dotnet/CoreWorker/Properties/launchSettings.json index 09702813c7..1b37cb386d 100644 --- a/src/dotnet/CoreWorker/Properties/launchSettings.json +++ b/src/dotnet/CoreWorker/Properties/launchSettings.json @@ -3,7 +3,8 @@ "CoreWorker": { "commandName": "Project", "environmentVariables": { - "DOTNET_ENVIRONMENT": "Development" + "DOTNET_ENVIRONMENT": "Development", + "HOSTNAME": "CoreWorker" }, "dotnetRunMessages": true }, diff --git a/src/dotnet/VectorizationAPI/Properties/launchSettings.json b/src/dotnet/VectorizationAPI/Properties/launchSettings.json index 39e3603d0f..a64fd5a334 100644 --- a/src/dotnet/VectorizationAPI/Properties/launchSettings.json +++ b/src/dotnet/VectorizationAPI/Properties/launchSettings.json @@ -5,7 +5,8 @@ "launchBrowser": true, "launchUrl": "swagger", "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" + "ASPNETCORE_ENVIRONMENT": "Development", + "HOSTNAME": "VectorizationAPI" }, "dotnetRunMessages": true, "applicationUrl": "http://localhost:5144" @@ -15,7 +16,8 @@ "launchBrowser": true, "launchUrl": "swagger", "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" + "ASPNETCORE_ENVIRONMENT": "Development", + "HOSTNAME": "VectorizationAPI" }, "dotnetRunMessages": true, "applicationUrl": "https://localhost:7047;http://localhost:5144" @@ -25,7 +27,8 @@ "launchBrowser": true, "launchUrl": "swagger", "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" + "ASPNETCORE_ENVIRONMENT": "Development", + "HOSTNAME": "VectorizationAPI" } }, "Docker": { @@ -34,7 +37,8 @@ "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger", "environmentVariables": { "ASPNETCORE_HTTPS_PORTS": "8081", - "ASPNETCORE_HTTP_PORTS": "8080" + "ASPNETCORE_HTTP_PORTS": "8080", + "HOSTNAME": "VectorizationAPI" }, "publishAllPorts": true, "useSSL": true @@ -49,4 +53,4 @@ "sslPort": 44354 } } -} \ No newline at end of file +} diff --git a/src/dotnet/VectorizationWorker/Properties/launchSettings.json b/src/dotnet/VectorizationWorker/Properties/launchSettings.json index cc807522a4..705be2081d 100644 --- a/src/dotnet/VectorizationWorker/Properties/launchSettings.json +++ b/src/dotnet/VectorizationWorker/Properties/launchSettings.json @@ -3,12 +3,10 @@ "VectorizationWorker": { "commandName": "Project", "environmentVariables": { - "DOTNET_ENVIRONMENT": "Development" + "DOTNET_ENVIRONMENT": "Development", + "HOSTNAME": "VectorizationWorker" }, "dotnetRunMessages": true - }, - "Docker": { - "commandName": "Docker" } } -} \ No newline at end of file +} From ab945f3bac0057b5bf9869b9906307e14609cc63 Mon Sep 17 00:00:00 2001 From: Matthew Alan Gray Date: Thu, 22 Feb 2024 15:39:17 -0600 Subject: [PATCH 4/7] Updating appconfig generation template and adding in missing settings and secrets --- deploy/starter/azd-hooks/postprovision.sh | 21 +- deploy/starter/config/appconfig.template.json | 2735 +++++++++-------- deploy/starter/infra/shared/eventgrid.bicep | 2 +- deploy/starter/infra/shared/storage.bicep | 1 + 4 files changed, 1379 insertions(+), 1380 deletions(-) diff --git a/deploy/starter/azd-hooks/postprovision.sh b/deploy/starter/azd-hooks/postprovision.sh index fa81824fe1..afee6a7580 100755 --- a/deploy/starter/azd-hooks/postprovision.sh +++ b/deploy/starter/azd-hooks/postprovision.sh @@ -30,26 +30,7 @@ export FOUNDATIONALLM_VECTORIZATION_WORKER_EVENT_GRID_PROFILE=`cat ./config/vect envsubst < ./config/appconfig.template.json > ./config/appconfig.json -jq -c '.[]' ./config/appconfig.json | while read i; do - keyVault=`echo $i | jq '.keyVault'` - featureFlag=`echo $i | jq '.featureFlag'` - isJson=`echo $i | jq '.isJson'` - key=`echo $i | jq -r '.key'` - value=`echo $i | jq -r '.value'` - - if [ $keyVault == 'true' ]; then - cmd="az appconfig kv set-keyvault --key $key --name $AZURE_APP_CONFIG_NAME --secret-identifier ${AZURE_KEY_VAULT_ENDPOINT}secrets/$value --yes" - elif [ $featureFlag == 'true' ]; then - cmd="az appconfig feature set --feature $value --key $key --name $AZURE_APP_CONFIG_NAME --yes" - elif [ $isJson == 'true' ]; then - cmd="az appconfig kv set --key $key --name $AZURE_APP_CONFIG_NAME --content-type application/json --yes --value '$value'" - else - cmd="az appconfig kv set --key $key --name $AZURE_APP_CONFIG_NAME --value '$value' --yes" - fi - - echo $cmd - eval $cmd Date: Thu, 22 Feb 2024 16:09:54 -0600 Subject: [PATCH 5/7] Adding change to build and push to 0.4.0-prerelease container registry --- .github/workflows/release-docker-image.yml | 190 ++++++++++----------- 1 file changed, 95 insertions(+), 95 deletions(-) diff --git a/.github/workflows/release-docker-image.yml b/.github/workflows/release-docker-image.yml index 575a063090..b1b4d7dc7f 100644 --- a/.github/workflows/release-docker-image.yml +++ b/.github/workflows/release-docker-image.yml @@ -1,95 +1,95 @@ -name: Docker Image Build and Push - -on: - workflow_call: - inputs: - registry: - type: string - default: ghcr.io - image: - type: string - required: true - context: - type: string - required: true - dockerfile: - type: string - required: true - -jobs: - docker_image_build_and_push: - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - steps: - - name: Fetching the Latest Release Tag number - id: releaseVersion - run: | - GIT_RELEASE=$(echo ${{ github.ref_name }} | cut -d'/' -f 2) - echo "GIT_RELEASE=$GIT_RELEASE" >> $GITHUB_ENV - echo "release_tag: Latest Tag is : $GIT_RELEASE" - echo "release_tag=$GIT_RELEASE" >> $GITHUB_OUTPUT - - - name: Checkout code - uses: actions/checkout@v2 - - - name: Log in to the Container registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@v5 - with: - images: | - ghcr.io/${{ github.repository }}/${{ inputs.image }} - tags: | - type=semver,pattern={{version}},value=${{ steps.releaseVersion.outputs.release_tag }} - type=sha,format=long - - - name: Build and push Docker images - uses: docker/build-push-action@v5 - with: - context: ${{ inputs.context }} - file: ${{ inputs.dockerfile }} - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - push: true - build-args: | - FOUNDATIONALLM_VERSION=${{ steps.releaseVersion.outputs.release_tag }} - - helm_chart_package_and_push: - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - steps: - - name: Fetching the Latest Release Tag number - id: releaseVersion - run: | - GIT_RELEASE=$(echo ${{ github.ref_name }} | cut -d'/' -f 2) - echo "GIT_RELEASE=$GIT_RELEASE" >> $GITHUB_ENV - echo "release_tag: Latest Tag is : $GIT_RELEASE" - echo "release_tag=$GIT_RELEASE" >> $GITHUB_OUTPUT - - - name: Checkout code - uses: actions/checkout@v2 - - - name: Log in to the Container registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Helm Chart Update, Package, and Push - run: | - cd ./deploy/common/helm/${{ inputs.image }} - sed -i "s/version\: 0\.0\.0/version\: ${{ steps.releaseVersion.outputs.release_tag }}/" Chart.yaml - sed -i "s/tag\: latest/tag\: ${{ steps.releaseVersion.outputs.release_tag }}/" values.yaml - helm package . --app-version ${{ steps.releaseVersion.outputs.release_tag }} - helm push ${{ inputs.image }}-${{ steps.releaseVersion.outputs.release_tag }}.tgz oci://ghcr.io/${{ github.repository }}/helm \ No newline at end of file +name: Docker Image Build and Push + +on: + workflow_call: + inputs: + registry: + type: string + default: ghcr.io + image: + type: string + required: true + context: + type: string + required: true + dockerfile: + type: string + required: true + +jobs: + docker_image_build_and_push: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - name: Fetching the Latest Release Tag number + id: releaseVersion + run: | + GIT_RELEASE=$(echo ${{ github.ref_name }} | cut -d'/' -f 2) + echo "GIT_RELEASE=$GIT_RELEASE" >> $GITHUB_ENV + echo "release_tag: Latest Tag is : $GIT_RELEASE" + echo "release_tag=$GIT_RELEASE" >> $GITHUB_OUTPUT + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: | + ghcr.io/solliancenet/fllm-0.4.0-prerelease/${{ inputs.image }} + tags: | + type=semver,pattern={{version}},value=${{ steps.releaseVersion.outputs.release_tag }} + type=sha,format=long + + - name: Build and push Docker images + uses: docker/build-push-action@v5 + with: + context: ${{ inputs.context }} + file: ${{ inputs.dockerfile }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + push: true + build-args: | + FOUNDATIONALLM_VERSION=${{ steps.releaseVersion.outputs.release_tag }} + + helm_chart_package_and_push: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - name: Fetching the Latest Release Tag number + id: releaseVersion + run: | + GIT_RELEASE=$(echo ${{ github.ref_name }} | cut -d'/' -f 2) + echo "GIT_RELEASE=$GIT_RELEASE" >> $GITHUB_ENV + echo "release_tag: Latest Tag is : $GIT_RELEASE" + echo "release_tag=$GIT_RELEASE" >> $GITHUB_OUTPUT + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Helm Chart Update, Package, and Push + run: | + cd ./deploy/common/helm/${{ inputs.image }} + sed -i "s/version\: 0\.0\.0/version\: ${{ steps.releaseVersion.outputs.release_tag }}/" Chart.yaml + sed -i "s/tag\: latest/tag\: ${{ steps.releaseVersion.outputs.release_tag }}/" values.yaml + helm package . --app-version ${{ steps.releaseVersion.outputs.release_tag }} + helm push ${{ inputs.image }}-${{ steps.releaseVersion.outputs.release_tag }}.tgz oci://ghcr.io/solliancenet/fllm-0.4.0-prerelease/helm \ No newline at end of file From 9928277f6103e4dcfe530f584bdffbbda85f6151 Mon Sep 17 00:00:00 2001 From: Matthew Alan Gray Date: Thu, 22 Feb 2024 16:36:51 -0600 Subject: [PATCH 6/7] Adding changes that pull from public container registry --- deploy/starter/azure.yaml | 245 ++++++++++++----------- deploy/starter/config/vectorization.json | 2 +- 2 files changed, 131 insertions(+), 116 deletions(-) diff --git a/deploy/starter/azure.yaml b/deploy/starter/azure.yaml index ad8d6e4a23..6c60278840 100644 --- a/deploy/starter/azure.yaml +++ b/deploy/starter/azure.yaml @@ -1,115 +1,130 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/Azure/azure-dev/main/schemas/v1.0/azure.yaml.json - -name: foundationallm -metadata: - template: azd-init@1.5.1 -hooks: - postprovision: - shell: sh - continueOnError: false - interactive: true - run: azd-hooks/postprovision.sh -services: - agent-factory-api: - project: ../../src/dotnet/AgentFactoryAPI - host: containerapp - language: dotnet - docker: - context: ../../ - path: Dockerfile - agent-hub-api: - project: ../../src/python/AgentHubAPI - host: containerapp - language: python - docker: - context: ../ - path: Dockerfile - core-api: - project: ../../src/dotnet/CoreAPI - host: containerapp - language: dotnet - docker: - context: ../../ - path: Dockerfile - core-job: - project: ../../src/dotnet/CoreWorker - host: containerapp - language: dotnet - docker: - context: ../../ - path: Dockerfile - data-source-hub-api: - project: ../../src/python/DataSourceHubAPI - host: containerapp - language: python - docker: - context: ../ - path: Dockerfile - gatekeeper-api: - project: ../../src/dotnet/GatekeeperAPI - host: containerapp - language: dotnet - docker: - context: ../../ - path: Dockerfile - gatekeeper-integration-api: - project: ../../src/python/GatekeeperIntegrationAPI - host: containerapp - language: python - docker: - context: ../ - path: Dockerfile - langchain-api: - project: ../../src/python/LangChainAPI - host: containerapp - language: python - docker: - context: ../ - path: Dockerfile - management-api: - project: ../../src/dotnet/ManagementAPI - host: containerapp - language: dotnet - docker: - context: ../../ - path: Dockerfile - management-ui: - project: ../../src/UI/ManagementPortal - host: containerapp - language: ts - docker: - path: Dockerfile - prompt-hub-api: - project: ../../src/python/PromptHubAPI - host: containerapp - language: python - docker: - context: ../ - path: Dockerfile - semantic-kernel-api: - project: ../../src/dotnet/SemanticKernelAPI - host: containerapp - language: dotnet - docker: - context: ../../ - path: Dockerfile - chat-ui: - project: ../../src/UI/UserPortal - host: containerapp - language: js - docker: - path: Dockerfile - vectorization-api: - project: ../../src/dotnet/VectorizationAPI - host: containerapp - language: dotnet - docker: - context: ../../ - path: Dockerfile - vectorization-job: - project: ../../src/dotnet/VectorizationWorker - host: containerapp - language: dotnet - docker: - context: ../../ - path: Dockerfile +# yaml-language-server: $schema=https://raw.githubusercontent.com/Azure/azure-dev/main/schemas/v1.0/azure.yaml.json + +name: foundationallm +metadata: + template: azd-init@1.5.1 +hooks: + postprovision: + shell: sh + continueOnError: false + interactive: true + run: azd-hooks/postprovision.sh +services: + agent-factory-api: + image: ghcr.io/solliancenet/fllm-0.4.0-prerelease/agent-factory-api:sha-a1362cc74806fd9d58dd80270aed0ae91d34731d + # project: ../../src/dotnet/AgentFactoryAPI + host: containerapp + # language: dotnet + # docker: + # context: ../../ + # path: Dockerfile + agent-hub-api: + image: ghcr.io/solliancenet/fllm-0.4.0-prerelease/agent-hub-api:sha-a1362cc74806fd9d58dd80270aed0ae91d34731d + # project: ../../src/python/AgentHubAPI + host: containerapp + # language: python + # docker: + # context: ../ + # path: Dockerfile + core-api: + image: ghcr.io/solliancenet/fllm-0.4.0-prerelease/core-api:sha-a1362cc74806fd9d58dd80270aed0ae91d34731d + # project: ../../src/dotnet/CoreAPI + host: containerapp + # language: dotnet + # docker: + # context: ../../ + # path: Dockerfile + core-job: + image: ghcr.io/solliancenet/fllm-0.4.0-prerelease/core-job:sha-a1362cc74806fd9d58dd80270aed0ae91d34731d + # project: ../../src/dotnet/CoreWorker + host: containerapp + # language: dotnet + # docker: + # context: ../../ + # path: Dockerfile + data-source-hub-api: + image: ghcr.io/solliancenet/fllm-0.4.0-prerelease/data-source-hub-api:sha-a1362cc74806fd9d58dd80270aed0ae91d34731d + # project: ../../src/python/DataSourceHubAPI + host: containerapp + # language: python + # docker: + # context: ../ + # path: Dockerfile + gatekeeper-api: + image: ghcr.io/solliancenet/fllm-0.4.0-prerelease/gatekeeper-api:sha-a1362cc74806fd9d58dd80270aed0ae91d34731d + # project: ../../src/dotnet/GatekeeperAPI + host: containerapp + # language: dotnet + # docker: + # context: ../../ + # path: Dockerfile + gatekeeper-integration-api: + image: ghcr.io/solliancenet/fllm-0.4.0-prerelease/gatekeeper-integration-api:sha-a1362cc74806fd9d58dd80270aed0ae91d34731d + # project: ../../src/python/GatekeeperIntegrationAPI + host: containerapp + # language: python + # docker: + # context: ../ + # path: Dockerfile + langchain-api: + image: ghcr.io/solliancenet/fllm-0.4.0-prerelease/langchain-api:sha-a1362cc74806fd9d58dd80270aed0ae91d34731d + # project: ../../src/python/LangChainAPI + host: containerapp + # language: python + # docker: + # context: ../ + # path: Dockerfile + management-api: + image: ghcr.io/solliancenet/fllm-0.4.0-prerelease/management-api:sha-a1362cc74806fd9d58dd80270aed0ae91d34731d + # project: ../../src/dotnet/ManagementAPI + host: containerapp + # language: dotnet + # docker: + # context: ../../ + # path: Dockerfile + management-ui: + image: ghcr.io/solliancenet/fllm-0.4.0-prerelease/management-ui:sha-a1362cc74806fd9d58dd80270aed0ae91d34731d + # project: ../../src/UI/ManagementPortal + host: containerapp + # language: ts + # docker: + # path: Dockerfile + prompt-hub-api: + image: ghcr.io/solliancenet/fllm-0.4.0-prerelease/prompt-hub-api:sha-a1362cc74806fd9d58dd80270aed0ae91d34731d + # project: ../../src/python/PromptHubAPI + host: containerapp + # language: python + # docker: + # context: ../ + # path: Dockerfile + semantic-kernel-api: + image: ghcr.io/solliancenet/fllm-0.4.0-prerelease/semantic-kernel-api:sha-a1362cc74806fd9d58dd80270aed0ae91d34731d + # project: ../../src/dotnet/SemanticKernelAPI + host: containerapp + # language: dotnet + # docker: + # context: ../../ + # path: Dockerfile + chat-ui: + image: ghcr.io/solliancenet/fllm-0.4.0-prerelease/chat-ui:sha-a1362cc74806fd9d58dd80270aed0ae91d34731d + # project: ../../src/UI/UserPortal + host: containerapp + # language: js + # docker: + # path: Dockerfile + vectorization-api: + image: ghcr.io/solliancenet/fllm-0.4.0-prerelease/vectorization-api:sha-a1362cc74806fd9d58dd80270aed0ae91d34731d + # project: ../../src/dotnet/VectorizationAPI + host: containerapp + # language: dotnet + # docker: + # context: ../../ + # path: Dockerfile + vectorization-job: + image: ghcr.io/solliancenet/fllm-0.4.0-prerelease/vectorization-job:sha-a1362cc74806fd9d58dd80270aed0ae91d34731d + # project: ../../src/dotnet/VectorizationWorker + host: containerapp + # language: dotnet + # docker: + # context: ../../ + # path: Dockerfile diff --git a/deploy/starter/config/vectorization.json b/deploy/starter/config/vectorization.json index 8e8c0c7f1a..f3a83ddbb1 100644 --- a/deploy/starter/config/vectorization.json +++ b/deploy/starter/config/vectorization.json @@ -1 +1 @@ -{\\\"QueuingEngine\\\":\\\"AzureStorageQueue\\\",\\\"RequestManagers\\\":[{\\\"RequestSourceName\\\":\\\"extract\\\",\\\"MaxHandlerInstances\\\":1},{\\\"RequestSourceName\\\":\\\"partition\\\",\\\"MaxHandlerInstances\\\":1},{\\\"RequestSourceName\\\":\\\"embed\\\",\\\"MaxHandlerInstances\\\":1},{\\\"RequestSourceName\\\":\\\"index\\\",\\\"MaxHandlerInstances\\\":1}],\\\"RequestSources\\\":[{\\\"Name\\\":\\\"extract\\\",\\\"ConnectionConfigurationName\\\":\\\"Extract:ConnectionString\\\",\\\"VisibilityTimeoutSeconds\\\":120},{\\\"Name\\\":\\\"partition\\\",\\\"ConnectionConfigurationName\\\":\\\"Partition:ConnectionString\\\",\\\"VisibilityTimeoutSeconds\\\":120},{\\\"Name\\\":\\\"embed\\\",\\\"ConnectionConfigurationName\\\":\\\"Embed:ConnectionString\\\",\\\"VisibilityTimeoutSeconds\\\":120},{\\\"Name\\\":\\\"index\\\",\\\"ConnectionConfigurationName\\\":\\\"Index:ConnectionString\\\",\\\"VisibilityTimeoutSeconds\\\":120}]} \ No newline at end of file +{\\\"RequestManagers\\\":[{\\\"RequestSourceName\\\":\\\"extract\\\",\\\"MaxHandlerInstances\\\":1},{\\\"RequestSourceName\\\":\\\"partition\\\",\\\"MaxHandlerInstances\\\":1},{\\\"RequestSourceName\\\":\\\"embed\\\",\\\"MaxHandlerInstances\\\":1},{\\\"RequestSourceName\\\":\\\"index\\\",\\\"MaxHandlerInstances\\\":1}],\\\"RequestSources\\\":[{\\\"Name\\\":\\\"extract\\\",\\\"ConnectionConfigurationName\\\":\\\"Extract:ConnectionString\\\",\\\"VisibilityTimeoutSeconds\\\":600},{\\\"Name\\\":\\\"partition\\\",\\\"ConnectionConfigurationName\\\":\\\"Partition:ConnectionString\\\",\\\"VisibilityTimeoutSeconds\\\":600},{\\\"Name\\\":\\\"embed\\\",\\\"ConnectionConfigurationName\\\":\\\"Embed:ConnectionString\\\",\\\"VisibilityTimeoutSeconds\\\":600},{\\\"Name\\\":\\\"index\\\",\\\"ConnectionConfigurationName\\\":\\\"Index:ConnectionString\\\",\\\"VisibilityTimeoutSeconds\\\":600}],\\\"QueuingEngine\\\":\\\"AzureStorageQueue\\\"} \ No newline at end of file From b446da914d7053bc3c2ecec74e66214b7850b60c Mon Sep 17 00:00:00 2001 From: Matthew Alan Gray Date: Thu, 22 Feb 2024 17:06:53 -0600 Subject: [PATCH 7/7] Reverting changes to build experimental changes for testing 0.4.0 public image usage in AZD --- .github/workflows/release-docker-image.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-docker-image.yml b/.github/workflows/release-docker-image.yml index b1b4d7dc7f..84edefbdb1 100644 --- a/.github/workflows/release-docker-image.yml +++ b/.github/workflows/release-docker-image.yml @@ -46,7 +46,7 @@ jobs: uses: docker/metadata-action@v5 with: images: | - ghcr.io/solliancenet/fllm-0.4.0-prerelease/${{ inputs.image }} + ghcr.io/${{ github.repository }}/${{ inputs.image }} tags: | type=semver,pattern={{version}},value=${{ steps.releaseVersion.outputs.release_tag }} type=sha,format=long @@ -92,4 +92,4 @@ jobs: sed -i "s/version\: 0\.0\.0/version\: ${{ steps.releaseVersion.outputs.release_tag }}/" Chart.yaml sed -i "s/tag\: latest/tag\: ${{ steps.releaseVersion.outputs.release_tag }}/" values.yaml helm package . --app-version ${{ steps.releaseVersion.outputs.release_tag }} - helm push ${{ inputs.image }}-${{ steps.releaseVersion.outputs.release_tag }}.tgz oci://ghcr.io/solliancenet/fllm-0.4.0-prerelease/helm \ No newline at end of file + helm push ${{ inputs.image }}-${{ steps.releaseVersion.outputs.release_tag }}.tgz oci://ghcr.io/${{ github.repository }}/helm \ No newline at end of file