Delen via


AzureFunction@1- Azure Function v1-taak aanroepen

Gebruik deze taak in een taak zonder agent van een release-pijplijn om een door HTTP geactiveerde functie in een functie-app aan te roepen en het antwoord te parseren. De functie-app moet worden gemaakt en gehost in Azure Functions.

Syntax

# 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.
# Invoke Azure Function v1
# Invoke an Azure Function as a part of your pipeline.
- 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.

Invoerwaarden

function - Url van Azure-functie
string. Vereist.

De URL van de Azure-functie die moet worden aangeroepen. Bijvoorbeeld: https://azurefunctionapp.azurewebsites.net/api/HttpTriggerJS1.


key - Functietoets
string. Vereist.

De functie of de hostsleutel die wordt gebruikt om de functie te openen en aan te roepen. Als u de sleutel veilig wilt houden, gebruikt u een geheime pijplijnvariabele om de functiesleutel op te slaan. Bijvoorbeeld: $(myFunctionKey). myFunctionKey is een geheimvariabele op omgevingsniveau met een waarde als de geheime sleutel.


method - Methode
string. Vereist. Toegestane waarden: OPTIONS, GET, HEAD, POST, PUT, DELETE, , TRACE, . PATCH Standaardwaarde: POST.

De HTTP-methode waarmee de functie wordt aangeroepen.


headers - Headers
string. Standaardwaarde: {\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}.

De header in JSON-indeling die moet worden gekoppeld aan de aanvraag die naar de functie wordt verzonden.


queryParameters - Queryparameters
string.

De tekenreeksquery die moet worden toegevoegd aan de functie-URL. Mag niet beginnen met ? of &.


body - Lichaam
string. Optioneel. Gebruik wanneer method != GET && method != HEAD.

De aanvraagbody in JSON-indeling.


waitForCompletion - Voltooiingsevenement
string. Vereist. Toegestane waarden: true (Callback), false (ApiResponse). Standaardwaarde: false.

Hoe de voltooiing van de taak wordt gerapporteerd.

  • false - API-antwoord : de functie retourneert succes en succescriteria worden geĆ«valueerd als waar.
  • true - Callback : de functie maakt een callback om de tijdlijnrecord bij te werken.

successCriteria - Succescriteria
string. Optioneel. Gebruik wanneer waitForCompletion = false.

De criteria voor een geslaagde taak. De taak retourneert 200 OK standaard de status wanneer dit is gelukt.

Voorbeeld: voor antwoord {"status" : "successful"}kan de expressie zijn eq(root['status'], 'successful'). Meer informatie over het opgeven van voorwaarden.


Opties voor taakbeheer

Alle taken hebben besturingsopties naast hun taakinvoer. Zie Opties voor besturingselementen en algemene taakeigenschappen voor meer informatie.

Uitvoervariabelen

Geen.

Opmerkingen

Gebruik deze taak in een taak zonder agent van een release-pijplijn om een door HTTP geactiveerde functie aan te roepen in een functie-app die wordt gemaakt en gehost in Azure Functions en het antwoord te parseren.

Waar moet een taak voltooiing aangeven wanneer callback is gekozen als voltooiingsevenement?

Om voltooiing aan te geven, moet de functie post-voltooiingsgegevens naar het volgende pijplijn REST-eindpunt.

{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" }

Zie deze eenvoudige cmdline-toepassing voor meer informatie. Daarnaast is er een C#-helperbibliotheek beschikbaar voor het inschakelen van livelogboekregistratie en het beheren van taakstatussen voor taken zonder agent. Meer informatie

Waarom mislukt de taak binnen 1 minuut wanneer de time-out langer is?

Als de functie langer dan 1 minuut wordt uitgevoerd, gebruikt u de gebeurtenis Callback-voltooiing . De voltooiingsoptie API-antwoord wordt ondersteund voor aanvragen die binnen 60 seconden worden voltooid.

Voorbeelden

Voorbeeld van een Azure-functie die gebruikmaakt van de callback-voltooiingsmodus

#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);
    }
}

Vereisten

Vereiste Beschrijving
Pijplijntypen YAML, klassieke build, klassieke release
Wordt uitgevoerd op Server, ServerGate
Eisen Geen
Functies Deze taak voldoet niet aan eventuele vereisten voor volgende taken in de taak.
Opdrachtbeperkingen Alle
Instelbare variabelen Alle
Agentversie Alle ondersteunde agentversies.
Taakcategorie Hulpprogramma

Zie ook