Skip to content
This repository was archived by the owner on Mar 16, 2022. It is now read-only.

Commit 6562c23

Browse files
authored
Merge pull request #37 from guitarrapc/develop/v2
Add Table Storage Reference
2 parents bae86c5 + c31881c commit 6562c23

20 files changed

+368
-54
lines changed

.vsts/sample/config-ci-release.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
name: Release Build
2+
trigger:
3+
branches:
4+
include:
5+
- release/v1-attribute
6+
7+
variables:
8+
Parameters.solution: 'v1_attribute/src/AzureFunctionsIntroduction.sln'
9+
Parameters.connectedServiceName: 'AzureResourceManager'
10+
Parameters.WebAppName: 'AzureFunctionsIntroduction'
11+
BuildConfiguration: "Release"
12+
13+
phases:
14+
15+
- phase: build_hosted_agent
16+
displayName: Hosted Agent
17+
queue:
18+
name: Hosted VS2017
19+
demands: msbuild
20+
21+
steps:
22+
- task: DotNetCoreCLI@1
23+
displayName: restore
24+
inputs:
25+
command: "restore"
26+
projects: "$(Parameters.solution)"
27+
28+
- task: MSBuild@1
29+
displayName: build
30+
inputs:
31+
solution: "$(Parameters.solution)"
32+
configuration: "$(BuildConfiguration)"
33+
msbuildArguments: "/p:OutputPath=$(Build.SourcesDirectory)/Tmp"
34+
clean: "true"
35+
36+
- task: CmdLine@1
37+
displayName: deploy
38+
inputs:
39+
filename: "C:/Program Files/IIS/Microsoft Web Deploy V3/msdeploy.exe"
40+
arguments: "-verb:sync -source:contentPath=$(Build.SourcesDirectory)/Tmp -dest:contentPath='$(DeploySiteName)',ComputerName='$(DeployScmUrl)',UserName='$(DeployUserName)',Password='$(DeployPassword)',AuthType='Basic'"
Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
queue:
2-
name: Hosted VS2017
3-
demands: msbuild
4-
51
name: My Release Build
62
trigger:
73
branches:
84
include:
95
- release/v1-attribute
106

7+
queue:
8+
name: Hosted VS2017
9+
demands: msbuild
10+
1111
variables:
1212
Parameters.solution: 'v1_attribute/src/AzureFunctionsIntroduction.sln'
1313
Parameters.connectedServiceName: 'AzureResourceManager'
@@ -16,18 +16,21 @@ variables:
1616

1717
steps:
1818
- task: DotNetCoreCLI@1
19+
displayName: restore
1920
inputs:
2021
command: "restore"
2122
projects: "$(Parameters.solution)"
2223

2324
- task: MSBuild@1
25+
displayName: build
2426
inputs:
2527
solution: "$(Parameters.solution)"
2628
configuration: "$(BuildConfiguration)"
2729
msbuildArguments: "/p:OutputPath=$(Build.SourcesDirectory)/Tmp"
2830
clean: "true"
2931

3032
- task: CmdLine@1
33+
displayName: deploy
3134
inputs:
3235
filename: "C:/Program Files/IIS/Microsoft Web Deploy V3/msdeploy.exe"
3336
arguments: "-verb:sync -source:contentPath=$(Build.SourcesDirectory)/Tmp -dest:contentPath='$(DeploySiteName)',ComputerName='$(DeployScmUrl)',UserName='$(DeployUserName)',Password='$(DeployPassword)',AuthType='Basic'"

v1_attribute/.vsts-ci_AzureAppDeploy.yml renamed to .vsts/sample/config-ci_AzureAppDeploy.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,17 @@ variables:
2323

2424
steps:
2525
- task: NuGetToolInstaller@0
26-
displayName: 'Use NuGet 4.3.0'
26+
displayName: nuget tool installer
2727
inputs:
2828
checkLatest: true
2929

3030
- task: NuGetCommand@2
31-
displayName: 'NuGet restore'
31+
displayName: restore
3232
inputs:
3333
restoreSolution: '$(Parameters.solution)'
3434

3535
- task: VSBuild@1
36-
displayName: 'Build solution **\*.sln'
36+
displayName: build
3737
inputs:
3838
solution: '$(Parameters.solution)'
3939
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)/$(Parameters.WebAppName).zip"'
@@ -42,7 +42,7 @@ steps:
4242

4343

