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

如何在Jenkins上构建并部署可常驻运行的FastAPI Python脚本?

解决Jenkins流水线中FastAPI后台运行的问题

你的核心问题是python api.py以前台方式启动,占用了Jenkins的shell进程,导致构建一直等待进程结束而无法完成。要实现构建成功并让FastAPI持续运行,需要把FastAPI放到后台启动,同时处理进程冲突和日志输出。

修改后的Jenkins流水线脚本

agent any
    stages {
        stage('拉取代码') {
            steps {
                git url: 'https://gitlab.com/something1234/test.git', branch: 'hello'
            }
        }
        stage('部署FastAPI'){
            steps {
                sh """
                    # 杀死之前运行的FastAPI进程(避免端口冲突)
                    pkill -f "python api.py" || true
                    
                    # 激活conda环境
                    . /home/soleman/anaconda3/bin/activate tensor2
                    conda activate tensor2
                    
                    # 后台启动FastAPI并持久化日志
                    nohup python api.py > /var/log/fastapi.log 2>&1 &
                    
                    # 验证进程是否正常启动
                    sleep 2
                    if pgrep -f "python api.py"; then
                        echo "FastAPI 启动成功"
                    else
                        echo "FastAPI 启动失败"
                        exit 1
                    fi
                """
            }
        }
    }
}

关键修改说明

  • 杀死旧进程:pkill -f "python api.py" || true会匹配所有运行python api.py的进程并杀掉,|| true确保没有旧进程时命令不会报错,避免构建失败。如果FastAPI用固定端口,也可以用端口过滤:lsof -i :8000 | grep LISTEN | awk '{print $2}' | xargs kill -9 || true(替换8000为你的端口)。
  • 后台启动:nohup ... &组合实现两个效果:nohup让进程在Jenkins shell退出后继续运行,&让进程后台执行,不占用当前shell。
  • 日志重定向:> /var/log/fastapi.log 2>&1把标准输出和错误输出都写入日志文件,既避免Jenkins捕获输出导致阻塞,也方便后续排查问题。
  • 启动验证:sleep 2等待进程启动,pgrep检查进程是否存在,确保部署成功才结束构建。

注意事项

  1. 确保Jenkins用户有杀死进程和写入日志目录的权限(比如/var/log需要适当权限,或者把日志放到代码目录里)。
  2. 如果你的FastAPI启动命令需要指定端口或其他参数,直接加到python api.py后面即可(比如python api.py --port 8080)。
  3. 若conda环境激活失败,检查Jenkins用户是否能访问/home/soleman/anaconda3目录,必要时修改目录权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:46:43