要自己架设一个服务器来提供app更新,别说是配置服务器了,光是买个主机都很棘手。但是github提供了release功能,并有相关api支持。下面介绍如何使用github的release功能。
这里以DTU802 基于.net开发的iotgateway程序为例,硬件,软件界面如下:
在guthub上新建工程,创建release:
出现如下界面,上传文件和填写信息:
勾选了Pre-release,后API提示错误:
{ “message” : "Not Found", "documentation_url" : "https://xxx" }
Publish Release:
通过github官方提供的api可访问我们的release信息:
/repos/:owner/:repo/releases/:id
例如:我的release的api是
https://api.github.com/repos/peixiuhui/IOTGate/releases/latest 获得最新版本号: wget -qO- -t1 -T2 "https://api.github.com/repos/peixiuhui/IOTGate/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g'
执行如下:
huiwei@hwserver:Code$ wget -qO- -t1 -T2 "https://api.github.com/repos/peixiuhui/IOTGate/releases/latest" { "url": "https://api.github.com/repos/peixiuhui/IOTGate/releases/97256959", "assets_url": "https://api.github.com/repos/peixiuhui/IOTGate/releases/97256959/assets", "upload_url": "https://uploads.github.com/repos/peixiuhui/IOTGate/releases/97256959/assets{?name,label}", "html_url": "https://github.com/peixiuhui/IOTGate/releases/tag/V20", "id": 97256959, "author": { "login": "peixiuhui", "id": 10824875, "node_id": "MDQ6VXNlcjEwODI0ODc1", "avatar_url": "https://avatars.githubusercontent.com/u/10824875?v=4", "gravatar_id": "", "url": "https://api.github.com/users/peixiuhui", "html_url": "https://github.com/peixiuhui", "followers_url": "https://api.github.com/users/peixiuhui/followers", "following_url": "https://api.github.com/users/peixiuhui/following{/other_user}", "gists_url": "https://api.github.com/users/peixiuhui/gists{/gist_id}", "starred_url": "https://api.github.com/users/peixiuhui/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/peixiuhui/subscriptions", "organizations_url": "https://api.github.com/users/peixiuhui/orgs", "repos_url": "https://api.github.com/users/peixiuhui/repos", "events_url": "https://api.github.com/users/peixiuhui/events{/privacy}", "received_events_url": "https://api.github.com/users/peixiuhui/received_events", "type": "User", "site_admin": false }, "node_id": "MDc6UmVsZWFzZTk3MjU2OTU5", "tag_name": "V20", "target_commitish": "master", "name": "IOTGate", "draft": false, "prerelease": false, "created_at": "2021-02-27T12:16:33Z", "published_at": "2023-03-29T01:41:40Z", "assets": [ { "url": "https://api.github.com/repos/peixiuhui/IOTGate/releases/assets/101379606", "id": 101379606, "node_id": "RA_kwDOHMXgbs4GCu4W", "name": "iotgateway.tar", "label": null, "uploader": { "login": "peixiuhui", "id": 10824875, "node_id": "MDQ6VXNlcjEwODI0ODc1", "avatar_url": "https://avatars.githubusercontent.com/u/10824875?v=4", "gravatar_id": "", "url": "https://api.github.com/users/peixiuhui", "html_url": "https://github.com/peixiuhui", "followers_url": "https://api.github.com/users/peixiuhui/followers", "following_url": "https://api.github.com/users/peixiuhui/following{/other_user}", "gists_url": "https://api.github.com/users/peixiuhui/gists{/gist_id}", "starred_url": "https://api.github.com/users/peixiuhui/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/peixiuhui/subscriptions", "organizations_url": "https://api.github.com/users/peixiuhui/orgs", "repos_url": "https://api.github.com/users/peixiuhui/repos", "events_url": "https://api.github.com/users/peixiuhui/events{/privacy}", "received_events_url": "https://api.github.com/users/peixiuhui/received_events", "type": "User", "site_admin": false }, "content_type": "application/x-tar", "state": "uploaded", "size": 170455040, "download_count": 0, "created_at": "2023-03-29T01:37:43Z", "updated_at": "2023-03-29T01:38:47Z", "browser_download_url": "https://github.com/peixiuhui/IOTGate/releases/download/V20/iotgateway.tar" } ], "tarball_url": "https://api.github.com/repos/peixiuhui/IOTGate/tarball/V20", "zipball_url": "https://api.github.com/repos/peixiuhui/IOTGate/zipball/V20", "body": "DTU802 .NET IOT APP" } huiwei@hwserver:Code$wget -qO- -t1 -T2 "https://api.github.com/repos/peixiuhui/IOTGate/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g' V20 huiwei@hwserver:Code$
这样就获取到软件的版本号为V20了,也可通过解析这个Json数据获取版本信息,从而 实现 软件是否需要更新。
需要更新的话,将固件下载到本地==> md5校验,校验硬件型号,替换,等等... Go ...