在CircleCI部署后在服务器上执行操作

时间:2016-10-12 10:29:28

标签: django ssh deployment circleci

我有一个使用CircleCI在服务器上部署的Django项目。服务器是一个基本的云服务器,我可以通过SSH进入它。

我设置了deployment文件的circle.yml部分,一切正常。我希望在部署后自动在服务器上执行某些操作(例如迁移数据库或重新加载gunicorn)。

我有办法用CircleCI做到这一点吗?我查看了文档,但无法找到与此特定问题相关的任何内容。我也尝试在部署步骤之后放置ssh user@my_server_ip,但后来我卡住了,无法执行任何操作。我可以成功SSH,但其他命令不会被调用。

这是我理想的circle.yml文件的样子:

deployment:
  staging:
    branch: develop
      commands:
        - rsync --update ./requirements.txt user@server:/home/user/requirements.txt
        - rsync -r --update ./myapp/ user@server:/home/user/myapp/
        - ssh user@server
        - workon myapp_venv
        - cd /home/user/
        - pip install -r requirements.txt

1 个答案:

答案 0 :(得分:1)

我通过在服务器上放置一个post_deploy.sh文件并将此行放在circle.yml上解决了这个问题: ssh -i ~/.ssh/id_myhost user@server 'post_deploy.sh' 它执行post_deploy.sh文件中的指令,这正是我想要的。