4444
- task: AzureRmWebAppDeployment@2
45-
displayName: 'Azure App Service Deploy: function-v1-function'
45+
displayName: deploy
4646
inputs:
4747
ConnectedServiceName: '$(Parameters.connectedServiceName)'
4848
WebAppName: '$(Parameters.WebAppName)'
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: Develop Build
2+
trigger:
3+
branches:
4+
include:
5+
- develop/v1-attribute
6+
7+
variables:
8+
Parameters.solution: 'v1_attribute/src/AzureFunctionsIntroduction.sln'
9+
BuildConfiguration: "Debug"
10+
11+
phases:
12+
13+
- phase: build_windows_agent
14+
displayName: Windows Agent
15+
queue:
16+
name: Hosted VS2017
17+
demands: msbuild
18+
19+
steps:
20+
- task: DotNetCoreCLI@1
21+
displayName: restore
22+
inputs:
23+
command: "restore"
24+
projects: "$(Parameters.solution)"
25+
26+
- task: MSBuild@1
27+
displayName: build
28+
inputs:
29+
solution: "$(Parameters.solution)"
30+
configuration: "$(BuildConfiguration)"
31+
msbuildArguments: "/p:OutputPath=$(Build.artifactstagingdirectory)"
32+
clean: "true"
33+
34+
- task: PublishBuildArtifacts@1
35+
displayName: 'Publish Artifact: drop'
36+
inputs:
37+
PathtoPublish: '$(build.artifactstagingdirectory)'
38+
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
name: Release Build
2+
trigger:
3+
branches:
4+
include:
5+
- release/v1-attribute
6+
7+
variables:
8+
Parameters.solution: 'v1_attribute/src/AzureFunctionsIntroduction.sln'
9+
Parameters.connectedServiceName: 'AzureResourceManager'
10+
WebAppName: 'function-v1-function'
11+
BuildConfiguration: "Release"
12+
13+
phases:
14+
15+
- phase: build_windows_agent
16+
displayName: Windows Agent
17+
queue:
18+
name: Hosted VS2017
19+
demands: msbuild
20+
21+
steps:
22+
- task: DotNetCoreCLI@1
23+
displayName: restore
24+
inputs:
25+
command: "restore"
26+
projects: "$(Parameters.solution)"
27+
28+
- task: MSBuild@1
29+
displayName: build
30+
inputs:
31+
solution: "$(Parameters.solution)"
32+
configuration: "$(BuildConfiguration)"
33+
msbuildArguments: "/p:OutputPath=$(Build.SourcesDirectory)/Tmp"
34+
clean: "true"
35+
36+
- task: ArchiveFiles@2
37+
displayName: 'Archive $(build.artifactstagingdirectory)'
38+
inputs:
39+
rootFolderOrFile: '$(build.SourcesDirectory)/Tmp'
40+
archiveFile: '$(Build.ArtifactStagingDirectory)/artifact.zip'
41+
includeRootFolder: false
42+
43+
- task: PublishBuildArtifacts@1
44+
displayName: 'Publish Artifact: drop'
45+
inputs:
46+
PathtoPublish: '$(build.artifactstagingdirectory)'
47+
48+
- powershell: |
49+
$username = $env:DeployUserName
50+
$password = $env:DeployPassword
51+
$filePath = "$($env:Build_ArtifactStagingDirectory)/artifact.zip"
52+
$apiUrl = "https://$env:WebAppName.scm.azurewebsites.net/api/zipdeploy"
53+
echo "username : $username"
54+
echo "password : $password"
55+
echo "filePath : $filePath"
56+
echo "apiUrl : $apiUrl"
57+
58+
- powershell: |
59+
$username = $env:DeployUserName
60+
$password = $env:DeployPassword
61+
$filePath = "$($env:Build_ArtifactStagingDirectory)/artifact.zip"
62+
$apiUrl = "https://$env:WebAppName.scm.azurewebsites.net/api/zipdeploy"
63+
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))
64+
$userAgent = "powershell/1.0"
65+
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method POST -InFile $filePath -ContentType "multipart/form-data"
66+
displayName: 'deploy'

