从github存储库中自动释放。

release-bot的Python项目详细描述


发布bot的发布Build status

在github和pypi上自动发布。

说明

这是一个帮助维护者向用户交付软件的机器人。它是用来监视github存储库的 释放拉取请求。PR必须以下列格式之一命名:

  • 0.1.0版本如果要创建"0.1.0"上游版本
  • 新的主要版本,然后release bot将启动从"1.2.3"到"2.0.0"的版本
  • 新的次要版本例如"1.2.3"到"1.3.0"
  • 新补丁发布例如"1.2.3"到"1.2.4"

release bot现在仅与semver一起使用。 一旦pr合并,bot将分别创建一个新的github版本和一个pypi版本。 更改日志将从 存储库,必须命名为changelog.md。新的更改日志 版本必须以版本标题开头,即0.1.0。 此标题和以前版本的标题之间的所有内容都将被拉入更改日志。

或者,您可以让机器人完成枯燥的工作,更新\u版本 变量,并使用来自git日志的提交消息填充changelog。 您可以通过创建问题来触发此操作,并将其命名为与发布PR相同的名称,例如0.1.0 releasenew major releasenew minor releasenew patch release。 在此之后,您所要做的就是合并bot将生成的pr。

机器人与 pypa/setuptools\u scm插件。如果 你在使用它,你根本不需要关心\u版本。你可以 同时确保bot会在pypi发布之前 发布软件后,它会检查git repo中的标记。

需要一个release-conf.yaml文件。有关详细信息,请参见配置部分。

一旦github版本完成,bot将把这个版本上传到pypi。 请注意,您必须设置您的登录详细信息(请参见要求)。

在本地试用

$ pip install release-bot

其他可能的安装是通过 dockeropenshiftarch user repository

与release bot的第一个交互可能是github上的自动发布。我们来吧。

<H4>1。创建上游存储库或使用现有存储库

这是一个上游存储库,用于发布新版本。

在上游存储库中创建release-conf.yaml文件,其中包含有关如何发布特定项目的信息。 复制并编辑release-conf.yaml

release-conf.yaml末尾添加这行代码:

# whether to allow bot to make PRs based on issuestrigger_on_issue:true

有关可能的高级设置检查" rel="nofollow">上游存储库的文档

<H4>2。创建conf.yaml

创建配置文件conf.yaml。您可以使用此存储库中的一个。您需要生成一个github个人访问令牌。 访问令牌的建议权限是:repodelete\u repouser

conf.yaml末尾添加这行代码:

# Name of the account that the github_token belongs to# Only needed for triggering the bot on an issue.github_username:<your_github_username>

注意:此文件不应存储在上游存储库中,因为它包含敏感数据。

有关可能的高级设置,请检查专用存储库的文档。 另外,如果您希望包含PYPI版本,请参见需求

<H4>3。运行发布程序

此时,将安装Release bot。至少设置了两个配置文件release-conf.yamlconf.yaml(可选.pypirc)。

通过命令启动bot: $release bot-c<;path_to_conf.yaml>;--调试 您可以向下滚动并查看运行bot的调试信息。

<H4>4。制作新版本
  • 在上游存储库中创建一个标题为0.0.1 release的问题。您可以选择自己的版本号。
  • 等待机器人基于此问题创建新的PR(刷新间隔在conf.yaml中设置)。
  • 一旦公关被合并,bot将发布一个新版本。
  • 查看github上游存储库的发布页面,您将看到新的发布版本0.0.1

从现在起,您可以通过创建问题来自动创建发行版。

文档

配置

