Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Use esta tarefa em um de trabalho sem agente de um pipeline de liberação para invocar uma função acionada HTTP em um aplicativo de função e analisar a resposta. O aplicativo de função deve ser criado e hospedado no Azure Functions.
Sintaxe
# 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.
Insumos
function
-
URL da função do Azure
string. Obrigatório.
A URL da função do Azure a ser invocada. Exemplo: https://azurefunctionapp.azurewebsites.net/api/HttpTriggerJS1.
key
-
Tecla de função
string. Obrigatório.
A função ou a chave de host usada para acessar e invocar a função. Para manter a chave segura, use uma variável de pipeline secreta para armazenar a chave de função. Exemplo: $(myFunctionKey).
myFunctionKey é uma variável secreta no nível do ambiente com um valor como chave secreta.
method
-
Método
string. Obrigatório. Valores permitidos: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, PATCH. Valor padrão: POST.
O método HTTP com o qual a função será invocada.
headers
-
Cabeçalhos
string. Valor padrão: {\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}.
O cabeçalho em formato JSON a ser anexado à solicitação enviada para a função.
queryParameters
-
Parâmetros de consulta
string.
A consulta de cadeia de caracteres a ser acrescentada à URL da função. Não deve começar com ? ou &.
body
-
Corpo
string. Opcional. Use quando method != GET && method != HEAD.
O corpo da solicitação no formato JSON.
waitForCompletion
-
Evento de conclusão
string. Obrigatório. Valores permitidos: true (Callback), false (ApiResponse). Valor padrão: false.
Como a tarefa relata a conclusão.
-
false- API response - a função retorna success e success criteria é avaliado como true. -
true- Callback - a função faz um retorno de chamada para atualizar o registro da linha do tempo.
successCriteria
-
Critérios de sucesso
string. Opcional. Use quando waitForCompletion = false.
Os critérios para uma tarefa bem-sucedida. Por padrão, a tarefa retorna 200 OK status quando bem-sucedida.
Exemplo: Para resposta {"status" : "successful"}, a expressão pode ser eq(root['status'], 'successful'). Saiba mais sobre como especificar condições.
Opções de controlo de tarefas
Todas as tarefas têm opções de controle, além de suas entradas de tarefas. Para obter mais informações, consulte Opções de controle de e propriedades de tarefas comuns.
Variáveis de saída
Nenhum.
Observações
Use esta tarefa em um de trabalho sem agente de um pipeline de liberação para invocar uma função acionada HTTP em um aplicativo de função criado e hospedado no Azure Functions e analisar a resposta.
Onde uma tarefa deve sinalizar a conclusão quando de retorno de chamada é escolhido como o evento de conclusão?
Para sinalizar a conclusão, a função deve POST dados de conclusão para os seguintes pipelines ponto de extremidade REST.
{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" }
Consulte este de aplicação cmdline simples para obter detalhes. Além disso, uma biblioteca auxiliar em C# está disponível para habilitar o registro em tempo real e o gerenciamento do status de tarefas para tarefas sem agente. Mais informações
Por que a tarefa falha em 1 minuto quando o tempo limite é maior?
Se a função for executada por mais de 1 minuto, use o evento Callback conclusão. A opção de conclusão de resposta da API é suportada para solicitações concluídas em 60 segundos.
Exemplos
Exemplo de uma Função do Azure que usa o modo de conclusão de retorno de chamada
#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);
}
}
Requerimentos
| Requisito | Descrição |
|---|---|
| Tipos de pipeline | YAML, Construção clássica, Versão clássica |
| Funciona em | Servidor, ServerGate |
| Exigências | Nenhum |
| Capacidades | Esta tarefa não satisfaz quaisquer exigências para tarefas subsequentes no trabalho. |
| Restrições de comando | Qualquer |
| Variáveis configuráveis | Qualquer |
| Versão do agente | Todas as versões de agente suportadas. |
| Categoria de tarefa | Utilidade |
Ver também
- Automatizar implantações do Azure Functions com o Azure Pipelines
- de trabalho sem agente