前言
Travis-CI是一个可以将Github
上的代码做持续集成的网站。
持续集成和版本控制相关联, Git
就是一种版本控制, 可以提交, 也可以下载, 就像网盘一样。
持续集成就是你的每一次提交上传, 服务器都会自动对你提交后的代码进行编译, 单元测试等一系列行为, 并告知你是否成功。
阅读条件
- 至少一次手动
hexo d
部署过GitHub Page
博客
- 熟悉Linux基本命令
- 熟练Git基本命令
准备环境
准备虚拟机
使用的是CentOS7
虚拟机, 用户名root
, 密码root
网络连接选择桥接模式, 关于桥接模式可以看我的另一篇文章。
Windows
网络环境选择专用网络
Windows10
需要在网络适配器属性界面, 添加VMware Bridge Protocol
协议。
使用Xshell(发送命令)和FileZilla(传输文件)在Windows
上连接虚拟机. 两者都是通过ssh
连接的, 在软件中配置好虚拟机的IP
地址和账号密码root
即可。
准备Travis-CI帐号
Travis-CI支持GitHub
帐号登录。
配置教程参考使用 Travis 自动部署 Hexo 到 Github 与 自己的服务器
准备Git并clone
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| yum install -y wget wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo yum clean all yum makecache
yum install -y git
git config --global user.name "Ahaochan" git config --global user.email "844394093@qq.com"
cd /opt git clone https://github.com/Ahaochan/Ahaochan.github.io.git cd Ahaochan.github.io/
git branch source git checkout source
rm -rf *
|
准备Travis-CI 客户端
1 2 3 4 5 6 7 8 9 10
| yum install -y gcc ruby ruby-devel
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
gem install travis
travis login --com
|
将本地的hexo移动到服务器
请确保服务器的项目分支已经切换到source
通过FileZilla将本地的hexo
文件夹部署到服务器。
为了节省GitHub
空间, 我只将以下文件加入仓库中。
加密next.yml
我将hexo/_config.yml
和theme/next/_config.yml
的内容统一复制到source/_data/next.yml
中。
配置文件包含太多敏感信息, 所以我进行了加密.
Travis-CI
提供了加密策略, 只要加密后, 就只有Travis-CI
能解密, 就算是加密的人也不能解密。具体可以看我翻译的Travis-CI
文档。
1 2 3 4 5 6 7 8 9 10 11 12 13
| git checkout source
cd source/_data
travis encrypt-file next.yml
vim /opt/Ahaochan.github.io/.travis.yml before_install: - openssl aes-256-cbc -K $encrypted_3873d9e40d23_key -iv $encrypted_3873d9e40d23_iv -in source/_data/next.yml.enc -out source/_data/next.yml -d
vim /opt/Ahaochan.github.io/.gitignore source/_data/next.yml
|
给予Travis推送GitHub的权限
网上很多都是生成ssh
公钥, 或者直接使用git push -u origin master
的方式部署。
我参考的使用 Travis 自动部署 Hexo 到 Github 与 自己的服务器配置了REPO_TOKEN
, 但是没有物尽其用。
这里将REPO_TOKEN
做了替换。
1 2 3 4 5
| deploy: - type: git repo: https://REPO_TOKEN@github.com/Ahaochan/Ahaochan.github.io.git branch: master
|
1 2 3 4
| before_install:
- sed -i "s/REPO_TOKEN/${REPO_TOKEN}/" source/_data/next.yml
|
从GitHub下载最新模块和主题
为了节省Github
空间, 我在.travis.yml
配置了很多的下载命令.
详细可以看我的GitHub
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| language: node_js
node_js: lts/*
branches: only: - source
cache: apt: true yarn: true directories: - node_modules - theme before_install:
- git config --global user.name "Ahaochan" - git config --global user.email "844394093@qq.com"
- curl -o- -L https://yarnpkg.com/install.sh | bash - export PATH=$HOME/.yarn/bin:$PATH
- yarn global add hexo-cli - yarn add hexo-asset-image --save - yarn add hexo-generator-searchdb --save - yarn add hexo-generator-feed --save - yarn add hexo-related-popular-posts --save - yarn add hexo-symbols-count-time --save - yarn add hexo-generator-sitemap --save - yarn add hexo-generator-baidu-sitemap --save - yarn add hexo-deployer-git --save - yarn add hexo-leancloud-counter-security --save - yarn add hexo-helper-live2d --save
- openssl aes-256-cbc -K $encrypted_3873d9e40d23_key -iv $encrypted_3873d9e40d23_iv -in source/_data/next.yml.enc -out source/_data/next.yml -d
- sed -i "s/REPO_TOKEN/${REPO_TOKEN}/" source/_data/next.yml
- git clone https://github.com/theme-next/hexo-theme-next themes/next
- git clone https://github.com/theme-next/theme-next-pangu.git themes/next/source/lib/pangu - git clone https://github.com/theme-next/theme-next-reading-progress themes/next/source/lib/reading_progress - git clone https://github.com/theme-next/theme-next-fastclick themes/next/source/lib/fastclick - git clone https://github.com/theme-next/theme-next-jquery-lazyload themes/next/source/lib/jquery_lazyload - git clone https://github.com/theme-next/theme-next-pace themes/next/source/lib/pace - git clone https://github.com/theme-next/theme-next-canvas-nest themes/next/source/lib/canvas-nest - git clone https://github.com/theme-next/theme-next-fancybox3 themes/next/source/lib/fancybox install:
- yarn script:
- hexo lc-counter register $leancloud_username $leancloud_password --config source/_data/next.yml - hexo clean --config source/_data/next.yml - hexo g --config source/_data/next.yml - hexo d --config source/_data/next.yml
|
最后
最后将所有文件git push -u origin source
推送到远程的source
分支上即可。
如果失败, 可以在 https://travis-ci.org/Ahaochan/Ahaochan.github.io/requests 查看错误信息。
参考资料