DockerHub自动部署的Webhook处理程序

dockerhub-webhook的Python项目详细描述


PyPi versionTravis CI StatusCoveralls CoverageCode Climate RatingRequires.io Check

dockerhub webhook侦听来自dockerhub和 当新容器可用时触发脚本更新。

功能
  • Python3.3+支持。
  • PIP安装可用
  • 轻量级-使用Flask构建。
  • 支持无限数量的触发器。
  • 完整的日志记录支持,包括脚本错误。

安装(选项1:来自git)

python 3.3、3.4、3.5和3.6支持dockerhub webhook。安装 从github存储库中,第一步是克隆它。

git clone https://github.com/Praisebetoscience/dockerhub-webhook.git

然后安装依赖项。

pip install -r requirements.txt

接下来我们需要创建包含apikey、maps脚本的配置文件 到传入的存储库挂钩。我们可以从示例config.py和 填写列出的变量。

cp config.py.example config.py

要生成apikey,可以使用openssl或pwgen等工具。

openssl rand -base64 30| sed 's=/=\\/=g'
pwgen 301

或者,您可以使用 钥匙这将覆盖config.py中的任何内容。

config.py中的HOOKSdict将respository名称映射到服务器端部署 剧本。键是存储库的名称(没有名称空间),值是 要调用的脚本的完整路径,或当前脚本的相对路径 工作目录。

HOOKS={'repo1':'/full/path/to/script.sh','repo2':'relative_path_to_script.sh'}

wsgi服务器(例如Gunicorn

建议您安装一个生产就绪的wsgi服务器并 不要使用装有烧瓶(Werkzeug)的服务器,因为它是齿轮传动的 走向发展。下面是一个如何启动 使用Gunicorn的应用程序。GuniCORN通常被反向代理。 恩吉恩斯。

注意:DockerHub Webhook在当前 工作目录。

pip install gunicorn
gunicorn dockerhook:app -w 1 -b <host_ip>:<port>

安装(选项2:PIP)

从github安装最大的缺点是目录结构 其中需要创建配置文件、日志和可选脚本

mkdir -p dockerhook/log
mkdir -p dockerhook/scripts

您可以如上所述创建配置文件,但不必使用 源代码,您必须直接下载示例。

cd dockerhook
wget -o config.py https://raw.githubusercontent.com/Praisebetoscience/dockerhub-webhook/master/config.py.example

使用pip安装

pip install dockerhub-webhook

配置Docker Hub

  1. 转到https://hub.docker.com
  2. 单击要自动部署的存储库
  3. 在Webhooks选项卡下添加Webhook
  4. 请选择任何名称
  5. 对于webhook url,请使用以下内容:
http://example.com/hubhook?key=secret

将域和终结点调整为反向代理设置,并替换 secret使用您的api密钥。

许可证

DockerHub Webhook源代码在Apachi 2.0 License下提供。

  • 版权所有(C),2017,Prasiebetoscience。

开发

webhook使用github-flow来管理分支,并遵循PEP8以及 可能的。

要开始Flask的Werkzeug服务器开发,您可以使用^{TT5}$。

您可以使用python setup.py test运行pytest unittests。

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

推荐PyPI第三方库


热门话题
由于java的原因,maven无法运行代码。lang.NoClassDefFoundError:com/fasterxml/jackson/annotation/JsonMerge   Android项目中的java Creative SDK图像编辑器UI   java如何在Android Studio中使用DataOutputStream上传文件并将其他参数传递到web服务器   java倒计时服务打开时崩溃   java将RubyonRails项目转换为JRubyonRails项目   java我的图库意图是不显示图像?为什么?   java如何在春季启动时跳过mongodb/   java@Autowired在Spring中是如何实现的   甲骨文Akka java。util。同时发生的timeoutexception线程池频繁超时   java maven依赖项对spring启动应用程序有何影响?   java Firestore执行复合查询,未截获事件“已修改”   java ItemStreamException:未能初始化读取器,原因是:IllegalStateException:流已初始化。重新开放前关闭   java将空标记解组到集合的新实例中   使用AspectJ的java新手:无法调用aspect   java查找棋类游戏的所有组合   你为什么要这样做and==与Java中的equals方法不一样吗?   如何对使用JavaUUID的代码进行单元测试?