Terraform/v1_attribute/functionapp.tf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ resource "azurerm_function_app" "function" {
3939
version = "~1"
4040

4141
app_settings {
42+
# ZipDeploy with Run From Package : https://github.com/Azure/app-service-announcements/issues/110
43+
WEBSITE_RUN_FROM_ZIP = 1
44+
4245
eventtrigger_slackchannel = "azurefunctions"
4346
eventtriggerSlackwebhookurlSecretUri = "${azurerm_key_vault.this.vault_uri}/secrets/${azurerm_key_vault_secret.FUNCTION_APP_EVENTTRIGGER_SLACKWEBHOOKURL.name}"
4447
KeyVaultSecretUri = "${azurerm_key_vault.this.vault_uri}/secrets/${azurerm_key_vault_secret.test.name}"

Terraform/v2/functionapp.tf

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,12 @@ resource "azurerm_function_app" "function" {
3939
version = "beta"
4040

4141
app_settings {
42+
# ZipDeploy with Run From Package : https://github.com/Azure/app-service-announcements/issues/110
43+
WEBSITE_RUN_FROM_ZIP = 1
44+
4245
# As of 2.0.1-beta.26 a worker runtime setting is required.
43-
FUNCTIONS_WORKER_RUNTIME = "dotnet"
46+
FUNCTIONS_WORKER_RUNTIME = "dotnet"
47+
4448
eventtrigger_slackchannel = "azurefunctions"
4549
key_vault_eventtriggerSlackwebhookurlSecretUri = "${azurerm_key_vault.this.vault_uri}secrets/${local.vault_secret_name_FUNCTION_APP_EVENTTRIGGER_SLACKWEBHOOKURL}"
4650
key_vault_secret_uri = "${azurerm_key_vault.this.vault_uri}secrets/${local.vault_secret_name_test}"
@@ -49,6 +53,10 @@ resource "azurerm_function_app" "function" {
4953
sas_blob_item_primary_endpoint = "${azurerm_storage_account.blob.primary_blob_endpoint}"
5054
sas_blob_item_container = "${azurerm_storage_container.blob.name}"
5155
sas_blob_item_name = "${azurerm_storage_blob.blob.name}"
56+
table_storage_asset_table_name = "sampletable"
57+
table_storage_asset_table_default_parition = "assets"
58+
table_storage_asset_table_default_assetname = "default"
59+
key_vault_table_storage_connection_string = "${azurerm_key_vault.this.vault_uri}secrets/${local.vault_secret_name_FUNCTION_TABLE_CONNECTION_STRING}"
5260

5361
# Incase you want set secret directly from KeyVault.
5462
# eventtrigger_slackwebhookurl = "${data.azurerm_key_vault_secret.FUNCTION_APP_EVENTTRIGGER_SLACKWEBHOOKURL.value}"

Terraform/v2/keyvault.tf

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,3 +130,19 @@ resource "azurerm_key_vault_secret" "FUNCTION_SAS_BLOB_ITEM_CONNECTION_STRING" {
130130
local.common_tags,
131131
)}"
132132
}
133+
134+
resource "azurerm_key_vault_secret" "FUNCTION_TABLE_STORAGE_CONNECTION_STRING" {
135+
name = "${local.vault_secret_name_FUNCTION_TABLE_CONNECTION_STRING}"
136+
value = "${azurerm_storage_account.table.primary_connection_string}"
137+
vault_uri = "${azurerm_key_vault.this.vault_uri}"
138+
139+
depends_on = [
140+
"azurerm_key_vault.this",
141+
"azurerm_storage_account.blob",
142+
]
143+
144+
tags = "${merge(
145+
var.common_tags,
146+
local.common_tags,
147+
)}"
148+
}

Terraform/v2/locals.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,5 @@ locals {
2525
vault_secret_name_FUNCTION_APP_EVENTTRIGGER_SLACKWEBHOOKURL = "functionappeventtriggerslackwebhookurl"
2626
vault_secret_name_FUNCTION_APP_SLACKINCOMINGWEBHOOKURL = "functionappslackincomingwebhookurl"
2727
vault_secret_name_FUNCTION_SAS_BLOB_ITEM_CONNECTION_STRING = "functionsasblobitemconnectionstring"
28+
vault_secret_name_FUNCTION_TABLE_CONNECTION_STRING = "functiontableconnectionstring"
2829
}

Terraform/v2/storage_table.tf

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
resource "azurerm_storage_account" "table" {
2+
name = "azurefunctiontable"
3+
resource_group_name = "${data.azurerm_resource_group.current.name}"
4+
location = "${local.location}"
5+
account_tier = "Standard"
6+
account_replication_type = "LRS"
7+
8+
enable_https_traffic_only = true
9+
10+
tags = "${merge(
11+
var.common_tags,
12+
local.common_tags,
13+
)}"
14+
}
15+
16+
resource "azurerm_storage_table" "table" {
17+
name = "sampletable"
18+
resource_group_name = "${data.azurerm_resource_group.current.name}"
19+
storage_account_name = "${azurerm_storage_account.table.name}"
20+
}

0 commit comments

Comments
 (0)