又一个项目部署和发布工具

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.nn.n.nann.n.nbndev.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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
NetBeans中的Java Swing滚动窗格   java如何与具有复合键的表建立关系?   Android中读取文件时java数据丢失   java黄瓜场景。embed在ubuntu机器上不工作?   java从spring mvc控制器操作中,我如何获得请求/响应的访问权限?   java减去两个长值   java选择下一个值firebase 安卓   用于起始和结尾连字符的java正则表达式   Java正则表达式解释   java Lifefay freemarker ADT:方法不可用?   java我怎样才能让我的开关盒作用于JFrame?   java在我的场景中使用连接池的理想方式是什么   java我如何接受jsoup的cookies?   java如何将整数数组更改为字符串数组?   java Android操作\u指针\u向上直到剩余触摸移动时才调用   java为什么gradle会出错?   io如何在java中复制/拆分输入流?   java使JButton不可见,但尊重其原始空间   java Spring提交表单获取复选框值不起作用