rohsyl / github-auto-release
一个用于自动创建应用更新仓库的github webhook
Requires
- php: >=7.1.3
- ext-json: *
- guzzlehttp/guzzle: ^6.3
- illuminate/http: ^5.8
- monolog/monolog: ^1.24
- vlucas/phpdotenv: ^3.3
This package is auto-updated.
Last update: 2023-07-17 00:51:52 UTC
README
该库的目的是帮助您为您的应用构建一个更新服务器,并自动化新版本的应用发布。
让我们想象您有一个Web服务器(https://update.yourdomain.tld)并且您想要提供一个包含有关应用最新发布信息的current.json文件。
但是您是一个懒惰的人,不想手动完成。
使用Github Auto Release,它将自动完成。您只需配置一个webhook,然后在github上创建您的发布,然后.json文件将自动生成。
current.json示例
{
"name": "My amazing release - v1.0.3",
"version": "v1.0.3",
"archive": "https://api.github.com/repos/rohsyl/github-auto-release/zipball/v0.0.1",
"description": "A brief description of the release",
"url": "https://github.com/rohsyl/github-auto-release/releases/tag/v0.0.1"
}
创建webhook
前往您的github仓库并转到设置 > Webhooks。
然后创建一个新的webhook。
将负载URL设置为您的Web服务器URL(推荐使用SSL)。
将内容类型设置为application/json。
使用一个漂亮的随机令牌设置密钥。不要忘记它,因为我们还需要它来配置应用程序。
将您希望触发此webhook的事件设置为仅releases。
勾选激活复选框并保存。
安装
要安装此库,请在您的服务器上运行以下命令。
composer require rohsyl/github-auto-release
配置
如果不存在,请在项目根目录下创建一个.env文件。
并设置以下值
ENABLE_DEBUG=true
GITHUB_SECRET_TOKEN=...
LOG_PATH=logs/app.log
JSON_VERSION_PATH=./
ENABLE_DEBUG定义是否启用或禁用调试。
GITHUB_SECRET_TOKEN是在创建github webhook时定义的密钥。
LOG_PATH是日志文件的路径。此条目是可选的。默认情况下日志位于logs/app.log下。
JSON_VERSION_PATH是存储有关每个发布的json文件的路径。此条目是可选的。默认情况下文件存储在当前目录下。
基本应用
创建一个包含以下内容的index.php文件
<?php
require __DIR__ . '/vendor/autoload.php';
use rohsyl\GithubAutoRelease\AutoRelease;
define('ROOT', __DIR__);
$autorelease = new AutoRelease(ROOT);
$autorelease->handle();
测试webhook
要测试webhook,可以在github上发送测试有效负载。
前往您的github仓库,转到设置 > Webhooks > 编辑您的webhook。
在页面底部有一个包含所有已发送有效负载的列表。点击...显示有效负载的详细信息,然后点击重新发送以再次发送并测试。
享受吧!
现在Github Auto Release运行良好后,您可以想象通过在项目中创建一些函数来扩展它,这些函数将请求https://update.yourdomain.tld/current.json来获取有关项目最新版本的信息。然后您可以下载archive并将其本地解压。然后您可以替换所有文件为存档中的文件。
如果您在使用Laravel,也可以使用这个库 rohsyl/laraupdater。