跳转到主要内容

用于触发从Github webhooks导入edX课程的服务的工具

项目描述

gitreload

Build Status Coverage Status PyPi Downloads PyPi Version License AGPLv3

gitreload是一个用于异步响应Github触发器的Flask/WSGI应用。它主要针对与edx-platform一起使用而设计,但也可以用于基于Github的触发调用(使用其/update URL)来更新本地git仓库。

一般的工作流程是:接收到Github触发器(推送),gitreload检查存储库和分支是否已配置在配置的位置中,然后通过... manage.py lms --settings=... git_add_course <repo_dir> <repo_name>命令将该存储库导入到edx-platform,或者如果触发器设置为访问/update而不是/或/gitreload,它将简单地从origin远程获取当前检出分支的最新版本。通常期望Web服务器(使用基本身份验证)提供授权,因为目前它不支持使用github secrets。由于在gitreload的主机上克隆存储库之前,它将接受来自github的该存储库的有效负载,因此还提供了一层额外的安全性。

安装

pip install gitreload

或者要使用最新的github版本,应该是这样的

使用pip安装 -e git+https://github.com/mitodl/gitreload

用法

gitreload是一个Flask应用程序,因此可以通过直接使用gitreload命令或在WSGI应用程序服务器上运行来以调试模式运行。有关在生产模式下运行Flask应用程序的更多信息,请参阅出色的Flask文档。我们通常使用gunicorn和supervisord以类似edx/configuration角色的方式运行它,并最终计划提交一个角色,通过他们的ansible plays安装此角色。

通过命令行运行gitreload后,您应该看到它开始监听端口5000。您可以通过访问队列状态页面http://localhost:5000/queue来验证它是否正在运行。如果一切正常,您将看到一个看起来像的漂亮JSON

{"queue_length": 0, "queue": []}

配置

配置是通过一个按优先级存储的json文件完成的

  • 环境变量中的路径:GITRELOAD_CONFIG
  • $(pwd)/gr.env.json
  • ~/gr.env.json
  • /etc/gr.env.json

这不是强制性的,默认值是

{
    "DJANGO_SETTINGS": "aws",
    "EDX_PLATFORM": "/edx/app/edxapp/edx-platform",
    "LOG_LEVEL": null,
    "NUM_THREADS": 1,
    "REPODIR": "/mnt/data/repos",
    "VIRTUAL_ENV": "/edx/app/edxapp/venvs/edxapp"
}

此设置意味着它在/mnt/data/repos中查找要克隆的git仓库,并期望edx-platform设置是当前edx/configuration默认值。它还将LOG_LEVEL设置为默认值,即WARNING,并只为处理从github接收到的触发器的队列提供单个工作线程。

用例

MITx目前主要用于以下原因。

快速集中式课程开发

我们使用此工具的主要用途之一是启用基于XML的快速共享edx-platform课程开发。这基本上是我们的课程ware的持续集成部分,当将提交推送到特定分支(例如devel)的github仓库时,使用此hook consumer可以快速自动加载更改。

课程部署管理

在快速课程开发的背景下,我们还使用此方法来控制哪些课程在我们的面向学生的生产LMS上发布。对于原始github XML开发者来说,这意味着我们将面向学生的LMS连接到用于生产的特定分支(例如master或release)。我们使用此功能来监视该分支上已通过其开发分支审核并准备部署给学生的更改。

虽然我们不将gitreload的使用限制在XML开发上,但我们还使用此方法控制Studio课程团队。平台中有一个功能允许课程团队将他们的课程导出到Git。我们使用此功能来控制学生访问,允许我们的Studio课程作者在为他们的课程设置触发器和仓库后随意将内容推送到生产。

外部课程评分器的更新

我们使用常规的/update功能自动更新通过xqueue-watcherxserver提供的外部代码评分器。我们使用此功能与前面的两个案例类似,并管理包含评分器的仓库的开发和发布分支。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定要选择哪一个,请了解有关安装包的更多信息。

源分发

gitreload-0.2.5.tar.gz (28.1 kB 查看散列)

上传于 源代码

构建分发版

gitreload-0.2.5-py3-none-any.whl (29.5 kB 查看哈希值)

上传于 Python 3

由以下支持