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 |