我已经创建了处理某些逻辑的Azure批处理服务。我想从发布管道中调用Azure批处理作为空进程。有可能吗?
Azure批处理服务是在.net控制台应用程序中的Azure批处理SDK中编写的
或者我想从Azure管道调用Azure函数,这将间接调用Azure批处理。
请建议
答案 0 :(得分:-1)
在Azure管道中使用YAML,您可以调用Azure函数https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/azure-function?view=azure-devops
从Azure功能中,您可以使用azure Batch SDK访问Azure Batch客户端
我实际上使用了3种Azure功能,一种用于创建批处理(“池和作业”),一种用于监视(在作业中完成任务),另一种用于在完成后进行清理(“删除池”)。
[FunctionName("StartBatch")]
public static async Task StartBatch([QueueTrigger("batchprocess", Connection = "QueueStorage")] Batch batch, ILogger log)
{
log.LogInformation($"Function processed a request for {batch}");
int batchDelay = Int32.Parse(Environment.GetEnvironmentVariable("BatchDelay"));
string batchAccountUrl = Environment.GetEnvironmentVariable("BatchAccountUrl");
try
{
Task<string> tokenProvider() => Utils.GetAuthenticationTokenAsync();
using (var client = BatchClient.Open(new BatchTokenCredentials(batchAccountUrl, tokenProvider)))
{
Infrastucture.BuildBatchInfrastructure(client, batch, log);
await client.JobOperations.AddTaskAsync(batch.JobName, Job.AddTasksAsync(batch, log).Result);
}
log.LogInformation($"Waiting {batchDelay} minutes until starting montioring the batch {batch}");
await Utils.AddMessageToQueue(batch, batchDelay, "monitorbatch");
}
catch (Exception exp)
{
log.LogError("Issue ", exp.StackTrace);
await Utils.AddMessageToQueue(batch, 0, "failedbatchprocess");
}
}