用于查找基于zuul的ci系统中使用的作业和角色的索引
zubbi的Python项目详细描述
>
< BR>zuul构建块索引(aka zubbi)使搜索可用的 作业和角色("构建块")在azuul中 基于ci系统-即使它们分布在多个租户或存储库中。
内容:体系结构|
快速启动|
开发|
刮刀使用情况|
配置示例|
可用连接
zubbi由两部分组成,zubbi web和zubbi scraper。它使用
ElasticSearch作为存储后端,需要Git存储库
工作和角色定义的来源。 基于flask的web前端,从elasticsearch读取数据。它允许
搜索CI系统中使用的角色和作业并显示结果
包括他们的文档,最后的更新,变更日志和一些附加的元
数据: 一个python应用程序,它可以清理git存储库,搜索job和
特定文件中的角色定义并将其存储在ElasticSearch中。 先决条件:docker compose
只需使用提供的 注意
提供的 要使整个堆栈正常运行,请执行以下操作: 这将用最新的zubbi版本构建docker容器,开始全部
必要的服务(elasticsearch、zubbi scraper、zubbi web)和
擦掉 当一切就绪时,您可以访问 先决条件:python 3.6、tox
pipenv已安装。 要安装开发所需的依赖项,请运行: 我们正在使用黑色来确保
格式良好的python代码。要在每次提交时自动确保这一点,可以
使用包含的预提交挂钩。要安装挂钩,只需运行: 在提交请求之前,请使用tox运行测试和静态代码检查: 应在 然后,运行以下命令更新 测试依赖项应安装为开发依赖项: 将依赖项更新到最新版本或在新的依赖项
安装后,您必须运行 如果到目前为止您遵循了《开发》指南
拥有一个包含运行zubbi所需的所有包的虚拟环境。剩下什么了,
是一些用于测试的配置文件和本地ElasticSearch实例。 Zubbi目前依赖ElasticSearch作为数据后端。如果你有
docker compose已安装,您可以使用
提供的 如果没有,我们建议使用最新可用的ElasticSearch Docker图像
启动并运行本地实例进行开发。 zubbi scraper和zubbi web都从文件路径读取它们的配置
通过 为了在zubbi中显示工作和角色,我们需要提供
租户配置
至少包含一个存储库(用作源)。
因此,在 在 现在我们可以擦掉 当scraper运行成功时,我们可以启动zubbi web来查看
我们的数据: 我们使用预构建pygments样式表来突出显示
工作和角色文件。如果要重新生成此语法突出显示
样式表(例如,要尝试另一种突出显示样式),可以运行以下命令
命令: Zubbi scraper支持两种不同的模式: 这还应该清除租户配置中指定的所有存储库
这是第一次。 要立即清理一个或多个存储库,可以使用以下命令: 此外,scraper还提供了一个 所有可用设置的示例可以在 Zubbi需要知道哪些项目包含
在CI系统中使用。为了达到这个目的,它使用了zuul的
租户配置。
通常,此租户配置存储在必须指定的文件中
在 elasticsearch连接可以在 目前,zubbi支持以下连接类型:github,gerrit
以及git。后者可用于不托管在
Github或Gerrit。 github连接使用github的rest api来清理存储库。成为
要使用此连接,您需要创建具有以下内容的GitHub应用程序
权限: 如果您不确定如何设置github应用程序,请查看
官方指南 成功创建GitHub应用程序后,可以定义连接
使用 github webhooks可以用来保持你的zubbi数据是最新的。
要激活github webhooks,必须提供指向
zubbi web安装的 注意:截至目前,每个连接基不支持Github Webhook。
在zubbi中只能有一个webhook处于活动状态。 zubbi web从github接收webhook事件,验证机密并发布
通过zmq与scraper相关的事件。
另一方面,zubbi scraper订阅zmq套接字并刮
每当接收到事件时都需要存储库。为了做这个
通信工作,您需要在 与github相反,gerrit连接基于
gitpython作为gerrit rest api
不支持所有用例。要使用此连接,您必须
在 git连接也基于
gitpython可用于git
不是托管在github或gerrit上的存储库。要使用此连接,
在架构
Zubbi网络
Zubbi刮刀
快速启动
docker compose.yaml
文件即可启动Zubbi。dockerfile
应仅用于演示目的,而不是
在生产系统中。Flask正在开发模式下运行并侦听所有
公共IP,使其可以从Docker容器外部访问。$ cd docker
$ docker-compose build
$ docker-compose up
openstack infra/zuul作业
数据:
http://localhost:5000
并探索作业
以及来自openstack infra/zuul作业的角色
开发
$ pipenv shell
$ pipenv install --dev
$ pre-commit install
$ tox
安装和更新依赖项
setup.py
文件中的requires
列表中添加新的依赖项:requires=["arrow","click",...,"<new dependency>",]
pipfile.lock
并安装
本地pipenv环境中的新依赖项:$ pipenv update
$ pipenv install --dev my-test-dependency
tox-e更新要求并提交更改的
pipenv和需求文件。
配置并启动zubbi
弹性搜索
docker compose.yaml
文件可在本地启动ElasticSearch。$ cd docker
$ docker-compose up elasticsearch
配置
zubbi_设置给定
环境变量:$ exportZUBBI_SETTINGS=$(pwd)/settings.cfg
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
$ cd docker
$ docker-compose build
$ docker-compose up
3
用pygments构建突出显示样式表的语法
$ cd docker
$ docker-compose build
$ docker-compose up
4
刮刀使用
周期
(默认)和立即
。
要以周期模式启动刮板,只需运行:$ cd docker
$ docker-compose build
$ docker-compose up
5
$ cd docker
$ docker-compose build
$ docker-compose up
6
list repos
命令来列出所有
可用的存储库以及一些附加信息,如
上次刮除时间戳和Git提供程序(连接类型):$ cd docker
$ docker-compose build
$ docker-compose up
7
配置示例
settings.cfg.example
租户配置
settings.cfg中,但它可以所以,请从存储库中获取信息。
$ cd docker
$ docker-compose build
$ docker-compose up
8
弹性搜索连接
settings.cfg中配置
以下内容:
$ cd docker
$ docker-compose build
$ docker-compose up
9
可用连接
Github
$ pipenv shell
$ pipenv install --dev
0
settings.cfg中的以下参数相应地:
$ pipenv shell
$ pipenv install --dev
1
使用Github Webhooks
/api/webhook
端点。生成的webhook
必须在settings.cfg中的
github_webhook_secret
设置中指定secret
$ pipenv shell
$ pipenv install --dev
2
settings.cfg中指定以下参数:
$ pipenv shell
$ pipenv install --dev
3
格瑞特
settings.cfg中提供以下参数:
$ pipenv shell
$ pipenv install --dev
4
GIT
settings.cfg中输入以下内容:
$ pipenv shell
$ pipenv install --dev
5