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

Perform actions on server after CircleCI deployment

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

我设置了 circle.yml 文件的 deployment 部分,一切正常。我想在部署后自动在服务器上执行一些操作(例如迁移数据库或重新加载 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

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