又一个项目部署和发布工具
ribosome.tool的Python项目详细描述
核糖体
这个工具的目的是改善小型项目的发布文化, 提供有用的惯例和合适的词汇 软件部件,简化简单服务的制作和部署。
核糖体强加了一些合理的概念和假设,我相信, 可以澄清发布过程,并有助于广泛的项目。
让我们从描述我认为合适的发布过程开始。 你有一个项目-一些版本控制的东西,一个源代码库 例如。在某个时间点,您决定通过标记冻结其状态 有版本。然后构建它,对它运行测试,并归档所有需要的文件 作为发行版(发行档案)。你把档案上传到 储存以供进一步使用。下一步是将版本部署到 通过加载一个或多个具有适当配置的服务来放置和运行 附属的。注意,支持释放之间的清晰分离是至关重要的, 部署和运行阶段。此外,有价值的特性是再现性和 台阶的等幂性。简而言之,所描述的过程是可以实现的 借助于核糖体和一点自律。
开始
核糖体可用于PYPI: https://pypi.org/project/ribome.tool/
要安装,请使用pipenv(当然也可以是pip):
$ pipenv install ribosome.tool
阅读帮助:
$ ribosome --help
Usage: ribosome [OPTIONS] COMMAND [ARGS]...
Yet another project deploy and release tool
Options:
-v, --verbose More detailed logging to console
-f, --force Rewrite existing files
--version Show the version and exit.
--help Show this message and exit.
Commands:
deploy Deploy release artifacts to host
do Run command for service at remote host
gc Uninstall deployed versions at remote host
init Initialize Ribosome project
jump Reload all services to version at remote host
load Load service at remote host
ls List deployed versions at remote host
release Make release and publish artifacts
show Show loaded services at remote host
unload Unload service at remote host
version Show version or update meta descriptor
以及特定命令的帮助:
$ ribosome <command> --help
典型工作流程
首先,在项目文件夹的根目录中,文件codons.yaml
应该放在-这是核糖体的各种设置的地方。
您可以通过以下命令生成一个空值:
$ ribosome init
假设您已经通过codons.yaml
为您的项目配置了核糖体。-
我稍后将介绍如何执行此操作。
核糖体发布项目版本,即源代码库的命名标签。
标记应采用以下形式之一:n.n.n
,n.n.nan
,n.n.nbn
和dev.xxxx
。-
其中,n
表示一个数字,xxxx
表示任何允许带点的字母数字后缀。
您可以随时了解项目文件夹的版本:
$ ribosome version info
使用版本标记存储库后,可以发布:
$ ribosome release
在这个过程中,发布档案被制作并上传到amazon s3 bucket。 S3访问的凭据应为 已配置 在环境中。
任何上传到s3版本的文件都可以部署到可通过ssh访问的远程主机:
$ ribosome deploy <version> <host>
在远程主机上,~/releases
文件夹用于存档上载和
~/projects
用于发布部署和管理。
在部署过程中,将设置运行时环境。
之后,发布文件和运行时被认为是不可变的。
这个和任何其他使用ssh的核糖体操作(使用host
参数的操作)
要求您在~/.ssh/config
对于已部署的版本,您可以加载和卸载服务:
$ ribosome load <version> <service> <config> <host>
在简单升级的情况下,当所有感兴趣的服务都已经在主机上运行时, 您可以快速将它们全部重新加载(跳转)到新版本:
$ ribosome jump <version> <host>
加载、卸载和跳转命令需要输入远程主机的sudo密码。
当(卸载)服务时核糖体将其状态保存在文件中
~/projects/<;project>;/services.index.yaml
以便您可以轻松查看
通过命令当前项目的远程主机的状态:
$ pipenv install ribosome.tool
0
或者,添加选项-a
将扫描所有项目的服务
枯竭在主机上播放:
$ pipenv install ribosome.tool
1
您可以随时使用以下命令列出当前项目的已部署版本:
$ pipenv install ribosome.tool
2
或使用-a
选项获取所有项目的列表。
可以使用以下命令从远程主机中删除已部署的版本:
$ pipenv install ribosome.tool
3
其中第一个参数是版本模式-符号*
和?
被识别。
此命令无法删除当前已加载服务的版本,
您应该卸载版本中的所有服务才能将其删除。
项目配置
技术上,核糖体只是简单的命令和远程命令运行器 很少有供应链管理的功能。 就功能而言,它不做任何特殊或复杂的事情。 它所做的是分离关注点和操作规范 以确保发布过程的可重复性和不变性。
核糖体本身不知道如何发布项目或加载服务。 它只为这些操作提供结构或接口。
因此,要通过文件codons.yaml
为核糖体配置项目-
您需要提供构建、设置和其他命令-项目的发布过程
核糖体界面的实现。
请参阅示例 nginx配置文件 和 django项目
致谢
此项目是在ordery公司的支持下创建的, 感谢您提供的机会和理解。
关于核糖体这个名字,我非常感谢 ievgenia prekrasna