jenkins成功构建后启动django服务器

时间:2014-07-18 18:57:58

标签: django jenkins virtualenv

我们使用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,构建永远不会结束。

如何在成功构建后启动服务器?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。

肯,

我尝试使用fabric,但是再次使用python manage.py runserver - 连续运行,所以下一个命令没有启动。

就在几分钟之前,我的同事向我展示了如何使用 nohup 和Jenkins的变量 BUILD_ID ,这样就可以从构建中获得成功并离开Django服务器正在运行:

BUILD_ID = dontKillMe nohup python manage.py runserver host_server&

这适用于我们的Django项目测试。

答案 1 :(得分:0)

由于您正在使用 fabric 进行测试,我建议您定义另一个结构任务,例如部署,您可以调用它来假设建立成功。

就像fab对成功构建的调用完成,以便您到达nohup行,我希望部署任务也可以返回。

您可能还需要考虑将服务器设为服务(通过 /etc/init.d 样式脚本或 upstart 如果是Ubuntu),并让 fabric 任务停止当前正在运行的任务,请复制它需要的任何新文件(或类似的进程),然后重新启动它。

假设您拥有上面的 bash 脚本或类似内容,您可能还需要定义set -e,以便在任何命令返回非成功代码的情况下,脚本将失败,反过来会使构建失败。