跳转到主要内容

从Git到IPFS发布静态网站的类似CD的工具

项目描述

IPFS发布

Git+IPFS=Love

PyPI version PyPI - Python Version PyPI - Downloads Docker Hub - Pulls codecov Codacy Badge Updates

从Git到IPFS的静态网站持续交付

关于

这是一个旨在实现从Git仓库自动发布静态网页到IPFS的工具。它由两部分组成:小型Web服务器和管理CLI。

Web服务器公开一个端点,您可以使用它作为Git的webhook。当hook被调用时,它会克隆您的repo,如果需要则构建它,将其添加到IPFS节点(如果已配置则固定),并在配置的IPNS名称下发布新的IPFS地址。

CLI用于管理repo。

功能

  • 忽略文件 - .ipfs_publish_ignore文件指定在将repo添加到IPFS之前应删除的条目
  • 发布目录 - 您可以仅发布repo内部特定的子目录
  • 发布特定分支 - 您可以指定应从repo发布的分支
  • 构建脚本 - 在将内容添加到IPFS之前,您可以在克隆的repo内运行脚本/二进制文件
  • 发布后脚本 - 在发布到IPFS之后,此脚本会带参数(创建的IPFS地址)运行
  • 针对CloudFlare DNS提供商的直接DNSLink更新

Git提供商

当前Webhook支持通用模式,其中仓库的密钥作为URL参数传递。

对于GitHub,还有特殊模式,其中密钥应作为Webhook配置的一部分进行配置。

警告

此工具不是公共服务工具,仅应使用受信任的Git仓库。由于脚本运行环境未与您的机器其他部分隔离,它可能会对您的系统引入严重的安全风险!

安装

要求

  • Python 3.7及更高版本
  • Git
  • go-ipfs守护程序(与版本4.23进行了测试)
  • 具有公共IP的UNIX-like机器

pip

您可以使用pip在您的机器上直接安装ipfs-publish

$ pip install ipfs-publish

然后,您可以使用ipfs-publish命令来管理您的仓库和/或启动Webhook服务器。

Docker

存在官方Docker镜像,名称为:auhau/ipfs-publish

运行ipfs-publish的最简单方法是与docker-compose一起使用。以下是其配置示例

version: '3'

services:
  ipfs:
    image: ipfs/go-ipfs:v0.4.23
    volumes:
      - /data/ipfs # or you can mount it directly to some directory on your system
  ipfs-publish:
    image: auhau/ipfs-publish
    environment:
      IPFS_PUBLISH_CONFIG: /data/ipfs_publish/config.toml
      IPFS_PUBLISH_VERBOSITY: 3
      IPFS_PUBLISH_IPFS_HOST: ipfs
      IPFS_PUBLISH_IPFS_PORT: 5001
    volumes:
      - /data/ipfs_publish
    depends_on:
      - ipfs
    ports:
      - 8080:8000

有关更多信息,请参阅文档

用法

# Add new repo
$ ipfs-publish add
[?] Git URL of the repo: https://github.com/auhau/auhau.github.io
[?] Name of the new repo: github_com_auhau_auhau_github_io
[?] Do you want to publish to IPNS? (Y/n):
[?] Path to build binary, if you want to do some pre-processing before publishing:
[?] Path to after-publish binary, if you want to do some actions after publishing:
[?] Directory to be published inside the repo. Path related to the root of the repo: /

Successfully added new repo!
Use this URL for you webhook: http://localhost:8080/publish/github_com_auhau_auhau_github_io
Also set this string as your hook's Secret: NIHT4785CVFT358GFE08RDAZG
Your IPNS address: /ipns/QmRTqaW3AJJXmKyiNT7MqqZ4VjGtNNxPyTkgo3Q7pmoCeX/

# List current enabled repos
$ ipfs-publish list
github_com_auhau_auhau_github_io

# Show details of repo
$ ipfs-publish show github_com_auhau_auhau_github_io
github_com_auhau_auhau_github_io
Git URL: https://github.com/auhau/auhau.github.io
Secret: EAHJ43UYT7LUEM4QFRZ4IFAXL
IPNS key: ipfs_publishg_github_com_auhau_auhau_github_io
IPNS lifetime: 24h
IPNS ttl: 15m
IPNS address: /ipns/QmRTqaW3AJJXmKyiNT7MqqZ4VjGtNNxPyTkgo3Q7pmoCeX/
Last IPFS address: None
Webhook address: http://localhost:8080/publish/github_com_auhau_auhau_github_io

# You can manually publish repo
$ ipfs-publish publish github_com_auhau_auhau_github_io

# Starts HTTP server & IPNS republishing service
$ ipfs-publish server &
Running on http://localhost:8080 (CTRL + C to quit)

贡献

请随时参与,欢迎贡献!提交问题或提交PR。

有关PR和开发提示,请参阅贡献指南

许可证

MIT © Adam Uhlir

项目详情


下载文件

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

源分布

ipfs-publish-0.2.1.tar.gz (55.9 kB 查看哈希值)

上传时间

构建分布

ipfs_publish-0.2.1-py2.py3-none-any.whl (21.8 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面