惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
有赞技术团队
有赞技术团队
宝玉的分享
宝玉的分享
雷峰网
雷峰网
Hugging Face - Blog
Hugging Face - Blog
V
V2EX
大猫的无限游戏
大猫的无限游戏
博客园 - 司徒正美
D
Docker
T
The Blog of Author Tim Ferriss
罗磊的独立博客
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
J
Java Code Geeks
Jina AI
Jina AI
博客园 - 【当耐特】
C
Check Point Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
腾讯CDC
Last Week in AI
Last Week in AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog

热爱生活与梦想

迁移LeanCloud的Waline评论数据到TiDB/Neon 25年江浙地区暑假自驾游之感慨 使用阿里云灵码继续完成构建 SSL 证书管理器 亲手给儿子做的棒棒糖摩天轮六一礼物 使用腾讯云 CodeBuddy 构建 SSL 证书管理器 修复代码块默认高度相关缺陷 HugoNexT4.7.2 新功能和升级提示 改善代码块折叠和选中功能 支持Github风格的警告样式 新增音乐短代码功能支持 给文章添加摘要和过期提示功能 回顾24年的过去总结 修复Mathjax行内显示公式的问题 给Hugo文章增加阅读更多跳转的锚点定位功能 Win10隐匿的VPN设置和L2TP连接常见错误 Go语言中“糟糕”的日期时间格式化设计 DaoCloud道客提供的免费Docker镜像代理服务 感谢万能淘宝让自己吃到喜欢的美食 WSL运行时遇到未知异常错误无法使用 隐藏的换行符导致Base64加密解密失败 MySQL自带客户端直接免密登录操作 Linux系统中删除目录软链接的注意项 Java程序调用外网API时CA问题 如何不关机重启WSL2恢复虚拟服务 在Windows上安装Podman容器平台做虚拟化 记一次无法弹出移动硬盘的记录 为友情链接添加自动检测脚本 重新激活Github的2FA认证 Linux中使用tar压缩命令排除文件 继续小米手环的健康生活之旅
使用Github,Travis CI自动布署Hexo博客到Coding,OSChina服务器
凡梦星尘 · 2017-08-19 · via 热爱生活与梦想

通常我们都是在本地用hexo deploy发布博客文章到远程的Pages服务器,可别忘记了我们是还需要提交代码的,所以是不是觉得有点麻烦还得分开两步进行操作。这时突然想起是否可用Travis CI工具来完成这个布署的操作呢?答案是肯定的,整体的流程大致如下:

  • 在本地(又或者Github网站)上编辑文章
  • 提交文章到Github服务器
  • Travis CI收到通知,同步最新的Github代码,并执行用户自定义好的Travis脚本生成静态博客
  • 最终再把生成好的博客推送到指定的Pages服务器

只是这其中有点比较麻烦的问题就是如何保护我们的私钥,还好Travis CI已经为我们准备好啦,那么就开始我们的捣腾之旅吧。

准备Travis Client工具

准备Ruby环境

Ruby的安装请移步搜索引擎,在此只是提示下建议使用2.0以上的版本,另外就是注意更新gem的镜像地址: Ruby China

Travis CI账户

如有需要可以单独注册账号,建议直接使用Github Token登录即可。 接下来就是需要生成个Github Token,在Github的个设置面板中找到,或者是直接点击 Github Tokens 进行创建,如下图所示:

travis-ci-deploy01

travis-ci-deploy02

保存好刚刚创建的Token,然后使用Github授权登录Travis CI并跳转至控制面板 Travis Profile ,选择需要创建的项目(即你的博客项目)如下图所示

travis-ci-deploy03

Travis Client安装

Travis Client安装非常的简单,命令如下:

1
sudo gem install travis -v 1.8.8 --no-rdoc --no-ri

安装成功后,使用如下命令检查,安装成功会有版本号的输出。

