跳转到主要内容

使用Sphinx/GitHub/Distribute的自动化文档构建器,适用于私人使用

项目描述

欧吉欧迪基是一个使用SphinxGitHubDistribute(即setuptools)的自动化文档构建器。它使您的封闭Python项目能够持续构建文档,以下假设

  1. 使用Sphinx进行文档编写。

  2. 项目通过setuptools(而非pip或其他)打包。

  3. 源代码在GitHub上管理。

简而言之,它就是一个为私人使用而设计的ReadTheDocs.org。

工作原理

它按照以下步骤工作

  1. 当有新的提交推送时,GitHub触发Okydoky post-receive钩子

  2. Okydoky从GitHub下载推送的提交的tarball存档

  3. 将tarball存档提取到临时目录中。

  4. Sphinx构建文档。

  5. 当用户通过他们的网络浏览器请求文档时,Okydoky要求用户使用GitHub OAuth进行身份验证。

  6. 如果他们有授权,Okydoky将提供构建的文档。

如何使用

它是一个普通的Python包。您可以使用easy_install安装它。

$ easy_install Okydoky

本包提供了一个名为 okydoky 的命令行脚本。它是一个网络应用程序,也是一个自用的轻量级网络服务器。它需要一个 配置文件 <config>

配置文件必须包含一些必需的值,如 GitHub 应用密钥和密钥。

您必须 创建一个 GitHub 应用 才能使用 Okydoky。其 回调 URL 非常重要。用以下内容填充它

http://<host>/auth/finalize

并用 <host> 替换您将使用的域名。然后,在您的 GitHub 仓库中 添加一个 post-receive 钩子

http://<host>/

如果您创建了配置文件,则可以使用 okydoky 脚本运行 Okydoky 服务器

$ okydoky -H 0.0.0.0 -p 8080 yourconfig.py

最后,您必须进行一次初始认证以完成安装。在您的网络浏览器中打开 http://<host> 并使用 GitHub 登录。

配置

配置文件是一个普通的 Python 脚本。它使用 Flask 的配置系统。阅读 Flask 关于配置文件的文档

仓库

用户和仓库名,例如 'crosspop/okydoky'

CLIENT_ID

GitHub 应用的客户端密钥。

CLIENT_SECRET

GitHub 应用的密钥。

SAVE_DIRECTORY

存储数据的目录路径。此目录将存储一些配置数据、tarball 和构建文档。

SECRET_KEY

用于签名会话的密钥。也可以参考 Flask 关于会话的文档

RECREATE_VIRTUALENV

为每个构建创建新的虚拟环境。这比不使用它慢得多,但可以避免与 site-packages 相关的副作用。

设置任何非零值,例如 1True,如果希望在每次构建时都重新创建虚拟环境。

COMPLETE_HOOK

在构建完成后调用的回调函数(任何可调用对象)。即使构建失败也会为每个提交调用它。

它接受三个位置参数

  1. (basestring) 提交哈希

  2. (basestring) 文档的永久链接。如果构建失败,它可能是 404。

  3. (tuple) 如果构建失败,则返回 sys.exc_info() 函数的三个值。如果构建成功,则为 None

您可以使用最后一个参数来打印错误跟踪信息,例如。

import traceback

def COMPLETE_HOOK(commit_id, permalink, exc_info):
    if exc_info is not None:
        traceback.print_exception(*exc_info)

特殊环境变量:OKYDOKY

Okydoky 在其构建过程中设置名为 OKYDOKY 的特殊环境变量。您可以使用它来确定是否是由 Okydoky 构建的。

例如,您可以在 setup.py 脚本中添加仅针对 Okydoky 构建的一些额外需求

import os
from setuptools import setup

install_requires = ['Flask', 'SQLAlchemy']

if os.environ.get('OKYDOKY'):
    install_requires.extend(['Sphinx', 'sphinxcontrib-httpdomain'])

setup(
    name='YourProject',
    install_requires=install_requires
)

或者 conf.py 用于 Sphinx

import os

if os.environ.get('OKYDOKY'):
    html_theme = 'nature'
else:
    html_theme = 'default'

开源

Okydoky 由 Hong Minhee 为 Crosspop 编写。它遵循 MIT 许可证,源代码可以在 GitHub 仓库 中找到。查看

$ git clone git://github.com/crosspop/okydoky.git

变更日志

版本 0.9.6

发布于 2013 年 2 月 12 日。

  • 添加了 RECREATE_VIRTUALENV 选项,使其为每个构建创建虚拟环境。

  • 添加了 COMPLETE_HOOK 选项。

  • 如果构建失败,首先尝试重新创建虚拟环境。

  • 添加了 --proxy-fix 选项用于 HTTP 反向代理。

  • 添加了 --force-https 选项。

  • 不再使用 github-distutils,以防止与打包和分发相关的许多问题。

版本 0.9.5

发布于 2012 年 9 月 16 日。

  • GitHub 强制执行 OAuth 的 state。遵循它。

版本 0.9.4

发布于 2012 年 9 月 3 日。

  • 使用--upgrade选项执行setup.py develop命令。这可以防止依赖项的版本冲突。

  • 构建日志保存在build.txt文件中。

版本0.9.3

发布于2012年7月18日。

  • 现在索引页面显示refs列表。

  • 现在Okydoky在其构建过程中设置环境变量OKYDOKY=1。[#5]

  • 添加特殊ref URL /head

  • 修复了一个问题:head没有被设置为最新的提交。

版本0.9.2

发布于2012年7月17日。0.9.1的快速修复。

  • 修复了一个安全漏洞:现在用户必须对仓库有授权。[#4]

版本0.9.1

发布于2012年7月17日。0.9.0的快速修复。

  • okydoky包清空,并将内容移动到okydoky.app模块。

版本0.9.0

发布于2012年7月17日。

  • 初始版本。

项目详情


下载文件

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

源代码分发

Okydoky-0.9.6.tar.gz (15.7 kB 查看哈希值)

上传时间 源代码

支持