用于查找基于zuul的ci系统中使用的作业和角色的索引

zubbi的Python项目详细描述


构建状态

欢迎使用zuul积木索引>

< BR>

zuul构建块索引(aka zubbi)使搜索可用的 作业和角色("构建块")在azuul中 基于ci系统-即使它们分布在多个租户或存储库中。


内容:体系结构| 快速启动| 开发| 刮刀使用情况| 配置示例| 可用连接


架构

zubbi architecture

zubbi由两部分组成,zubbi webzubbi scraper。它使用 ElasticSearch作为存储后端,需要Git存储库 工作和角色定义的来源。

Zubbi网络

基于flask的web前端,从elasticsearch读取数据。它允许 搜索CI系统中使用的角色和作业并显示结果 包括他们的文档,最后的更新,变更日志和一些附加的元 数据:

Zubbi刮刀

一个python应用程序,它可以清理git存储库,搜索job和 特定文件中的角色定义并将其存储在ElasticSearch中。

快速启动

先决条件:docker compose

只需使用提供的docker compose.yaml文件即可启动Zubbi。


注意 提供的dockerfile应仅用于演示目的,而不是 在生产系统中。Flask正在开发模式下运行并侦听所有 公共IP,使其可以从Docker容器外部访问。


要使整个堆栈正常运行,请执行以下操作:

$ cd docker
$ docker-compose build
$ docker-compose up

这将用最新的zubbi版本构建docker容器,开始全部 必要的服务(elasticsearch、zubbi scraper、zubbi web)和 擦掉openstack infra/zuul作业 数据:

当一切就绪时,您可以访问http://localhost:5000并探索作业 以及来自openstack infra/zuul作业的角色

开发

先决条件:python 3.6、tox pipenv已安装。

要安装开发所需的依赖项,请运行:

$ pipenv shell
$ pipenv install --dev

我们正在使用黑色来确保 格式良好的python代码。要在每次提交时自动确保这一点,可以 使用包含的预提交挂钩。要安装挂钩,只需运行:

$ pre-commit install

在提交请求之前,请使用tox运行测试和静态代码检查:

$ tox

安装和更新依赖项

应在setup.py文件中的requires列表中添加新的依赖项:

requires=["arrow","click",...,"<new dependency>",]

然后,运行以下命令更新pipfile.lock并安装 本地pipenv环境中的新依赖项:

$ pipenv update

测试依赖项应安装为开发依赖项:

$ pipenv install --dev my-test-dependency

将依赖项更新到最新版本或在新的依赖项 安装后,您必须运行tox-e更新要求并提交更改的 pipenv和需求文件。

配置并启动zubbi

如果到目前为止您遵循了《开发》指南 拥有一个包含运行zubbi所需的所有包的虚拟环境。剩下什么了, 是一些用于测试的配置文件和本地ElasticSearch实例。

弹性搜索

Zubbi目前依赖ElasticSearch作为数据后端。如果你有 docker compose已安装,您可以使用 提供的docker compose.yaml文件可在本地启动ElasticSearch。

$ cd docker
$ docker-compose up elasticsearch

如果没有,我们建议使用最新可用的ElasticSearch Docker图像 启动并运行本地实例进行开发。

配置

zubbi scraper和zubbi web都从文件路径读取它们的配置 通过zubbi_设置给定环境变量:

$ exportZUBBI_SETTINGS=$(pwd)/settings.cfg

为了在zubbi中显示工作和角色,我们需要提供 租户配置 至少包含一个存储库(用作源)。 因此,在tenant config.yaml文件中输入以下内容:

$ cd docker
$ docker-compose build
$ docker-compose up
0

settings.cfg中输入以下内容以允许根据租户进行刮擦 上面的配置并将结果存储在本地ElasticSearch实例中。 请注意,连接字典中的键必须与 租户配置中的源名称。

$ cd docker
$ docker-compose build
$ docker-compose up
1

运行zubbi

现在我们可以擦掉openstack infra/zuul作业 将工作和角色放入ElasticSearch并在Zubbi中显示:

$ cd docker
$ docker-compose build
$ docker-compose up
2

当scraper运行成功时,我们可以启动zubbi web来查看 我们的数据:

$ cd docker
$ docker-compose build
$ docker-compose up
3

