Megosztás a következőn keresztül:


AzureFunction@1 – Az Azure Function 1-beli feladat meghívása

Ezt a feladatot egy kiadási folyamat ügynök nélküli feladatban használva meghívhat egy HTTP által aktivált függvényt egy függvényalkalmazásban, és elemezni fogja a választ. A függvényalkalmazást létre kell hozni és üzemeltetni kell az Azure Functionsben.

Szinopszis

# Invoke Azure Function v1
# Invoke an Azure Function.
- task: AzureFunction@1
  inputs:
    function: # string. Required. Azure function URL. 
    key: # string. Required. Function key. 
    method: 'POST' # 'OPTIONS' | 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'TRACE' | 'PATCH'. Required. Method. Default: POST.
    #headers: # string. Headers. 
    #queryParameters: # string. Query parameters. 
    #body: # string. Optional. Use when method != GET && method != HEAD. Body. 
  # Advanced
    waitForCompletion: 'false' # 'true' | 'false'. Required. Completion event. Default: false.
    #successCriteria: # string. Optional. Use when waitForCompletion = false. Success criteria.

Bemenetek

function - Azure-függvény URL-címének
string. Szükséges.

A meghívandó Azure-függvény URL-címe. Példa: https://azurefunctionapp.azurewebsites.net/api/HttpTriggerJS1.


key - függvénykulcs
string. Szükséges.

A függvény eléréséhez és meghívásához használt függvény vagy gazdagépkulcs. A kulcs biztonságossá tételéhez használjon titkos folyamat változót a függvénykulcs tárolásához. Példa: $(myFunctionKey). myFunctionKey egy környezeti szintű titkos változó, amelynek értéke titkos kulcs.


method - metódus
string. Szükséges. Engedélyezett értékek: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, PATCH. Alapértelmezett érték: POST.

Az a HTTP-metódus, amellyel a függvényt meghívja.


headers - fejlécek
string. Alapértelmezett érték: {\n"Content-Type":"application/json", \n"PlanUrl": "$(system.CollectionUri)", \n"ProjectId": "$(system.TeamProjectId)", \n"HubName": "$(system.HostType)", \n"PlanId": "$(system.PlanId)", \n"JobId": "$(system.JobId)", \n"TimelineId": "$(system.TimelineId)", \n"TaskInstanceId": "$(system.TaskInstanceId)", \n"AuthToken": "$(system.AccessToken)"\n}.

A függvénynek küldött kérelemhez csatolandó JSON formátumú fejléc.


queryParameters - lekérdezési paraméterek
string.

A függvény URL-címéhez hozzáfűzni kívánt karakterlánc-lekérdezés. Nem kezdődhet ? vagy &.


body - törzs
string. Opcionális. Használja a method != GET && method != HEAD.

A kérelem törzse JSON formátumban.


waitForCompletion - Befejezési esemény
string. Szükséges. Engedélyezett értékek: true (Visszahívás), false (ApiResponse). Alapértelmezett érték: false.

Hogyan fejeződik be a tevékenység.

  • false – API-válasz – a függvény sikert ad vissza, a sikerességi feltételek pedig igaznak lesznek értékelve.
  • true – Visszahívási – a függvény visszahívást végez az ütemtervrekord frissítéséhez.

successCriteria - sikerességi feltételek
string. Opcionális. Használja a waitForCompletion = false.

A sikeres tevékenység feltételei. A feladat alapértelmezés szerint 200 OK állapotot adja vissza, ha sikeres.

Példa: Válasz {"status" : "successful"}esetén a kifejezés eq(root['status'], 'successful')lehet. További információ feltételek megadásáról.


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ők és gyakori feladattulajdonságok.

Kimeneti változók

Nincs.

Megjegyzések

Használja ezt a feladatot egy kiadási folyamat ügynök nélküli feladatának egy HTTP-aktivált függvény meghívásához az Azure Functionsben létrehozott és üzemeltetett függvényalkalmazásban, és elemezi a választ.

Hol fejeződjön be a feladat, ha Visszahívási van kiválasztva a befejezési eseményként?

A befejezés jelzéséhez a függvénynek POST befejezési adatokat kell tartalmaznia a következő folyamatok REST-végpontjának.

{planUri}/{projectId}/_apis/distributedtask/hubs/{hubName}/plans/{planId}/events?api-version=2.0-preview.1

**Request Body**
{ "name": "TaskCompleted", "taskId": "taskInstanceId", "jobId": "jobId", "result": "succeeded" }

Részletekért tekintse meg ezt az egyszerű parancsmagalkalmazást. Emellett egy C#-segédtár is rendelkezésre áll az élő naplózás engedélyezéséhez és az ügynök nélküli tevékenységek feladatállapotának kezeléséhez. További információ

Miért hiúsul meg a feladat 1 percen belül, ha az időtúllépés hosszabb?

Ha a függvény több mint 1 percig fut, használja a visszahívási befejezési eseményt. Az API-válasz befejezési lehetősége 60 másodpercen belül befejeződő kérelmek esetén támogatott.

Példák

Példa a visszahívási befejezési módot használó Azure-függvényre

#r "Newtonsoft.Json"

using System;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;

public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
    var url = req.Headers["PlanUrl"];
    var projectId = req.Headers["ProjectId"];
    var hubName = req.Headers["HubName"];
    var planId = req.Headers["PlanId"];
    var jobId = req.Headers["JobId"];
    var timelineId = req.Headers["TimelineId"];
    var taskInstanceId = req.Headers["TaskinstanceId"];
    var authToken = req.Headers["AuthToken"];

    var callbackUrl = $"{url}/{projectId}/_apis/distributedtask/hubs/{hubName}/plans/{planId}/events?api-version=2.0-preview.1";
  
    var successBody = JsonConvert.SerializeObject(new {
        name = "TaskCompleted",
        taskId = taskInstanceId.ToString(),
        jobId = jobId.ToString(),
        result = "succeeded"
    });

    // the following call does not block
    Task.Run(() =>
    {
        Thread.Sleep(70000); // simulate long running work
        PostEvent(callbackUrl, successBody, authToken, log);
    });
   
    return new OkObjectResult("Long-running job successfully scheduled!");
}
    
public static void PostEvent(String callbackUrl, String body, String authToken, ILogger log)
{
    try
    {
        var client = new HttpClient();
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authToken);
        var requestContent = new StringContent(body, Encoding.UTF8, "application/json");
        var response = client.PostAsync(new Uri(callbackUrl), requestContent).Result;
        var responseContent = response.Content.ReadAsStringAsync().Result;
        log.LogInformation(response.StatusCode.ToString());
        log.LogInformation(responseContent);
    }
    catch (Exception ex)
    {
        log.LogError(ex.Message);
    }
}

Követelmények

Követelmény Leírás
Folyamattípusok YAML, klasszikus build, klasszikus kiadás
Futtatás bekapcsolva Kiszolgáló, ServerGate
Követelmények Egyik sem
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ármely
Változók beállítása Bármely
Ügynök verziója Minden támogatott ügynökverzió.
Tevékenységkategória Hasznosság

Lásd még