Travis CI 实现自动备份Segmentfault文章到Github

栏目: 服务器 · 发布时间: 5年前

内容简介:上一篇简单介绍了 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 CI 实现自动备份Segmentfault文章到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 页面会看到增加了如下两个变量

Travis CI 实现自动备份Segmentfault文章到Github

如果在 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

最后一步,配置完后就可以自动跑了。有三个时间周期可供选择,每月、每周、每天,按需选择就好了

Travis CI 实现自动备份Segmentfault文章到Github

这样就大功告成了,每天自动跑一次

Travis CI 实现自动备份Segmentfault文章到Github

其他方法

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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

疯长

疯长

[美]肖恩· 阿美拉蒂 / 中信出版集团 / 2018-10 / 45

实现财务回报以及扩大影响力是企业家长期关注和讨论的问题。 为什么有些公司实现了10倍的投资回报,而其他的则勉力支撑?产品类似的公司,为什么有的家喻户晓,有的默默无闻直至退出市场…… 为了了解真相,作者阿美拉蒂在这本书中精选10组对照公司,比如,同为社交平通的Facebook(脸谱网)和Friendster(交友网),同为快餐领域先驱的麦当劳和白色城堡,再比如都在开发电动汽车市场的特斯拉......一起来看看 《疯长》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器