从Git到IPFS发布静态网站的类似CD的工具
项目描述
IPFS发布
从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和开发提示,请参阅贡献指南。
许可证
项目详情
下载文件
下载适合您平台文件的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
ipfs-publish-0.2.1.tar.gz (55.9 kB 查看哈希值)
构建分布
ipfs_publish-0.2.1-py2.py3-none-any.whl (21.8 kB 查看哈希值)
关闭
ipfs-publish-0.2.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3f53345c21b80639a829aab6ac8095d82cfe9be30eaf8d54a25b67a99ad3f6bc |
|
MD5 | 91bbf185dc5d01f4e7e29facc32b6397 |
|
BLAKE2b-256 | 2f8b41def579dd60c5b526013ef81c6c6d95da8913860f9dfe69e7f015d98eef |
关闭
ipfs_publish-0.2.1-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 45d55e83a6f90a36b0ade0780e7cc8098bcb6ae7eb9427c4ef26395069c5df4a |
|
MD5 | 644c92ea1cc03c7ea25f35e2f2421ddc |
|
BLAKE2b-256 | ae7d4d31b7d44922488ae731898cb38b8eaae6ea530342ce12b62f3eb96c8f55 |