You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipeline执行自托管API的.exe文件问题求助

解决Azure Pipeline部署自托管API的进程启动与工件解压问题

一、自托管API进程启动异常的解决方法

先明确你尝试的三种命令的核心问题:

  • 直接运行MY_FILE.exe:Pipeline步骤会持续等待进程退出,而自托管API是长运行进程,因此导致步骤无限挂起。
  • call start /b MY_FILE.exe:后台运行的进程依赖Pipeline代理的会话,当Pipeline步骤执行完毕后,代理会话关闭,进程会被系统强制终止,所以无有效进程留存。
  • start cmd /c "MY_FILE.exe":cmd /c会在命令执行完成后立即关闭窗口,API进程随之终止。

推荐解决方案

方案1:将API注册为Windows服务(稳定首选)

用nssm(Non-Sucking Service Manager)把exe包装成Windows服务,进程可脱离会话独立运行,还能通过服务管理器便捷管理启停:

  1. 下载对应系统位数的nssm,放到服务器固定路径(比如C:\Tools\nssm.exe)。
  2. 在Pipeline中添加Command或PowerShell任务,执行以下命令:
    • 停止现有服务(若已注册):nssm stop "MyApiService"
    • 删除旧服务(需更新配置时):nssm remove "MyApiService" confirm
    • 注册新服务:nssm install "MyApiService" C:\PATH_TO_FOLDER\MY_FILE.exe
    • 启动服务:nssm start "MyApiService"

方案2:通过任务计划程序启动进程

创建独立于Pipeline会话的任务,避免进程随会话关闭被终止:

  1. 在服务器打开任务计划程序,新建任务:
    • 触发器选择“按需启动”
    • 操作设置为启动程序,路径指向C:\PATH_TO_FOLDER\MY_FILE.exe
    • 设置勾选“不管用户是否登录都要运行”,取消勾选“停止如果计算机进入空闲状态”
  2. 在Pipeline中执行命令启动任务:schtasks /run /tn "MyApiStartupTask"

二、从Azure工件获取zip并解压到运行路径的步骤

无需依赖IIS,直接在Pipeline中完成全流程部署:

  1. 下载Pipeline工件:添加Download Pipeline Artifacts任务,配置:
    • 工件名称:填写你的工件标识
    • 下载路径:$(Agent.TempDirectory)(代理临时目录)
  2. 终止现有API进程:添加PowerShell任务,执行命令强制终止进程:
    Stop-Process -Name "MY_FILE" -Force -ErrorAction SilentlyContinue
    
  3. 解压文件到目标路径:添加Extract Files任务,配置:
    • 压缩文件路径:$(Agent.TempDirectory)\your-artifact.zip(替换为你的工件zip名称)
    • 目标文件夹:C:\PATH_TO_FOLDER
    • 勾选“覆盖现有文件”
  4. 启动新API进程:使用上述方案1或方案2的命令启动服务/任务。

内容的提问来源于stack exchange,提问作者Gabriel Ricci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 09:36:14