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
文件中的指令,这正是我想要的。
我有一个使用 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
文件中的指令,这正是我想要的。