AzureFunctionApp@2 – Azure Functions 2. verziós feladat üzembe helyezése
Függvényalkalmazás frissítése .NET, Python, JavaScript, PowerShell, Java-alapú webalkalmazásokkal.
Syntax
# Azure Functions Deploy v2
# Update a function app with .NET, Python, JavaScript, PowerShell, Java based web applications.
- task: AzureFunctionApp@2
inputs:
connectedServiceNameARM: # string. Alias: azureSubscription. Required. Azure Resource Manager connection.
appType: # 'functionApp' | 'functionAppLinux'. Required. App type.
appName: # string. Required. Azure Functions App name.
#deployToSlotOrASE: false # boolean. Optional. Use when appType != "". Deploy to Slot or App Service Environment. Default: false.
#resourceGroupName: # string. Required when deployToSlotOrASE = true. Resource group.
#slotName: 'production' # string. Required when deployToSlotOrASE = true. Slot. Default: production.
package: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
#runtimeStack: # 'DOTNET|6.0' | 'DOTNET-ISOLATED|6.0' | 'DOTNET-ISOLATED|7.0' | 'DOTNET-ISOLATED|8.0' | 'JAVA|8' | 'JAVA|11' | 'JAVA|17' | 'JAVA|21' | 'NODE|14' | 'NODE|16' | 'NODE|18' | 'NODE|20' | 'PYTHON|3.8' | 'PYTHON|3.9' | 'PYTHON|3.10' | 'PYTHON|3.11'. Optional. Use when appType = functionAppLinux. Runtime stack.
# Application and Configuration Settings
#appSettings: # string. App settings.
# Additional Deployment Options
#deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Deployment method. Default: auto.
# Azure Functions Deploy v2
# Update a function app with .NET, Python, JavaScript, PowerShell, Java based web applications.
- task: AzureFunctionApp@2
inputs:
connectedServiceNameARM: # string. Alias: azureSubscription. Required. Azure Resource Manager connection.
appType: # 'functionApp' | 'functionAppLinux'. Required. App type.
appName: # string. Required. Azure Functions App name.
#deployToSlotOrASE: false # boolean. Optional. Use when appType != "". Deploy to Slot or App Service Environment. Default: false.
#resourceGroupName: # string. Required when deployToSlotOrASE = true. Resource group.
#slotName: 'production' # string. Required when deployToSlotOrASE = true. Slot. Default: production.
package: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
#runtimeStack: # 'DOTNET|2.2' | 'DOTNET|3.1' | 'DOTNET|6.0' | 'DOTNET-ISOLATED|7.0' | 'JAVA|8' | 'JAVA|11' | 'NODE|8' | 'NODE|10' | 'NODE|12' | 'NODE|14' | 'NODE|16' | 'NODE|18' | 'PYTHON|3.6' | 'PYTHON|3.7' | 'PYTHON|3.8' | 'PYTHON|3.9' | 'PYTHON|3.10'. Optional. Use when appType = functionAppLinux. Runtime stack.
# Application and Configuration Settings
#appSettings: # string. App settings.
# Additional Deployment Options
#deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Deployment method. Default: auto.
Bevitelek
connectedServiceNameARM
- Azure Resource Manager-kapcsolat
Bemeneti alias: azureSubscription
. string
. Kötelező.
Válassza ki az üzembe helyezéshez tartozó Azure Resource Manager-előfizetést.
appType
- Alkalmazás típusa
string
. Kötelező. Engedélyezett értékek: functionApp
(Függvényalkalmazás Windows rendszeren), functionAppLinux
(Függvényalkalmazás Linux rendszeren).
Válassza ki az üzembe helyezéshez tartozó Azure-függvényalkalmazás típusát.
appName
- Azure Functions alkalmazás neve
string
. Kötelező.
Adja meg egy meglévő Azure Functions alkalmazás nevét. A felsorolt függvényalkalmazások a kiválasztott alkalmazástípuson alapulnak.
deployToSlotOrASE
- Üzembe helyezés pontban vagy App Service Environment
boolean
. Választható. Használja a következőt: appType != ""
. Alapértelmezett érték: false
.
Üzembe helyezés egy meglévő üzembehelyezési ponton vagy Azure App Service-környezetben. Mindkét cél esetében a tevékenységnek erőforráscsoport-névre van szüksége.
Ha az üzembehelyezési cél egy pont, akkor az alapértelmezés szerint az éles pont lesz. Bármely más meglévő pontnév is megadható.
Ha az üzembehelyezési cél egy Azure App Service környezet, hagyja élesként a tárolóhely nevét, és adja meg az Erőforráscsoport nevét.
resourceGroupName
- Erőforráscsoport
string
. Akkor szükséges, ha deployToSlotOrASE = true
.
Az erőforráscsoport nevére akkor van szükség, ha az üzembehelyezési cél üzembehelyezési pont vagy App Service Environment.
Megadja vagy kiválasztja a fent megadott Azure App Service tartalmazó Azure-erőforráscsoportot.
slotName
- Slot
string
. Akkor szükséges, ha deployToSlotOrASE = true
. Alapértelmezett érték: production
.
Beír vagy kiválaszt egy meglévő pontot, az éles pont kivételével.
slotName
- Slot
string
. Akkor szükséges, ha deployToSlotOrASE = true
. Alapértelmezett érték: production
.
Adja meg vagy válassza ki az éles ponttól eltérő meglévő pontot.
package
- Csomag vagy mappa
string
. Kötelező. Alapértelmezett érték: $(System.DefaultWorkingDirectory)/**/*.zip
.
Az MSBuild vagy egy tömörített zip-fájl által létrehozott App Service tartalmat tartalmazó csomag vagy mappa elérési útja. A változók (buildkiadás | ) és a helyettesítő karakterek támogatottak. Például: $(System.DefaultWorkingDirectory)/**/*.zip
.
runtimeStack
- Futtatókörnyezeti verem
string
. Választható. Használja a következőt: appType = functionAppLinux
. Engedélyezett értékek: DOTNET|6.0
, DOTNET-ISOLATED|6.0
, DOTNET-ISOLATED|7.0
, DOTNET-ISOLATED|8.0
, JAVA|8
, JAVA|11
, JAVA|17
, JAVA|21
, NODE|14
, NODE|16
, , NODE|18
, , NODE|20
, , PYTHON|3.8
, , PYTHON|3.9
, . PYTHON|3.10
PYTHON|3.11
Adja meg azt a keretrendszert és verziót, amelyen a függvényalkalmazás futni fog. A támogatott futtatókörnyezeti verziók bármelyikét használhatja. A régi értékek, például DOCKER|microsoft/azure-functions-*
elavultak. Az új értékek a feladat segéd legördülő listájában jelennek meg. Ha egy keretrendszer újabb verziója érhető el a támogatott futtatókörnyezeti verziókban , akkor is megadhatja, ha nem szerepel a listában.
runtimeStack
- Futtatókörnyezeti verem
string
. Választható. Használja a következőt: appType = functionAppLinux
. Engedélyezett értékek: DOTNET|2.2
(DOTNET|2.2 (functionapp v2)), DOTNET|3.1
(DOTNET|3.1 (functionapp v3)), DOTNET|6.0
(DOTNET|6.0 (functionapp v4)), DOTNET-ISOLATED|7.0
(DOTNET-ISOLATED|7.0 (functionapp v4)), JAVA|8
(JAVA|8 (functionapp v2/v3/v4)), JAVA|11
(JAVA|11 (functionapp v3/v4)), NODE|8
(NODE|8 (functionapp v2)), NODE|10
(NODE|10 (functionapp v2/v3)), NODE|12
(NODE|12 (functionapp v3)), NODE|14
(NODE|14 (functionapp v3/v4)), NODE|16
(NODE|16 (functionapp v4)), NODE|18
(NODE|18 (functionapp v4)), PYTHON|3.6
(PYTHON|3.6 (functionapp v2/v3)), PYTHON|3.7
(PYTHON|3.7 (functionapp v2/v3/v4)), PYTHON|3.8
(PYTHON|3.8 (functionapp v3/v4)), PYTHON|3.9
(PYTHON|3.9 (functionapp v3/v4)), PYTHON|3.10
(PYTHON|3.10 (functionapp v3/v4)).
Adja meg azt a keretrendszert és verziót, amelyen a függvényalkalmazás futni fog. A támogatott futtatókörnyezeti verziók bármelyikét használhatja. A régi értékek, például DOCKER|microsoft/azure-functions-*
elavultak. Az új értékek a feladat segéd legördülő listájában jelennek meg. Ha egy keretrendszer újabb verziója érhető el a támogatott futtatókörnyezeti verziókban , akkor is megadhatja, ha nem szerepel a listában.
appSettings
- Alkalmazásbeállítások
string
.
Adja meg az alkalmazásbeállításokat a szintaxis -key value
használatával (például:-RequestTimeout 5000
-Port 5000
-WEBSITE_TIME_ZONE
). Olyan értékek beágyazása, amelyek szóközöket tartalmaznak dupla idézőjelekbe (például: "Eastern Standard Time"
).
deploymentMethod
- Üzembe helyezési módszer
string
. Akkor szükséges, ha appType != "" && package NotEndsWith .war && Package NotEndsWith .jar
. Engedélyezett értékek: auto
(Automatikus észlelés), zipDeploy
(Zip Deploy), runFromPackage
(Zip Deploy a futtatásból csomagból). Alapértelmezett érték: auto
.
Az alkalmazás üzembehelyezési módszerét adja meg. A Linux-használatú alkalmazások nem támogatják ezt a konfigurációt.
deploymentMethod
- Üzembe helyezési módszer
string
. Akkor szükséges, ha appType != "" && package NotEndsWith .war && Package NotEndsWith .jar
. Engedélyezett értékek: auto
(Automatikus észlelés), zipDeploy
(Zip Deploy), runFromPackage
(Zip Deploy a futtatásból csomagból). Alapértelmezett érték: auto
.
Kiválasztja az alkalmazás üzembehelyezési módszerét . A Linux-használatú alkalmazások nem támogatják ezt a configuration.s-t
Feladatvezérlési lehetőségek
Minden feladathoz tartoznak vezérlési lehetőségek is a feladat bemenetei mellett. További információ: Vezérlési beállítások és gyakori feladattulajdonságok.
Kimeneti változók
Ez a feladat a következő kimeneti változókat határozza meg, amelyeket az alsóbb rétegbeli lépésekben, feladatokban és szakaszokban használhat fel.
AppServiceApplicationUrl
A kiválasztott Azure-függvényalkalmazás alkalmazás URL-címe.
Megjegyzések
Az Azure-függvény üzembe helyezésének feladatával frissítheti a Azure Functions a Functions Azure-ban való üzembe helyezéséhez. A feladat a Windows, Linux vagy Mac rendszert futtató, platformfüggetlen Azure Pipelines-ügynökökön működik, és a RunFromPackage, a Zip Deploy és a Kudu REST API-k mögöttes üzembehelyezési technológiáit használja.
A feladat a támogatott nyelvek Azure Functions működik.
A tevékenység előfeltételei
A feladat megfelelő működéséhez a következő előfeltételeket kell beállítani a célgép(ek)ben.
Azure-függvény
A feladat egy Azure Functions projekt üzembe helyezésére szolgál egy meglévő Azure-függvényben. Az Azure-függvényalkalmazásnak léteznie kell a feladat futtatása előtt. Az Azure-függvényalkalmazás a Azure Portal hozható létre. A Azure PowerShell feladat használható az AzureRM PowerShell-szkriptek futtatására az Azure-függvényalkalmazás kiépítéséhez és konfigurálásához.
A feladat a Azure Functions (Windows/Linux) üzembe helyezésére használható.
Azure-előfizetés
Az Azure-ban való üzembe helyezéshez egy Azure-előfizetést az Azure Pipelineshoz kell kapcsolni a Fiókfelügyelet szakasz Szolgáltatások lapján. Adja hozzá a Build vagy a Release Management definícióban használni kívánt Azure-előfizetést a Fiókfelügyelet képernyő megnyitásával (fogaskerék ikon a képernyő jobb felső sarkában), majd kattintson a Szolgáltatások fülre.
Létrehozás az ARM-szolgáltatásvégpontot, és használja az Azure Resource Manager végponttípust. További részletekért kövesse az itt található hivatkozáson szereplő lépéseket.
A feladat nem működik a klasszikus Azure szolgáltatásvégponttal, és nem listázni fogja ezeket a kapcsolatokat a tevékenység paramétereiben.
Üzembehelyezési módszerek
Ebben a feladatban számos üzembe helyezési módszer érhető el.
Ha módosítani szeretné a csomagalapú üzembe helyezési beállítást egy tervezői feladatban, bontsa ki a További üzembehelyezési beállítások elemet, és engedélyezze az Üzembe helyezési módszer kiválasztása lehetőséget.
A feladat a Azure App Service és az Azure Pipelines-ügynök típusától függően megfelelő üzembehelyezési technológiát használ. A feladatok által használt üzembehelyezési technológiák a következők:
Alapértelmezés szerint a feladat megpróbálja kiválasztani a megfelelő üzembehelyezési technológiát a bemeneti csomag, a App Service típus és az ügynök operációs rendszere alapján.
- Ha az üzembe helyezés utáni szkript meg van adva, használja a Zip Deploy parancsot.
- Ha a App Service típusa Web App linuxos, használja a Zip Deploy parancsot.
- Ha .war-fájl van megadva, használja a War Deploy parancsot.
- Ha .jar fájl van megadva, használja a Run-From-Zip parancsot.
- Minden más feladathoz használja a Futtatás csomagból parancsot (Zip Deploy használatával).
Nem Windows-ügynök esetén (bármilyen App Service típus esetén) a feladat a Kudu REST API-ra támaszkodik a webalkalmazás üzembe helyezéséhez.
Kudu REST API
A Kudu REST API Windows- és Linux-automatizálási ügynökökön is működik, ha a cél egy Windows-alapú webalkalmazás, egy Linux-alapú webalkalmazás (beépített forrás) vagy egy függvényalkalmazás. A feladat a Kudu használatával másolja a fájlokat a Azure App Service.
Tömörített üzembe helyezés
A Zip Deploy létrehoz egy .zip üzembehelyezési csomagot a kiválasztott csomagból vagy mappából. Ezután telepíti a fájl tartalmát a App Service névfüggvény alkalmazás wwwroot mappájába az Azure-ban. Ez a beállítás felülírja a wwwroot mappában lévő összes meglévő tartalmat. További információ: Zip deployment for Azure Functions.
Futtatás csomagból
A Futtatás csomagból parancs ugyanazt az üzembehelyezési csomagot hozza létre, mint a Zip Deploy. Ahelyett, hogy fájlokat helyez üzembe a wwwroot mappában, a Functions-futtatókörnyezet csatlakoztatja a teljes csomagot. Ha ezt a beállítást használja, a wwwroot mappában lévő fájlok írásvédetté válnak. További információért lásd az Azure Functions csomagfájlból történő futtatásával foglalkozó cikket.
Hibaelhárítás
Hiba: Nem sikerült lekérni az Azure hozzáférési jogkivonatát. Ellenőrizze, hogy a használt szolgáltatásnév érvényes-e, és nem járt-e le.
A feladat a szolgáltatáskapcsolatban lévő szolgáltatásnevet használja az Azure-ral való hitelesítéshez. Ha a szolgáltatásnév lejárt, vagy nem rendelkezik engedélyekkel a App Service, a feladat ezzel a hibával meghiúsul. Ellenőrizze a használt szolgáltatásnév érvényességét, és hogy szerepel-e az alkalmazás regisztrációjában. További információért lásd: Az Azure-előfizetések erőforrásaihoz való hozzáférés kezelése szerepköralapú hozzáférés-vezérléssel. Ez a blogbejegyzés további információkat is tartalmaz a szolgáltatásnév-hitelesítés használatáról.
SSL-hiba
Ha tanúsítványt szeretne használni App Service, a tanúsítványt megbízható hitelesítésszolgáltatónak kell aláírnia. Ha a webalkalmazás tanúsítvány-ellenőrzési hibákat ad vissza, valószínűleg önaláírt tanúsítványt használ. A hiba megoldásához állítson be egy nevű VSTS_ARM_REST_IGNORE_SSL_ERRORS
változót a buildelési vagy kiadási folyamat értékére true
.
Egy kiadás hosszú ideig nem válaszon, majd meghiúsul
Ez a probléma a App Service csomag elégtelen kapacitásának következménye lehet. A probléma megoldásához vertikálisan felskálázhatja a App Service példányt a rendelkezésre álló processzor-, RAM- és lemezterület növeléséhez, vagy megpróbálhat egy másik App Service csomaggal.
5xx hibakódok
Ha 5xx hiba jelenik meg, ellenőrizze az Azure-szolgáltatás állapotát.
Az Azure-függvény hirtelen leállt
Azure Functions hirtelen leállhat, ha az utolsó üzembe helyezés óta több mint egy év telt el. Ha a "RunFromPackage" használatával telepít a "deploymentMethod" fájlban, a rendszer létrehoz egy 1 éves lejárati dátumú SAS-t, és az alkalmazás konfigurációjában a "WEBSITE_RUN_FROM_PACKAGE" értékként van beállítva. Azure Functions ezt az SAS-t használja a csomagfájlra a függvény végrehajtásához, így ha az SAS lejárt, a függvény nem lesz végrehajtva. A probléma megoldásához telepítse újra az üzembe helyezést, hogy létrehoz egy SAS-t egyéves lejárati dátummal.
Hiba: A megadott mintával nem található csomag
Ellenőrizze, hogy a feladatban említett csomag közzé van-e téve összetevőként a buildben vagy egy korábbi fázisban, és le van-e töltve az aktuális feladatban.
Hiba: Az msBuild csomagtípus esetében nem támogatott a közzététel zip-alapú üzembe helyezési lehetőséggel
Az MSBuild feladaton keresztül létrehozott (alapértelmezett argumentumokkal rendelkező) webcsomagok beágyazott mappastruktúrával rendelkeznek, amelyet csak a Web Deploy helyezhet üzembe megfelelően. A közzététel a zip-be üzembe helyezési lehetőség nem használható a csomagok üzembe helyezéséhez. A csomagolás szerkezetének átalakításához hajtsa végre az alábbi lépéseket:
A Megoldás összeállítása feladatban módosítsa az MSBuild argumentumokat a következőre
/p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl="$(System.DefaultWorkingDirectory)\\WebAppContent"
:Adjon hozzá egy archív feladatot, és módosítsa az értékeket az alábbiak szerint:
Módosítsa a gyökérmappát vagy fájlt archiválásra.
$(System.DefaultWorkingDirectory)\\WebAppContent
Törölje az Előtag gyökérmappa nevét az elérési utak archiválásához jelölőnégyzetből:
A függvényalkalmazás üzembe helyezése Windows rendszeren sikeres, de az alkalmazás nem működik
Ez a probléma akkor fordulhat elő, ha nem található web.config fájl az alkalmazásban. Hozzáadhat egy web.config fájlt a forráshoz, vagy automatikusan létrehozhat egyet a feladat alkalmazás- és konfigurációs beállításainak használatával.
Válassza ki a feladatot, és válassza a Python-, Node.js-, Go- és Java-alkalmazások web.config paramétereinek létrehozása lehetőséget:
A paraméterek szerkesztéséhez válassza a Továbbiak gombot (...) a Python-, Node.js-, Go- és Java-alkalmazásokhoz web.config paraméterek létrehozása területen:
Válassza ki az alkalmazástípust az Alkalmazás-keretrendszer listában.
Válassza az OK lehetőséget. Ezzel feltölti a web.config fájl létrehozásához szükséges web.config paramétereket.
Gyakori kérdések
Hogyan konfigurálhatom a szolgáltatáskapcsolatot?
Ehhez a feladathoz Azure Resource Manager szolgáltatáskapcsolat szükséges.
Hogyan konfigurálhatom a webes feladatok üzembe helyezését az Application Insights használatával?
Ha egy App Service helyez üzembe, ha az Application Insights konfigurálva van, és engedélyezve Remove additional files at destination
van, engedélyeznie kell Exclude files from the App_Data folder
azt is. Ennek a beállításnak az engedélyezése biztonságos állapotban tartja az Application Insights-bővítményt. Erre a lépésre azért van szükség, mert az Application Insights folyamatos webfeladata telepítve van a App_Data mappába.
Hogyan konfigurálhatom az ügynökömet, ha proxy mögött van, miközben App Service üzembe helyezem?
Ha a saját üzemeltetésű ügynökhöz webproxy szükséges, a konfiguráció során tájékoztathatja az ügynököt a proxyról. Ezzel lehetővé teszi az ügynök számára, hogy a proxyn keresztül csatlakozzon az Azure Pipelineshoz vagy Azure DevOps Server. További információ a saját üzemeltetésű ügynök webproxy mögött való futtatásáról.
Nem tudok üzembe helyezni egy belső App Service Environment Egy Azure Resource Manager szolgáltatáskapcsolat és egy Microsoft által üzemeltetett ügynök használatával
A Microsoft által üzemeltetett ügynök nem működik App Service Environment. Ehelyett konfigurálnia kell egy privát ügynököt egy olyan virtuális gépen, amely ugyanabban a virtuális hálózatban található, mint a App Service Environment. Emellett állítson be egy privát DNS-zónát az erőforrások közötti kommunikáció engedélyezéséhez.
Példák
Íme egy YAML-mintarészlet, amely üzembe helyezi az Azure-függvényeket a Windowson:
variables:
azureSubscription: Contoso
# To ignore SSL error, uncomment the below variable
# VSTS_ARM_REST_IGNORE_SSL_ERRORS: true
steps:
- task: AzureFunctionApp@2
displayName: Azure Function App Deploy
inputs:
azureSubscription: $(azureSubscription)
appName: samplefunctionapp
appType: functionApp
package: $(System.DefaultWorkingDirectory)/**/*.zip
Ha linuxos rendszeren szeretne üzembe helyezni egy függvényt, adja hozzá a appType
paramétert, és állítsa be a következőre: appType: functionAppLinux
. Ha nem ad meg értéket, functionApp
az alapértelmezett érték.
Ha explicit módon szeretné megadni az üzembe helyezési módszert Zip Deployként, adja hozzá a paramétert deploymentMethod: zipDeploy
. A paraméter egy másik támogatott értéke a következő runFromPackage
: .
Ha nem ad meg értéket, auto
az alapértelmezett érték.
A CI/CD-folyamatok létrehozását bemutató útmutatóért lásd: Java létrehozása és üzembe helyezése Azure Functions.
Követelmények
Követelmény | Leírás |
---|---|
Folyamattípusok | YAML, klasszikus build, klasszikus kiadás |
Futtatás: | Ügynök, DeploymentGroup |
Igények | None |
Képességek | Ez a tevékenység nem felel meg a feladat későbbi tevékenységeire vonatkozó követelményeknek. |
Parancskorlátozások | Bármelyik |
Változók beállítása | Bármelyik |
Ügynök verziója | 2.104.1 vagy újabb |
Feladatkategória | Üzembe helyezés |