有两个yaml配置文件:

  1. conf.yaml--bot本身的配置,其中包含一些敏感数据(建议存储在私有repo中)
  2. release-conf.yaml--存储在上游存储库中,包含有关如何发布特定项目的信息。
  3. < > >

    专用存储库

    您需要设置一个git存储库,在其中存储conf.yaml.pypirc文件。 如果这不是本地存储库,请确保它是私有的,以防止任何私有信息泄漏。 如果conf.yaml的路径未通过-c/--配置传递给bot, 机器人将尝试在当前工作目录中找到它。

    下面是conf.yaml配置选项:

    <表><广告>选项 说明 必需的< /广告><正文>存储库名称GitHub存储库的名称 >是存储库所有者存储库的所有者 >是github_令牌Github个人访问令牌 >是github_用户名github_标记所属的帐户的名称。只需要在出现问题时触发bot。Github应用程序安装IDGitHub应用程序的安装ID(编号)。Github应用程序IDGitHub应用程序的ID(编号)。Github应用程序证书路径GitHub作为GitHub应用程序的身份验证机制提供的证书的路径。刷新间隔检查存储库之间的时间(秒)。默认值为180克隆URL URTUS复制github存储库。默认情况下,使用https变量。

    在这个存储库中可以找到名为conf.yaml的配置示例。

    关于github_token,通常最好为bot创建一个github帐户 (并使用其github api令牌) 因此,您可以跟踪bot所做的更改以及您自己的更改。

    您还可以创建一个github应用程序,并将其用作 机器人。为此,您需要指定三个前缀为的配置值 Github_应用程序

    注意:如果上游存储库是a私有github存储库,则需要指定ssh url 作为conf.yaml中的克隆URL选项。这将允许bot在从上游存储库提取数据时使用ssh进行身份验证。

    上游储存库

    您还必须在上游项目存储库的根目录中有一个release-conf.yaml文件。 以下是可能的选项:

    <表><广告>选项 含义必需的< /广告><正文>更改日志变更日志项列表。如果为空,则changelog默认为$version release作者姓名更改日志的作者名称。如果未设置,则使用合并提交的作者作者电子邮件更改日志的作者电子邮件。如果未设置,则使用合并提交的作者pypi是否在pypi上发布。默认情况下为truepypi_项目PYPI存储库的名称触发问题 是否允许bot根据问题生成prs。默认为False。标签bot将发布的标签列表和prs

    名为release conf example.yaml rel="nofollow">release conf example.yaml的示例配置可以在这个存储库中找到。

    要求

    requirements.txt中指定。 必须在$home/.pypirc中设置pypi登录详细信息,如中所述 pypi文档

    Docker图像

    为了更容易运行此程序,发行版bot作为 源到映像生成器映像。

    然后您可以创建这样的最终图像:

    $ s2i build $CONFIGURATION_REPOSITORY_URL usercont/release-bot app-name
    

    其中$configuration_repository_url是指向包含conf.yaml和.pypirc文件的存储库的链接。

    要在本地测试它,您可以运行这样的最终图像:

    $ docker run <app-name>
    

    一旦所有更改都存在于github中,git存储库包含所需的文件, 您可以尝试在github存储库中使用类似"x.y.z release"的字符串创建问题。 您可以看到这样的日志:

    $ docker run meta-test-family-bot
    ---> Setting up ssh key...
    Agent pid 12
    Identity added: ./.ssh/id_rsa (./.ssh/id_rsa)
    11:47:36.212 configuration.py  DEBUG  Loaded configuration for fedora-modularity/meta-test-family
    11:47:36.212 releasebot.py     INFO   release-bot v0.4.1 reporting for duty!
    11:47:36.212 github.py         DEBUG  Fetching release-conf.yaml
    11:47:51.636 releasebot.py     DEBUG  No merged release PR found
    11:47:52.196 releasebot.py     INFO   Found new release issue with version: 0.8.4
    11:47:55.578 releasebot.py     DEBUG  No more open issues found
    11:47:56.098 releasebot.py     INFO   Making a new PR for release of version 0.8.5 based on an issue.
    11:47:57.608 utils.py          DEBUG  ['git', 'clone', 'https://github.com/fedora-modularity/meta-test-family.git', '.']
    ...
    

    openshift模板

    您还可以使用此存储库中的openshift template.yml在openshift中运行此bot。 必须设置两个环境变量,$app_name是发布bot部署的名称, 以及$configuration_repository其中包含版本bot的配置。 存储库的内容如上文所述。 注意,如果您使用私有存储库(您绝对应该使用私有存储库)。 您需要设置一个新的openshift secret命名 释放bot secret进行身份验证。它可以是ssh私钥,您可以使用它来访问存储库 (有关github,请参见部署键)。 以下是关于 如何在openshift gui或其他 指南 使用oc命令行工具。

    默认情况下,当 此图像的新版本被推送到Docker Hub。 您可以通过取消注释importpolicy:行来更改它。 以及在openshift template.yml中的scheduled:true。 然后图像将在新版本上被拉取。

    架构用户存储库

    对于基于Arch或Arch的Linux发行版,可以从aur包安装bot。 您可以使用您喜爱的aur助手来安装该软件包。例如:

    $ aurman -S release-bot
    

    您还可以使用pkgbuild。 要构建包,请下载pkgbuild并执行:

    $ makepkg -cs #c flag cleans the extra remaining source and compiled files. s flag installs the dependencies if you don't have it. 
    

    要安装软件包,请执行,

    $ sudo pacman -U release-bot-...tar.xz
    

    贡献

    如果您有兴趣为发布bot项目做出贡献,请阅读贡献指南了解更多信息。

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

    推荐PyPI第三方库


热门话题
java Apache Flink外部Jar   创建和强制转换对象数组时发生java错误   Java,添加数组   具有相同包结构和类的java JAR   java Jenkins未能构建Maven项目   java为什么一个forloop比另一个更快,尽管它们做的“一样”?   servlets在将“/”站点迁移到Java EE包时处理contextpath引用   无法解析java MavReplugin:2.21或其某个依赖项   泛型如何编写比较器来泛化Java中的两种类型的对象?   java Android Emulator未在netbeans上加载   多线程Java使用线程对数组中的数字求和:在同步块中使用新变量作为锁:差异   java如何在JSP/servlet中设置<input>标记的值?