【问题标题】:jenkins start django server after successful buildjenkins 构建成功后启动 django 服务器
【发布时间】:2014-07-18 18:57:58
【问题描述】:
我们使用jenkins 作为持续集成系统。我们有两台由jenkins 验证的 django 服务器。
jenkins 成功验证第一台服务器。第二台服务器依赖于第一台服务器。因此,我们希望在第一个服务器验证结束时启动第一个服务器本身。
我们使用 python、virtualenv 和 django 并定义Virtualenv Builder 如下:
pip install -r requirements.txt
rm -f .coverage
fab localhost test
coverage xml
nohup python manage.py runserver 9090 &
问题是由于 nohup,构建永远不会结束。
构建成功后如何启动服务器?
【问题讨论】:
标签:
django
jenkins
virtualenv
【解决方案1】:
我遇到了同样的问题。
肯,
我尝试使用fabric,但再次python manage.py runserver - 连续运行,所以下一个命令没有启动。
就在几分钟前,我的同事向我展示了如何使用 nohup 和 Jenkins 的变量 BUILD_ID,从构建中获得成功并离开Django 服务器运行:
BUILD_ID=dontKillMe nohup python manage.py runserver host_server &
这适用于我们的 Django 项目测试。
【解决方案2】:
由于您使用 fabric 进行测试,我建议您定义另一个 fabric 任务,例如,deploy,假设构建成功。
就像对 fab 的调用完成成功构建一样,您会到达 nohup 行,我希望 deploy 任务也会返回。
您可能还想考虑将服务器设为服务(通过/etc/init.d 样式脚本,或upstart如果是 Ubuntu),并让 fabric 任务停止当前正在运行的任务,复制它需要的任何新文件(或类似进程),然后重新启动它。
假设您上面有一个 bash 脚本或类似的脚本,您可能还想定义 set -e 以便在任何命令返回不成功代码的情况下,脚本将失败,进而导致构建失败。