使用如下命令检验上一步所生成的Github Token,并登录Travis CI成功后会返回欢迎信息。

1
2
travis login -g fb25xxxxxxxxxxx
Successfully logged in as xxxx!

SSH私钥加密

切换到博客的根据目录,创建一个名为.travis的目录,并把用于Coding和OSChina的私钥拷贝至此,使用如下的命令生成Travis能识别的加密文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
travis encrypt-file id_rsa
Detected repository as elkan1788/my-hexo-blog, is this correct? |yes| yes
encrypting id_rsa for elkan1788/my-hexo-blog
storing result as id_rsa.enc
storing secure env variables for decryption

Please add the following to your build script (before_install stage in your .travis.yml, for instance):

    openssl aes-256-cbc -K $encrypted_c9744fe6174f_key -iv $encrypted_c9744fe6174f_iv -in id_rsa.enc -out id_rsa -d

Pro Tip: You can add it automatically by running with --add.

Make sure to add id_rsa.enc to the git repository.
Make sure not to add id_rsa to the git repository.
Commit all changes to your .travis.yml.

加密成功后千万要记得要把id_rsa文件删除,并把如下的语句保存好,后续在布署脚本中用得上:

1
openssl aes-256-cbc -K $encrypted_c9744fe6174f_key -iv $encrypted_c9744fe6174f_iv -in id_rsa.enc -out id_rsa -d

编写Travis脚本

Travis脚本使用的是yml语法,写起来并不难,注意空格的缩进就好。在博客根目录下创建名为.travis.yml的文件,内容参考如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# Define language environment
language: node_js

# use root accout or not
sudo: false

# node js version
node_js: stable

# setting timezone
before_install:
  - export TZ='Asia/Shanghai'

# cache installed modules
cache:
  apt: true
  directories:
    - node_modules

# add pages server domain
addons:
  ssh_known_hosts:
    - git.coding.net
    - git.oschina.net

# auto deploy blog to pages server
deploy:
  provider: script
  script: sh .travis/deploy.sh
  skip_cleanup: true
  on:
    branch: master

# offical request
dist: precise

# which branch trigger
branches:
  only:
    - master

如果不确定所编写的脚本是否正确,可借助Travis CI进行校验,命令如下:

1
2
travis lint .travis.yml
Hooray, .travis.yml looks valid :)

编辑deploy.sh脚本

接下来就是编写个发布博客文章到Pages服务器的脚本,主要的流程如下:

  • 解密SSH私钥,并输出到指定的目录
  • 修改私钥的文件权限,启动SSH Agent, 添加私钥
  • 设置Git配置,主要是用户名,邮箱地址
  • 使用Hexo命令->清理,生成,发布

脚本内容参考如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
# Decrypt the private SSH key
openssl aes-256-cbc -K $encrypted_c9744fe6174f_key -iv $encrypted_c9744fe6174f_iv -in .travis/id_rsa.enc -out ~/.ssh/id_rsa -d

# Set the permission of the private SSH key
chmod 600 ~/.ssh/id_rsa

# Start SSH agent
eval $(ssh-agent)

# Add the SSH private key to the system
ssh-add ~/.ssh/id_rsa

# Set Git config
git config --global user.name "凡梦星尘"
git config --global user.email elkan1788@gmail.com

# Clean, generate and deploy to Pages server
hexo clean && hexo g && hexo deploy

发表文章

使用hexo new "article tittle"命令创建一篇文章,然后加入你想吐槽的观点,内容等保存,然后用git push命令推送代码到Github服务器,此时登录Travis CI便可以在对应的项目中看到"华丽"的日志输出如下图所示:

travis-ci-deploy04

如果最后的结果是绿色,那么恭喜你,你的博客已经布署成功,赶紧去刷新页面瞅瞅。

至此所有的配置结束,怎么样,感觉是不是很炫,只要一个简单的git push命令即保存代码又搞定博客站点布署,如有问题欢迎吐槽。

参考: