利用travis-ci在线编译并发布二进制文件

前言

simple-obfs最新版支持obfs-uri功能,simple-obfs-android也有人及时跟进了这个特性。无奈作者没发布安装文件,我又懒得下载Android环境本地编译。但是因为这个作者使用travis-ci做了集成测试(这是个好习惯啊),所以我们可以通过travis-ci实现在线编译并下载安装包文件。

但是因为travis-ci不支持文件下载,所以我们只能先生成二进制然后发布到相应的平台上再下载,通过官网以看到travis-ci支持很多发布平台,本文以GitHub releases为例。

操作步骤

1.先安装ruby环境,再安装travis

1
2
apt install ruby ruby-dev
gem install travis
  1. 创建私钥并加密 先去https://github.com/settings/tokens/new 创建一个token,仅勾选repo。

image

  1. 用下面的命令加密
1
travis encrypt <key> -r <owner>/<repo>
  1. 修改fork后项目里的.travis.yml文件,再文件末尾加入以下内容
1
2
3
4
5
6
7
8
9
10
11
before_deploy:
- git config --local user.name "用户名"
- git config --local user.email "邮箱"
- git tag "$(date +'%Y%m%d%H%M%S')-$(git log --format=%h -1)"
- find $HOME/ -name "二进制文件名" -exec mv {} $HOME/
deploy:
provider: releases
api_key:
secure: "第2步在cli中生成的密文"
file: "$HOME/二进制文件名"
skip_cleanup: true

踩坑经验

  1. github会自动删除在其平台明文出现的token,所以官方文档是错误的,必须要对api_key加密;
  2. 必须要指明要发布的文件的完整路径,最便捷的方法就是在before_deploy用find找到文件并移动到home目录下;

效果

image

image

参考来源