从tarballs原子地部署代码
tarball-deplo的Python项目详细描述
tarball deploy-从tarballs原子地部署代码
tarball-deploy
是一个实用程序,用于帮助部署
(那件事)打包进焦油档案馆。它负责打开收到的档案,
以及原子地切换到新版本(使用一点符号链接魔法)。
用例
tarball-deploy
是在考虑共享web托管服务的情况下编写的,
它通常授予您ssh访问共享服务器的权限,以及一个或多个
public_html
目录,你应该把你的网站文件放在那里(例如。
静态html或php脚本)。此工具试图解决以下问题
问题:
- 如何从CI/CD管道复制网站的新版本(您有 一个,对吧?)给你的服务器。
- 如何原子地切换到新版本,以便站点处于 始终保持一致状态。
- 如何在部署前后安全地调用附加钩子(f.ex. 重新启动web服务器),但不允许ci运行程序 在服务器上执行任意命令。
要求
- 一个像样的类unix系统,它可以让您安装定制的python脚本
- 一个
tar
实现。已知gnu tar和libarchive(freebsd)tar 工作。
安装
请记住,tarball-deploy
应该安装在您的服务器上。这个
最简单的方法是用pip
:
$ pip install tarball-deploy
但是,您可能希望或需要将其安装在virtualenv和symlink中 在你的某处。
用法
要使用tarball-deploy
,首先需要将代码打包到tar存档中。
这超出了本项目的范围,但通常您可以执行以下操作:
$ tar cf release.tar index.html style.css images/**
然后您可以从下面继续您首选的部署方法。
从本地计算机部署
$ ssh your-username@your-host tarball-deploy --workdir=/your/remote/deployment/dir < release.tar
如果出现问题,可以快速恢复到以前的部署:
$ ssh your-username@your-host tarball-deploy --workdir=/your/remote/deployment/dir --rollback
从ci
部署对于您要管理的每个网站,您都需要:
- 为ci运行程序生成ssh密钥对
- 在服务器上编辑
.ssh/authorized_keys
,并添加类似的内容:restrict,command="tarball-deploy --workdir=/your/remote/deployment/dir" ssh-rsa AAAAB3Nza...
- 符号链接
/your/remote/deployment/dir/current
到您的网站所在的位置 服务器需要找到您的站点内容(通常是~/domains/example.com/public_html
)
调用其他钩子
将pre-deploy
和post-deploy
脚本放入
/your/remote/deployment/dir/hooks
。它们需要标记为可执行文件。
学分
由Piotr Śliwka创建
许可证
麻省理工学院