前端程序员首页投稿(暂停使用,暂停投稿)

从Travis回GitHub

2016-09-28  本文已影响758人  匿蟒
图片来源于GitHub Help

Deployment

Deployment一般直译为部署,本是一个军事名词。在被新兴的软件工程借用后,现在多是用来指软件开发的一些后续过程,如发布、安装与激活、适配、更新等,详见维基百科Software_deployment

本文主要介绍如何用Travis,把自动编译后的某些文件,自动deploy到GitHub的Releases里。(以下均以“发布”来代称deploy与deployment。)

如果你还没用过GitHub Releases,可以自补官方文档:https://help.github.com/categories/releases/

自动发布配置

示例如下:

language: groovy

jdk:
  - oraclejdk8
  - openjdk7

script: "./gradlew build"

before_deploy:
  cp $TRAVIS_BUILD_DIR/build/libs/ARTIFACT_ID*.jar ARTIFACT_ID.jar

deploy:
  provider: releases
  skip_cleanup: true
  file: "ARTIFACT_ID.jar"
  api_key:
    secure: "KmMdcwTWGubXVRu93/lY1NtyHxrjHK4TzCfemgwjsYzPcZuPmEA+pz+umQBN\n1ZhzUHZwDNsDd2VnBgYq27ZdcS2cRvtyI/IFuM/xJoRi0jpdTn/KsXR47zeE\nr2bFxRqrdY0fERVHSMkBiBrN/KV5T70js4Y6FydsWaQgXCg+WEU="
  on:
    tags: true
    jdk: oraclejdk8

# vim: set shiftwidth=2 tabstop=2 softtabstop=-1 expandtab:

script以前的内容,上篇已经介绍了。下面介绍之后的配置:

私有信息加密

由于Travis的运作,依赖于纯文本的.travis.yml配置文件,所以对public或有可能某一天变成public的项目来说,任何私密信息都不应该放在其中。

这是所有利用第三方CI时,都需要注意的信息安全问题。开源,分享的是文档、代码和创意,而不是银行账户。

Travis显然早已留意了这个问题,给出了加密方案。加密后,大致形式如下:

secure: "KmMdcwTWGubXVRu93/lY1NtyHxrjHK4TzCfemgwjsYzPcZuPmEA+pz+umQBN\n1ZhzUHZwDNsDd2VnBgYq27ZdcS2cRvtyI/IFuM/xJoRi0jpdTn/KsXR47zeE\nr2bFxRqrdY0fERVHSMkBiBrN/KV5T70js4Y6FydsWaQgXCg+WEU="

(注:这个secure拷贝于Travis某介绍文档。我实际使用的加密文本更长些。)

也就是把明文字段,加密成上面的模样,再放到配置文件.travis.yml中。

具体的保密原理,可见官方文档:《Encryption keys》。

安装travis.rb

为了实现加密功能,需要安装Travis的命令行客户端(Command Line Client),它就是GitHub上的travis-ci/travis。它既是一个基于Ruby的命令行程序,也是一个Ruby的库。

通常,使用gem install travis即可安装。

在中国,由于rubygems.org不够给力(也许可以换种说法),有时根本没法用,所以我们需要更给力的镜像。

ping rubygems.org如果没有好的结果,那么可以用https://ruby.taobao.org/。该镜像承诺每15分钟同步一次,可以解决大多数问题,装个travis显然没问题。(而且,看在逢年过节都大出血的份上,谢一声后,就可以心安理得地尽情使用。)

gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/

替换后,再执行前述安装命令,即可快速成功安装。

travis命令简介

任何一个网络服务的客户端,完整功能都需要先登录再使用,哪怕它是一个shell命令也一样。

最简单的上手是,执行travis login,根据提示输入GitHub账户、密码登录后,就可以正式开始使用了。但这有个权限过大的问题,它可以对GitHub进行完全控制,所以官方推荐另一种更好的登录方式:指定token。

travis login其实并未把账户密码发送到travis-ci.org,而是发给github.com,生成了一个完整权限token。它承诺,没有把账户密码发送到自家服务器,安全可靠。原理可见文档:travis.rb#login

不过,这个token其实也是GitHub生成的,专门提供给第三方来调用。可以去GitHub上自己生成(见下一小节),然后用travis login --github "TOKEN",可直接登录。

正式使用时,当前目录最好就是项目的根目录,这样travis可以自动识别需要处理的项目,省去很多麻烦。

登录后,在项目的根目录,开始加密:

travis encrypt "TOKEN" --add deploy.api_key

--add可以自动把加密好的内容放到.travis.yml文件的指定字段。也可省略这个参数,拿到secure密文后自行配置。

(注:这个token可以是和登录时的那个相同,也可以不同。)

另外,source ~/.travis/travis.sh后,travis命令就支持补全了。可以把这一行加到.bashrc或之类的shell配置文件中。

更多的使用教程,可以看其README,或执行travis -h

熟练使用后,基本可以不登录网站了。

生成GitHub的token

作为第三方CI,无论是发布到GitHub、还是其它地方,都需要足够识别身份的私密信息,或是账户密码,或是某种key。

GitHub里用的就是Personal access tokens

在这个页面可以生成一个token,并可修改相关权限。对公开项目Travis需要的权限如下:

相关介绍,可见官方文档:《Travis CI's use of GitHub API Scopes》。

验证

配置完毕后,打上tag,然后git push --tags就可触发。

由于.travis.yml的配置开始复杂起来,所以大改后,为避免语法错误,最好先做验证,再提交。可以选择:

参考

Travis官网文档:https://docs.travis-ci.com/

相关文章:

后记

匿:为什么不直接去发布,搞这么麻烦的配置文件?
蟒:我懒嘛!而且,据说优秀的程序员都懒,什么都要尽量自动化。
匿:有折腾这些的时间,你那小项目早就发布了,而且够手动发布一百回。这项目,你打算发布几百次?
蟒:……

上一篇 下一篇

猜你喜欢

热点阅读