Template per l'utilizzo di Azure Functions (e Durable Functions) all'interno del progetto IO.
Una volta clonato il repo assicurarsi di:
-
editare i metadati del repository nel file
package.json
-
specificare un nome per il TaskHub in host.json in modo da evitare di condividere lo stesso per function diverse che usano lo stesso storage
-
effettuare il tuning dei parametri per le durable function
-
impostare a
false
il parametroFUNCTIONS_V2_COMPATIBILITY_MODE
nel filelocal.settings.json
nel caso di upgrade aazure-functions@3.x
cp env.example .env
yarn install
yarn build
docker-compose up -d --build
docker-compose logs -f functions
open http://localhost/some/path/test
Il deploy avviene tramite una pipeline (workflow) configurata su CircleCI.
A ogni push su master il workflow effettua il deploy sulle
risorse di staging. Quando invece un branch è taggato con latest
il deploy avviene sulle functions in produzione.
Per il deploy è necessario che il job su CircleCI possa autenticarsi tramite il client azure. Vanno quindi impostate le seguenti variabili di ambiente nei settings del progetto CircleCI:
AZURE_SP_TENANT="<tenantid>"
AZURE_SP="<service principal id>"
AZURE_SP_PASSWORD="<service principal password>"
AZURE_SUBSCRIPTION_ID="<subscription id>"
PRODUCTION_RESOURCE_GROUP_NAME="<production resource group>"
STAGING_RESOURCE_GROUP_NAME="<staging resource group>"
FUNCTION_APP_NAME="<function app name>"
Sono presenti alcune function di esempio che permettono di testare la corretta esecuzione del runtime delle durable functions. Le funzioni attivate da trigger HTTP utilizzano il pacchetto io-functions-express.