如何使用Travis CI来做GitHub的Release自动发布 作者: LiesAuer 时间: 2020-02-13 分类: 开发 ## 起因 由于GitHub在国内越来越难访问了,甚至于Release都是托管在亚马逊AWS下,访问起来更是问题了,十几KB甚至几KB的速度已经是惯例了,想上传个Release都得上传半天。其实这个上传脚本我很早之前就在用了,近期有空就刚好做成一个傻瓜式自动脚本供给其他的项目用。 ## 食用演示 注意,本文不会对`git` `github` `travis-ci` `yaml`等相关知识做过多解释,需要读者有一定的基础。 ### 创建仓库 首先我们新建一个测试演示的空仓库  ### 创建构建脚本 然后新建一个测试用的`.travis.yml`,重点在`deploy`配置 ```yaml language: minimal deploy: provider: script script: curl https://raw.githubusercontent.com/liesauer/github-release-cli/master/scripts/github-auto-release.sh -L --output github-auto-release.sh && chmod +x github-auto-release.sh && bash ./github-auto-release.sh on: all_branches: true tags: true ```  然后我们进去travis-ci.com看一下,根据构建日志提示,我们发现`deploy`并没有被触发,这是因为我们的`deploy`条件是必需发布了`tag`才有效。  ### 发布TAG 我们给仓库加一个`tag`再试试  然而我们可以发现构建失败了,这是怎么回事呢  根据构建日志提示,我们是少设置了一个环境变量`GITHUB_TOKEN`,我们必须设置这个环境变量,脚本才能对仓库进行Release的操作,否则是无权限操作的。  ### 创建ACCESS TOKEN 我们进入GitHub的`Settings->Developer settings->Personal access tokens`,然后新建一个,要注意的是`write:packages`一定要勾上,然后其他的两项会自动帮你勾上的,不用管,直接提交。添加完后将其复制。  ### 添加环境变量 我们回到travis-ci.com,进入到项目设置中,添加一个名叫`GITHUB_TOKEN`的环境变量,将刚刚生成的token粘贴进去就行了。  ### 重新构建 我们点击travis-ci.com项目的重新构建,等待其完成,然后我们进入GitHub项目的Release页面,发现已经成功发布了Release。  ### 自定义Release信息 由于这是傻瓜式自动脚本,所以并没有提供自定义标题的功能,标题固定为`tag`的名字,无法自定义,但是Release的信息却可以自定义,只要我们commit的时候,使用以下格式进行提交,脚本会自动提取,若未提供此格式,则以整条commit信息作为Release信息上传 ```markdown commit信息 # Release 自定义release信息 ``` 如下图所示,我们的commit信息为`Create test.txt`,但是额外提供了`# Release`格式的信息,当我们推送此commit且添加tag时,发布的Release信息则使用自定义的信息。  重新加一个tag触发构建  效果如下  ### Pre-Release发布 只要`tag`中含有`alpha` `beta` `rc`,即可自动识别为`Pre-Release`发布,如下图所示。  ### 文件上传 本脚本会将项目`Build/Release`下的所有文件视为上传文件。 下面我们来演示一下文件的上传,由于我们的测试仓库没有构建脚本,无法生成文件,所以我们就只能自己上传文件来演示下,实际使用中只要把生成的文件拷贝至项目`Build/Release`下即可。 上传一个测试文件到`Build/Release`下  发布Release效果如下  ### 最终可达成效果 当你构建脚本写好后,Travis CI写好后,只需以下操作即可傻瓜式上传Release ```shell git add . git commit # 不提供-m参数会进入vim模式,可支持换行信息 # XXX改动 # # Release # # ## 更新 # 1. XXX功能更新 # 保存退出 git tag vx.y.z[-beta] git push git push --tags ``` 标签: travis-ci