> 文章列表 > APP程序远程更新GITHUB RELEASE

APP程序远程更新GITHUB RELEASE

APP程序远程更新GITHUB RELEASE

要自己架设一个服务器来提供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 ...