内容简介:上一篇简单介绍了 Travis CI, 这里再简单介绍一个应用,利用Travis CI的Cron Jobs功能,实现自动备份segmentfault文章到Github。Segmentfault 非常友好的为每个专栏提供了一个RSS,我们很方便就可以抓取到文章内容,稍做转化就可以了,省略不写,Github 上有详细的说明,省略不写,
上一篇简单介绍了 Travis CI, 这里再简单介绍一个应用,利用Travis CI的Cron Jobs功能,实现自动备份segmentfault文章到Github。
第一步:抓取文章内容
Segmentfault 非常友好的为每个专栏提供了一个RSS,我们很方便就可以抓取到文章内容,稍做转化就可以了,省略不写, 详见代码
第二步:配置 SSH keys
Github 上有详细的说明,省略不写, 敬请查看
第三步:编写.travis.yml 配置
我们采用git命令行提交commits的方式备份文章。
要实现自动提交,需要把私钥也和代码一起上传,但是私钥泄漏相当于放弃了仓库的所有权,所以需要对私钥进行加密。(这是个比较麻烦的方法,但是实际上开发中我们部署代码到自己的服务器常用的也是 ssh 远程操作,有借鉴意义)
1.安装 travis
我们通过 Ruby 的 gem 包管理器来安装 travis, 如果未安装 Ruby,先 下载 最新版本,并安装它,然后执行如下命令确认 gem 是否安装成功
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
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
详见 官方文档
以上所述就是小编给大家介绍的《Travis CI 实现自动备份Segmentfault文章到Github》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Xtrabackup实现数据的备份与恢复
- Python实现定时备份mysql数据库并把备份数据库邮件发送
- Python实现定时备份mysql数据库并把备份数据库邮件发送
- freebsd下实现mysql的自动备份
- 浅谈使用 Binlog 实现 MySQL 增量备份
- 利用Docker容器实现代理转发和数据备份
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。