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 aan te roepen in een functie-app en het antwoord te parseren. De functie-app moet worden gemaakt en gehost in Azure Functions.
Syntaxis
# 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.
Invoer
URL van function
- Azure-functie
string
. Verplicht.
De URL van de Azure-functie die moet worden aangeroepen. Voorbeeld: https://azurefunctionapp.azurewebsites.net/api/HttpTriggerJS1
.
key
-
functietoets
string
. Verplicht.
De functie of de hostsleutel die wordt gebruikt om de functie te openen en aan te roepen. Gebruik een geheime pijplijnvariabele om de functiesleutel op te slaan om de sleutel veilig te houden. Voorbeeld: $(myFunctionKey)
.
myFunctionKey
is een geheime variabele op omgevingsniveau met een waarde als geheime sleutel.
method
-
methode
string
. Verplicht. Toegestane waarden: OPTIONS
, GET
, HEAD
, POST
, PUT
, DELETE
, TRACE
, PATCH
. Standaardwaarde: POST
.
De HTTP-methode waarmee de functie wordt aangeroepen.
headers
-
kopteksten
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
-
hoofdtekst
string
. Facultatief. Gebruiken wanneer method != GET && method != HEAD
.
De hoofdtekst van de aanvraag in JSON-indeling.
waitForCompletion
-
voltooiingsbeurtenis
string
. Verplicht. Toegestane waarden: true
(Callback), false
(ApiResponse). Standaardwaarde: false
.
Hoe de taakrapporten worden voltooid.
-
false
- API-antwoord: de functie retourneert succes- en succescriteria om waar te zijn. -
true
- Callback - de functie maakt een callback om de tijdlijnrecord bij te werken.
successCriteria
-
succescriteria
string
. Facultatief. Gebruiken wanneer waitForCompletion = false
.
De criteria voor een geslaagde taak. De taak retourneert standaard 200 OK
status wanneer deze is geslaagd.
Voorbeeld: Voor antwoord {"status" : "successful"}
kan de expressie worden eq(root['status'], 'successful')
. Meer informatie over het opgeven van voorwaarden .
Opties voor taakbeheer
Alle taken hebben besturingsopties naast hun taakinvoer. Zie Opties en algemene taakeigenschappenvoor 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 parseert.
Waar moet een taaksignaal worden voltooid wanneer Callback- wordt gekozen als voltooiingsevenement?
Om de voltooiing aan te geven, moet de functie POST-voltooiingsgegevens naar het volgende eindpunt van de pijplijnen REST verzenden.
{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 cmdlinetoepassing voor specifieke informatie. Daarnaast is er een C#-helperbibliotheek beschikbaar voor het inschakelen van livelogboekregistratie en het beheren van de taakstatus 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 Callback voltooiingsbeurtenis. De voltooiingsoptie API-antwoord wordt ondersteund voor aanvragen die binnen 60 seconden zijn voltooid.
Voorbeelden
Voorbeeld van een Azure-functie die gebruikmaakt van de voltooiingsmodus voor terugbellen
#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
Voorwaarde | Beschrijving |
---|---|
Pijplijntypen | YAML, klassieke build, klassieke release |
Wordt uitgevoerd op | Server, ServerGate |
eisen | Geen |
mogelijkheden | Deze taak voldoet niet aan de vereisten voor volgende taken in de taak. |
opdrachtbeperkingen | Welk dan ook |
variabelen instellen | Welk dan ook |
Agentversie | Alle ondersteunde agentversies. |
Taakcategorie | Nutsvoorzieningen |