Как обсуждалось в комментариях, один из способов сделать это - добавить новую задачу в ваш конвейер выпуска.
Вот что я понял о вашей настройке из вашего вопроса:
[FunctionName("ClientFunction")]
public static async Task<HttpResponseMessage> OnHttpTriggerAsync([HttpTrigger(AuthorizationLevel.Anonymous, "post")]
HttpRequestMessage request, [OrchestrationClient] DurableOrchestrationClient starter, ILogger logger)
{
// Triggers the orchestrator.
string instanceId = await starter.StartNewAsync("OrchestratorFunction", null);
return new HttpResponseMessage(HttpStatusCode.OK);
}
[FunctionName("OrchestratorFunction")]
public static async Task DoOrchestrationThingsAsync([OrchestrationTrigger] DurableOrchestrationContext context, ILogger logger)
{
DateTime deadline = context.CurrentUtcDateTime.Add(TimeSpan.FromHours(1));
await context.CreateTimer(deadline, CancellationToken.None);
// Triggers some yout activity.
await context.CallActivityAsync("ActivityFunction", null);
}
[FunctionName("ActivityFunction")]
public static Task DoAnAwesomeActivity([ActivityTrigger] DurableActivityContext context)
{
}
Теперь, каждый раз, когда вы развертываете новую версию приложения-функции, вам необходимо запустить оркестратор.Однако я не думаю, что он может быть запущен сам по себе.
Я предлагаю иметь простой сценарий bash (использующий curl
или что-то еще), который будет вызывать ClientFunction
по соответствующему URL-адресу.
![Bash script](https://i.stack.imgur.com/W9njK.png)
Кроме того, одним из приятных моментов этого решения является то, что вы можете вызвать сбой развертывания, если функция Azure не отвечает.