用pygments构建突出显示样式表的语法

我们使用预构建pygments样式表来突出显示 工作和角色文件。如果要重新生成此语法突出显示 样式表(例如,要尝试另一种突出显示样式),可以运行以下命令 命令:

$ cd docker
$ docker-compose build
$ docker-compose up
4

刮刀使用

Zubbi scraper支持两种不同的模式:周期(默认)和立即。 要以周期模式启动刮板,只需运行:

$ cd docker
$ docker-compose build
$ docker-compose up
5

这还应该清除租户配置中指定的所有存储库 这是第一次。

要立即清理一个或多个存储库,可以使用以下命令:

$ cd docker
$ docker-compose build
$ docker-compose up
6

此外,scraper还提供了一个list repos命令来列出所有 可用的存储库以及一些附加信息,如 上次刮除时间戳和Git提供程序(连接类型):

$ cd docker
$ docker-compose build
$ docker-compose up
7

配置示例

所有可用设置的示例可以在settings.cfg.example

租户配置

Zubbi需要知道哪些项目包含 在CI系统中使用。为了达到这个目的,它使用了zuul的 租户配置。 通常,此租户配置存储在必须指定的文件中 在settings.cfg中,但它可以所以,请从存储库中获取信息。

$ cd docker
$ docker-compose build
$ docker-compose up
8

弹性搜索连接

elasticsearch连接可以在settings.cfg中配置 以下内容:

$ cd docker
$ docker-compose build
$ docker-compose up
9

可用连接

目前,zubbi支持以下连接类型:githubgerrit 以及git。后者可用于不托管在 Github或Gerrit。

Github

github连接使用github的rest api来清理存储库。成为 要使用此连接,您需要创建具有以下内容的GitHub应用程序 权限:

$ pipenv shell
$ pipenv install --dev
0

如果您不确定如何设置github应用程序,请查看 官方指南

成功创建GitHub应用程序后,可以定义连接 使用settings.cfg中的以下参数相应地:

$ pipenv shell
$ pipenv install --dev
1

使用Github Webhooks

github webhooks可以用来保持你的zubbi数据是最新的。 要激活github webhooks,必须提供指向 zubbi web安装的/api/webhook端点。生成的webhook 必须在settings.cfg中的github_webhook_secret设置中指定secret

注意:截至目前,每个连接基不支持Github Webhook。 在zubbi中只能有一个webhook处于活动状态。

$ pipenv shell
$ pipenv install --dev
2

zubbi web从github接收webhook事件,验证机密并发布 通过zmq与scraper相关的事件。 另一方面,zubbi scraper订阅zmq套接字并刮 每当接收到事件时都需要存储库。为了做这个 通信工作,您需要在settings.cfg中指定以下参数:

$ pipenv shell
$ pipenv install --dev
3

格瑞特

与github相反,gerrit连接基于 gitpython作为gerrit rest api 不支持所有用例。要使用此连接,您必须 在settings.cfg中提供以下参数:

$ pipenv shell
$ pipenv install --dev
4

GIT

git连接也基于 gitpython可用于git 不是托管在github或gerrit上的存储库。要使用此连接, 在settings.cfg中输入以下内容:

$ pipenv shell
$ pipenv install --dev
5

快乐编码!< /P>

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

推荐PyPI第三方库


热门话题
java在某些练习中避免索引异常   java Android,如何在具有socket的网络区域上提高性能?   更改web中的执行顺序后,JavaServlet过滤器不起作用。xml   java如何绑定泛型类?   JavaGmail RESTAPI:使用Google凭证而不模拟   java是解码整数序列的最快方法   java根据hashmaps的值(通过map的值进行比较)对hashmaps的数组列表进行排序   用于JBoss 7.1或Apache的java负载平衡器,带有Healt检查   java非常慢的MySQL读取性能   java如何在使用iRetryAnalyzer时从Windows CMD关闭Selenium WebDriver?   java随机闪烁仅出现在Galaxy Note 4上   java AttributeOverride MappedSuperClass属性的类型不同   java JPA:如何检测现有实体是否已更新?   java如何使用mavenassemblyplugin从dependencySet中删除METAINF?   安装SecurityManager时,java MQQueueManager构造函数挂起