AzureFunction@1 . Вызов задачи "Функция Azure" версии 1
Используйте эту задачу в задании конвейера выпуска без агента , чтобы вызвать функцию, активированную HTTP, в приложении-функции и проанализировать ответ. Приложение-функция должно быть создано и размещено в Функции Azure.
Синтаксис
# 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.
Входные данные
function
- URL-адрес функции Azure
string
. Обязательный.
URL-адрес вызываемой функции Azure. Например, https://azurefunctionapp.azurewebsites.net/api/HttpTriggerJS1
.
key
- Ключ функции
string
. Обязательный.
Функция или ключ узла, используемый для доступа к функции и ее вызова. Чтобы обеспечить безопасность ключа, используйте переменную конвейера секрета для хранения ключа функции. Например, $(myFunctionKey)
. myFunctionKey
— это переменная секрета на уровне среды со значением в качестве секретного ключа.
method
- Метод
string
. Обязательный. Допустимые значения: OPTIONS
, GET
, HEAD
, POST
, PUT
, DELETE
, TRACE
. PATCH
Значение по умолчанию: POST
.
Метод HTTP, с помощью которого будет вызываться функция.
headers
- Заголовки
string
. Значение по умолчанию: {\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}
.
Заголовок в формате JSON, который необходимо вставить в запрос, отправляемый в функцию.
queryParameters
- Параметры запроса
string
.
Строковый запрос, добавляемый к URL-адресу функции. Не должен начинаться с ?
или &
.
body
- Тела
string
. Необязательный элемент. Используйте при method != GET && method != HEAD
.
Текст запроса в формате JSON.
waitForCompletion
- Событие завершения
string
. Обязательный. Допустимые значения: true
(Обратный вызов), false
(ApiResponse). Значение по умолчанию: false
.
Как задача сообщает о завершении.
false
— Ответ API — функция возвращает успешность, а критерии успешности оцениваются как true.true
— Обратный вызов — функция выполняет обратный вызов для обновления записи временная шкала.
successCriteria
- Критерии успешности
string
. Необязательный элемент. Используйте при waitForCompletion = false
.
Критерии успешной задачи. По умолчанию задача возвращает 200 OK
состояние при успешном выполнении.
Пример: для ответа {"status" : "successful"}
выражение может иметь значение eq(root['status'], 'successful')
. Дополнительные сведения об указании условий.
Параметры управления задачами
Помимо входных данных, все задачи имеют параметры управления. Дополнительные сведения см. в разделе Параметры управления и общие свойства задачи.
Выходные переменные
Нет.
Remarks
Используйте эту задачу в задании конвейера выпуска без агента, чтобы вызвать функцию, активированную HTTP, в приложении-функции, созданном и размещенном в Функции Azure, и проанализировать ответ.
Где задача должна сигнализировать о завершении при выборе обратного вызова в качестве события завершения?
Чтобы сообщить о завершении, функция должна получить данные о завершении POST в следующую конечную точку 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" }
Дополнительные сведения см. в этом простом приложении cmdline . Кроме того, доступна вспомогающая библиотека C# для включения динамического ведения журнала и управления состоянием задач без агента. Подробнее
Почему задача завершается сбоем в течение 1 минуты, когда время ожидания истекло?
Если функция выполняется более 1 минуты, используйте событие завершения обратного вызова . Параметр завершения ответа API поддерживается для запросов, которые выполняются в течение 60 секунд.
Примеры
Пример функции Azure, которая использует режим завершения обратного вызова
#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);
}
}
Требования
Требование | Описание |
---|---|
Типы конвейеров | YAML, классическая сборка, классический выпуск |
Выполняется в | Server, ServerGate |
Требования | None |
Capabilities | Эта задача не удовлетворяет требованиям для последующих задач в задании. |
Ограничения команд | Любой |
Устанавливаемые переменные | Любой |
Версия агента | Все поддерживаемые версии агента. |
Категория задач | Служебная программа |