上一篇简单介绍了 Travis CI, 这里再简单介绍一个应用,利用Travis CI的Cron Jobs功能,实现自动备份segmentfault文章到Github。php
第一步:抓取文章内容html
Segmentfault 很是友好的为每一个专栏提供了一个RSS,咱们很方便就能够抓取到文章内容,稍作转化就能够了,省略不写,详见代码git
第二步:配置 SSH keysgithub
Github 上有详细的说明,省略不写,敬请查看shell
第三步:编写.travis.yml 配置segmentfault
咱们采用git命令行提交commits的方式备份文章。windows
要实现自动提交,须要把私钥也和代码一块儿上传,可是私钥泄漏至关于放弃了仓库的全部权,因此须要对私钥进行加密。(这是个比较麻烦的方法,可是实际上开发中咱们部署代码到本身的服务器经常使用的也是 ssh 远程操做,有借鉴意义)ruby
1.安装 travis服务器
咱们经过 Ruby 的 gem 包管理器来安装 travis, 若是未安装 Ruby,先下载最新版本,并安装它,而后执行以下命令确认 gem 是否安装成功markdown
gem -v
可以正常列出版本号,表示安装成功
由于众所周知不可说的缘由,在安装包时,使用官方源地址会很是慢。咱们切换成国内的镜像
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/ # 老版本 Ruby 这里会证书相关的错误,因此确认安装了最新版本 gem sources -l #确保列出的源地址只有镜像地址
准备工做作好了,咱们执行以下命令安装
gem install travis
2.登陆 Travis CI
travis login --auto
执行命令,根据提示输入 github 的用户名和密码。
这里有个坑,window 用 cmd 操做时死活很差使,若是你在输入密码时显示的明文,那么恭喜你也踩坑了,你能够改用 power shell 来操做,不事后面仍是会遇到一些莫名其妙的问题,建议在 *inux 环境下操做,哪怕是虚拟机也行。
3.填加私钥
执行以下命令
travis encrypt-file ~/.ssh/id_rsa --add
实际使用中颇有可能会报错
Can't figure out GitHub repo name. Ensure you're in the repo directory, or specify the repo name via the -r option (e.g. travis <command> -r <owner>/<repo>)
这个的意思是找不到仓库,须要指定,能够这么操做
travis encrypt-file -r actors315/actors315.github.io ~/.ssh/id_rsa --add
执行完成后,在 .travis.yml 文件中会自动填加以下代码
openssl aes-256-cbc -K $encrypted_xxxxxx_key -iv $encrypted_xxxxxxx_iv -in .travis/id_rsa.enc -out ~/.ssh/id_rsa -d
并生成一个 id_rsa.enc 文件,你能够手动移到合适的目录,并调整上面命令文件的位置
并在 Travis CI Setting 页面会看到增长了以下两个变量
若是在 windows 下生成的文件,travis-ci 构建时极可能会报这个错。
0.02s$ openssl aes-256-cbc -K $encrypted_2805aa35fedb_key -iv $encrypted_2805aa35fedb_iv -in .travis/id_rsa.enc -out ~/.ssh/id_rsa -d
bad decrypt
4.编写配置
.travis.yml 增长以下配置,详细见源码
# 配置环境 before_install: # 替换为刚才生成的解密信息 - openssl aes-256-cbc -K $encrypted_79258127fb87_key -iv $encrypted_79258127fb87_iv -in .travis/id_rsa.enc -out ~/.ssh/id_rsa -d # 改变文件权限 - chmod 600 ~/.ssh/id_rsa # 配置 ssh - eval "$(ssh-agent -s)" - ssh-add ~/.ssh/id_rsa - cp .travis/ssh_config ~/.ssh/config # 配置 git 替换为本身的信息 - git config --global user.name 'actors315' - git config --global user.email actors315@gmail.com # 用 ssh 方法提交 - git remote set-url origin git@github.com:actors315/actors315.github.io.git # 切换到提交的目的分支 - git checkout master install: - composer install --prefer-dist --optimize-autoloader --quiet script: - php -f bin/console.php after_success: - git add README.md - git add ./markdown/* - git add ./files/* # 这里很重要,commit message 必定要填加 [skip travis] , 否则可能会进入死循环,一直在提交一直在自动构建 - git commit -m "[skip travis] auto build by travis-ci" - git push origin master
第四步:填加 Cron jobs
最后一步,配置完后就能够自动跑了。有三个时间周期可供选择,每个月、每周、天天,按需选择就行了
这样就大功告成了,天天自动跑一次
其余方法
1.使用 Personal access tokens 实现
这也是 git 命令行自动提交,使用 Personal access tokens 也很方便,也是推荐。
2.使用 Travis CI 官方推荐的 deploy 流程
若是你须要自动提交的分支和自动构建不是同一个分支,这就很是方便了,你只须要生成一个 Personal access tokens ,在.travis.yml 文件中简单增长一点配置就行了。
deploy: provider: pages skip-cleanup: true github-token: $GITHUB_ACCESS_TOKEN target-branch: gh-pages keep-history: true on: branch: master
这个方式尚未研究出来是否可能指定 commit message, 若是同分支又会进入到死循环,同分支部署慎用
详见官方文档