diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c862d089..ef61c1de 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,7 +8,7 @@ on: env: DOTNET_VERSION: 6.0.x - BICEP_VERSION: 0.26.170 + BICEP_VERSION: 0.28.1 jobs: build: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index dd9afab2..4836b7db 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -6,7 +6,7 @@ on: env: DOTNET_VERSION: 6.0.x - BICEP_VERSION: 0.26.170 + BICEP_VERSION: 0.28.1 jobs: publish: diff --git a/KeyVault.Acmebot/KeyVault.Acmebot.csproj b/KeyVault.Acmebot/KeyVault.Acmebot.csproj index b2549ad1..0203f294 100644 --- a/KeyVault.Acmebot/KeyVault.Acmebot.csproj +++ b/KeyVault.Acmebot/KeyVault.Acmebot.csproj @@ -4,13 +4,13 @@ v4 - + - + diff --git a/azuredeploy.bicep b/azuredeploy.bicep index ebdf5724..0f2fdc01 100644 --- a/azuredeploy.bicep +++ b/azuredeploy.bicep @@ -75,6 +75,10 @@ var acmebotAppSettings = [ name: 'FUNCTIONS_EXTENSION_VERSION' value: '~4' } + { + name: 'FUNCTIONS_INPROC_NET8_ENABLED' + value: '1' + } { name: 'FUNCTIONS_WORKER_RUNTIME' value: 'dotnet' @@ -97,7 +101,7 @@ var acmebotAppSettings = [ } ] -resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = { +resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = { name: storageAccountName location: location kind: 'Storage' @@ -111,7 +115,7 @@ resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = { } } -resource appServicePlan 'Microsoft.Web/serverfarms@2023-01-01' = { +resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = { name: appServicePlanName location: location sku: { @@ -145,7 +149,7 @@ resource appInsights 'Microsoft.Insights/components@2020-02-02' = { } } -resource functionApp 'Microsoft.Web/sites@2023-01-01' = { +resource functionApp 'Microsoft.Web/sites@2023-12-01' = { name: functionAppName location: location kind: 'functionapp' @@ -158,7 +162,7 @@ resource functionApp 'Microsoft.Web/sites@2023-01-01' = { serverFarmId: appServicePlan.id siteConfig: { appSettings: concat(acmebotAppSettings, additionalAppSettings) - netFrameworkVersion: 'v6.0' + netFrameworkVersion: 'v8.0' ftpsState: 'Disabled' minTlsVersion: '1.2' scmMinTlsVersion: '1.2' diff --git a/azuredeploy.json b/azuredeploy.json index 31fc0c6e..691dd26a 100644 --- a/azuredeploy.json +++ b/azuredeploy.json @@ -4,8 +4,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.26.170.59819", - "templateHash": "5662418896052070318" + "version": "0.28.1.47646", + "templateHash": "14872192790547142580" } }, "parameters": { @@ -97,7 +97,7 @@ "resources": [ { "type": "Microsoft.Storage/storageAccounts", - "apiVersion": "2023-01-01", + "apiVersion": "2023-05-01", "name": "[variables('storageAccountName')]", "location": "[parameters('location')]", "kind": "Storage", @@ -112,7 +112,7 @@ }, { "type": "Microsoft.Web/serverfarms", - "apiVersion": "2023-01-01", + "apiVersion": "2023-12-01", "name": "[variables('appServicePlanName')]", "location": "[parameters('location')]", "sku": { @@ -152,7 +152,7 @@ }, { "type": "Microsoft.Web/sites", - "apiVersion": "2023-01-01", + "apiVersion": "2023-12-01", "name": "[variables('functionAppName')]", "location": "[parameters('location')]", "kind": "functionapp", @@ -164,8 +164,8 @@ "httpsOnly": true, "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]", "siteConfig": { - "appSettings": "[concat(createArray(createObject('name', 'APPLICATIONINSIGHTS_CONNECTION_STRING', 'value', format('InstrumentationKey={0};EndpointSuffix={1}', reference(resourceId('Microsoft.Insights/components', variables('appInsightsName')), '2020-02-02').InstrumentationKey, variables('appInsightsEndpoints')[environment().name])), createObject('name', 'AzureWebJobsStorage', 'value', format('DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1};EndpointSuffix={2}', variables('storageAccountName'), listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2023-01-01').keys[0].value, environment().suffixes.storage)), createObject('name', 'WEBSITE_CONTENTAZUREFILECONNECTIONSTRING', 'value', format('DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1};EndpointSuffix={2}', variables('storageAccountName'), listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2023-01-01').keys[0].value, environment().suffixes.storage)), createObject('name', 'WEBSITE_CONTENTSHARE', 'value', toLower(variables('functionAppName'))), createObject('name', 'WEBSITE_RUN_FROM_PACKAGE', 'value', 'https://stacmebotprod.blob.core.windows.net/keyvault-acmebot/v4/latest.zip'), createObject('name', 'FUNCTIONS_EXTENSION_VERSION', 'value', '~4'), createObject('name', 'FUNCTIONS_WORKER_RUNTIME', 'value', 'dotnet'), createObject('name', 'Acmebot:Contacts', 'value', parameters('mailAddress')), createObject('name', 'Acmebot:Endpoint', 'value', parameters('acmeEndpoint')), createObject('name', 'Acmebot:VaultBaseUrl', 'value', if(parameters('createWithKeyVault'), format('https://{0}{1}', variables('keyVaultName'), environment().suffixes.keyvaultDns), parameters('keyVaultBaseUrl'))), createObject('name', 'Acmebot:Environment', 'value', environment().name)), parameters('additionalAppSettings'))]", - "netFrameworkVersion": "v6.0", + "appSettings": "[concat(createArray(createObject('name', 'APPLICATIONINSIGHTS_CONNECTION_STRING', 'value', format('InstrumentationKey={0};EndpointSuffix={1}', reference(resourceId('Microsoft.Insights/components', variables('appInsightsName')), '2020-02-02').InstrumentationKey, variables('appInsightsEndpoints')[environment().name])), createObject('name', 'AzureWebJobsStorage', 'value', format('DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1};EndpointSuffix={2}', variables('storageAccountName'), listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2023-05-01').keys[0].value, environment().suffixes.storage)), createObject('name', 'WEBSITE_CONTENTAZUREFILECONNECTIONSTRING', 'value', format('DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1};EndpointSuffix={2}', variables('storageAccountName'), listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2023-05-01').keys[0].value, environment().suffixes.storage)), createObject('name', 'WEBSITE_CONTENTSHARE', 'value', toLower(variables('functionAppName'))), createObject('name', 'WEBSITE_RUN_FROM_PACKAGE', 'value', 'https://stacmebotprod.blob.core.windows.net/keyvault-acmebot/v4/latest.zip'), createObject('name', 'FUNCTIONS_EXTENSION_VERSION', 'value', '~4'), createObject('name', 'FUNCTIONS_INPROC_NET8_ENABLED', 'value', '1'), createObject('name', 'FUNCTIONS_WORKER_RUNTIME', 'value', 'dotnet'), createObject('name', 'Acmebot:Contacts', 'value', parameters('mailAddress')), createObject('name', 'Acmebot:Endpoint', 'value', parameters('acmeEndpoint')), createObject('name', 'Acmebot:VaultBaseUrl', 'value', if(parameters('createWithKeyVault'), format('https://{0}{1}', variables('keyVaultName'), environment().suffixes.keyvaultDns), parameters('keyVaultBaseUrl'))), createObject('name', 'Acmebot:Environment', 'value', environment().name)), parameters('additionalAppSettings'))]", + "netFrameworkVersion": "v8.0", "ftpsState": "Disabled", "minTlsVersion": "1.2", "scmMinTlsVersion": "1.2", @@ -206,7 +206,7 @@ "name": "[guid(resourceId('Microsoft.KeyVault/vaults', variables('keyVaultName')), variables('functionAppName'), variables('roleDefinitionId'))]", "properties": { "roleDefinitionId": "[variables('roleDefinitionId')]", - "principalId": "[reference(resourceId('Microsoft.Web/sites', variables('functionAppName')), '2023-01-01', 'full').identity.principalId]", + "principalId": "[reference(resourceId('Microsoft.Web/sites', variables('functionAppName')), '2023-12-01', 'full').identity.principalId]", "principalType": "ServicePrincipal" }, "dependsOn": [ @@ -222,11 +222,11 @@ }, "principalId": { "type": "string", - "value": "[reference(resourceId('Microsoft.Web/sites', variables('functionAppName')), '2023-01-01', 'full').identity.principalId]" + "value": "[reference(resourceId('Microsoft.Web/sites', variables('functionAppName')), '2023-12-01', 'full').identity.principalId]" }, "tenantId": { "type": "string", - "value": "[reference(resourceId('Microsoft.Web/sites', variables('functionAppName')), '2023-01-01', 'full').identity.tenantId]" + "value": "[reference(resourceId('Microsoft.Web/sites', variables('functionAppName')), '2023-12-01', 'full').identity.tenantId]" }, "keyVaultName": { "type": "string",