Azure Web 作业 运行 一次
Azure Web Job Run Once
我想在部署时使用一次 Azure Web 作业 运行(从 Github 持续部署)。在我的控制台应用程序中,我只是打印一行并退出。我选择连续的时间表:
namespace MyApp.Deployment
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Performing EF Migrations at " + DateTime.Now.ToLongDateString());
//run EF migrations here.
//Can't run migrations in my web service App_Start because web service connects as a limited SQL user.
Console.WriteLine("Migrations complete");
}
}
}
但是 azure 只是在 1 分钟的时间间隔后 运行ning 这个应用程序。有没有办法告诉azure不要重启?
部署后立即 运行 PS1 脚本有更好的方法吗?
似乎无法在部署后 运行 Web 作业。我最接近的是使用 WebJobs REST api 在部署期间触发 webjob(通过 deploy.cmd),但这不起作用,因为网站(包括 webjobs)在部署期间关闭。
我能够通过以下方式完成此操作:
将控制台应用程序创建为 Web 作业并将其设置为使用手动触发器。在我的例子中,控制台应用程序只是创建一个 DbMigrator,设置连接字符串(来自环境变量)然后调用 Update()。
使用新的 Web 作业部署您的应用程序。登录kudu控制台,确定your_console_app.exe的路径。然后创建自定义 kudu deploy.cmd,并确保在 KuduSync 部分之后调用您的网络作业。
下次部署时,您的控制台应用程序将 运行 在构建和部署所有文件后,您可以在 Kudu 或 azure 门户中看到输出.
希望这对某人有所帮助。
将您的控制台应用程序部署为具有空计划的触发式 Web 作业。
使用 kudu API 从 CI/CD 管道启动 webjob。通过以下脚本为其使用 PowerShell 任务:
$kuduApiAuthorisationToken ="Basic {0}" -f
[Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f
$env:Username, $env:Password)))
$kuduApiUrl =
"https://$env:WebAppName.scm.azurewebsites.net/api/triggeredwebjobs/DbUp/run"
Invoke-RestMethod -Uri $kuduApiUrl -Headers
@{"Authorization"=$kuduApiAuthorisationToken;"If-Match"="*"} -Method POST
-ContentType "application/json"
您可以从应用发布配置文件中获取用户名和密码。 -ContentType “application/json 很重要。没有它你会误导 403 - 应用已停止
无论网络应用程序停止或 运行。
,此解决方案都有效
我想在部署时使用一次 Azure Web 作业 运行(从 Github 持续部署)。在我的控制台应用程序中,我只是打印一行并退出。我选择连续的时间表:
namespace MyApp.Deployment
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Performing EF Migrations at " + DateTime.Now.ToLongDateString());
//run EF migrations here.
//Can't run migrations in my web service App_Start because web service connects as a limited SQL user.
Console.WriteLine("Migrations complete");
}
}
}
但是 azure 只是在 1 分钟的时间间隔后 运行ning 这个应用程序。有没有办法告诉azure不要重启?
部署后立即 运行 PS1 脚本有更好的方法吗?
似乎无法在部署后 运行 Web 作业。我最接近的是使用 WebJobs REST api 在部署期间触发 webjob(通过 deploy.cmd),但这不起作用,因为网站(包括 webjobs)在部署期间关闭。
我能够通过以下方式完成此操作:
将控制台应用程序创建为 Web 作业并将其设置为使用手动触发器。在我的例子中,控制台应用程序只是创建一个 DbMigrator,设置连接字符串(来自环境变量)然后调用 Update()。
使用新的 Web 作业部署您的应用程序。登录kudu控制台,确定your_console_app.exe的路径。然后创建自定义 kudu deploy.cmd,并确保在 KuduSync 部分之后调用您的网络作业。
下次部署时,您的控制台应用程序将 运行 在构建和部署所有文件后,您可以在 Kudu 或 azure 门户中看到输出.
希望这对某人有所帮助。
将您的控制台应用程序部署为具有空计划的触发式 Web 作业。
使用 kudu API 从 CI/CD 管道启动 webjob。通过以下脚本为其使用 PowerShell 任务:
$kuduApiAuthorisationToken ="Basic {0}" -f [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $env:Username, $env:Password))) $kuduApiUrl = "https://$env:WebAppName.scm.azurewebsites.net/api/triggeredwebjobs/DbUp/run" Invoke-RestMethod -Uri $kuduApiUrl -Headers @{"Authorization"=$kuduApiAuthorisationToken;"If-Match"="*"} -Method POST -ContentType "application/json"
您可以从应用发布配置文件中获取用户名和密码。 -ContentType “application/json 很重要。没有它你会误导 403 - 应用已停止
无论网络应用程序停止或 运行。
,此解决方案都有效