Vorbereitung
Im Azure Portal gibt es auf der Startseite der Logic App eine Option „Download app content“. Diese öffnet eine Auswahl, ob nur der Site Content oder der Content mit einem Visual Studio Projekt heruntergeladen werden soll. Zusätzlich kann man die appsettings herunterladen.
Für den initialen Download empfiehlt sich Content mit Visual Studio Projekt, sowie die appsettings.
Es wird dann ein Zip mit einer ähnlichen Struktur erstellt.
- Artifacts, wenn bspw. Maps oder Schemas in der Logic App hinterlegt sind
- Ein Ordner pro Workflow, welcher jeweils eine workflow.json mit dem Code enthält (aus dem Workflows-Tab)
- connections.json (aus dem Connections-Tab) mit allen Serviceverbindungen
- parameters.json (aus dem Parameters-Tab) mit allen verfügbaren Parameter
- local.settings.json enthält die Appsettings, welche als Umgebungsvariablen der Logic App zur Verfügung stehen und über @appsettings(‘<name>‘) abgefragt werden können
Als Nächstes empfiehlt es sich, ein Git Repository anzulegen und einen lokalen Ordner damit zu verbinden. Im nächsten Schritt wird das Zip in diesen Ordner entpackt.
Sollten noch nicht alle nötigen Werte wie Adressen zu bspw. HTTP-Endpunkten parametrisiert sein, wird dies nun notwendig, um ein flexibles Deployment über die verschiedenen Stages zu ermöglichen.
Wenn alles soweit vorbereitet ist, kann das Projekt eingecheckt und ins Repository gepushed werden.
Änderungen
Um Änderungen am Code einer, bereits im Repository und ggf. deployeden, Logic App vorzunehmen, gibt es zwei Möglichkeiten.
- Logic App im Azure Portal ändern, Code kopieren und die lokale Datei damit überschreiben.
- Lokale Entwicklung im Visual Studio Code
Build
Nun ist es möglich, in einer Build Pipeline die Logic App Dateien aufzubereiten, zu packen, sowie als Pipeline Artifakt bereitzustellen.
- task: Bash@3
displayName: Create project Folder
inputs:
targetType: 'inline'
script: |
cd '$(Build.SourcesDirectory)'
mkdir output/
cp -r 'Artifacts/' 'output/'
find */workflow.json -exec cp --parents \{\} output \;
cp 'connections.json' 'output/'
#cp 'parameters.${{ parameters.targetEnvironment }}.json' 'output/parameters.json'
cp 'parameters.json' 'output/parameters.json'
- task: ArchiveFiles@2
displayName: Zip Files
inputs:
rootFolderOrFile: '$(Build.SourcesDirectory)/output'
includeRootFolder: false
archiveType: 'zip'
archiveFile: '$(Build.ArtifactStagingDirectory)/output.zip'
replaceExistingArchive: true
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/output.zip'
ArtifactName: 'drop'
publishLocation: 'Container'
Auf der Deployment-Seite kann dieses Paket nun in die Logic App hochgeladen werden.
- task: AzureFunctionApp@1
displayName: Push Artifacts & Workflows to LogicApp
inputs:
azureSubscription: '<subscription>'
appType: 'workflowapp'
appName: '<appName>'
package: '<Path to package>'
deploymentMethod: 'zipDeploy'
Dieser Tipp kommt QUIBIQ Stuttgart.