hexo搭建博客(二) - 部署到github
使用Travis CI自动部署Hexo
参考链接:
hexo部署到git
我们将会使用 Travis CI 将 Hexo 博客部署到 GitHub Pages 上。Travis CI 对于开源 repository 是免费的,但是这意味着你的站点文件将会是公开的。
- 新建一个 repository。如果你希望你的站点能通过 <你的 GitHub 用户名>.github.io 域名访问,你的 repository 应该直接命名为 <你的 GitHub 用户名>.github.io。
- 将你的 Hexo 站点文件夹推送到 repository 中。默认情况下不应该 public 目录将不会被推送到 repository 中,你应该检查 .gitignore 文件中是否包含 public 一行,如果没有请加上。
- 将 Travis CI 添加到你的 GitHub 账户中。
- 前往 GitHub 的 Applications settings,配置 Travis CI 权限,使其能够访问你的 repository。
- 你应该会被重定向到 Travis CI 的页面。如果没有,请 手动前往。
- 在浏览器新建一个标签页,前往 GitHub 新建 Personal Access Token,只勾选 repo 的权限并生成一个新的 Token。Token 生成后请复制并保存好。
- 回到 Travis CI,前往你的 repository 的设置页面,在 Environment Variables 下新建一个环境变量,Name 为 GH_TOKEN,Value 为刚才你在 GitHub 生成的 Token。确保 DISPLAY VALUE IN BUILD LOG 保持 不被勾选 避免你的 Token 泄漏。点击 Add 保存。
- 在你的 Hexo 站点文件夹中新建一个 .travis.yml 文件:
sudo: false
language: node_js
node_js:
- 10 # use nodejs v10 LTS
cache: npm
branches:
only:
- master # build master branch only
script:
- hexo generate # generate static files
deploy:
provider: pages
skip-cleanup: true
github-token: $GH_TOKEN
keep-history: true
on:
branch: master
local-dir: public
- 将 .travis.yml 推送到 repository 中。Travis CI 应该会自动开始运行,并将生成的文件推送到同一 repository 下的 gh-pages 分支下
- 在 GitHub 中前往你的 repository 的设置页面,修改 GitHub Pages 的部署分支为 gh-pages。
- 前往 https://<你的 GitHub 用户名>.github.io 查看你的站点是否可以访问。这可能需要一些时间。
将本地仓库推送到github.io
初始化本地仓库
$ cd <定位到本地站点文件夹> #定位到本地文件夹
$ pwd #查看当前文件夹位置
$ git init #初始化,将文件夹变成Git可管理的仓库
$ git add . #将所有文件提交到暂存区,由于是第一次提交,需要将所有文件都进行提交,如果一个一个的提交太麻烦,通过. 命令可以将所有文件都进行提交。
$ git commit -m 'the initial edition' #提交到版本库
$ git remote add origin https://github.com/etwinnie/etwinnie.github.io.git #将本地仓库与Github仓库关联
Github仓库地址,在即为刚刚新建的Github仓库地址,可在此处找到
github推送
$ git pull --rebase origin master # 第一次推送,要与云端仓库合并
$ git push -u origin master #进行推送,-u指将master分支全部推送
#定期维护
$ git add -A #将文件的修改上传到暂存区
$ git commit -m '说明' #提交到本地仓库
$ git push origin master #推送到GitHub网站上
可能出现的问题
源引用表达式 master 没有匹配>
$ git pull origin master #源引用表达式 master 没有匹配
$ git push --set-upstream origin master #当前分支 master 没有对应的上游分支
有些文件没有被提交到github
查看一下本地仓库的.gitignore文件中,是否设置对应被忽略的文件夹。
public文件夹一般情况下不会同步上传到github,它是生成的html静态文件。
完成本地仓库推送后报错 -
参考链接:hexo部署记录及采坑经验
1. 邮箱提示:Page build failure
hexo自带的主题 landscape 的 REDEME.md 文件里面有错误的标签,于是直接删除掉了这个 README 文件。
2. 删除后邮箱提示:Page build warning
提示说jekyll 主题不被github pages支持。可能是在git push是忽略了.deploy_git文件,该文件是被linux系统隐藏的。解决方案,修改项目的_config.yml配置,将.nojekyll添加在inclde中。
3. 访问用户名.github.io不显示博客页面(问题一)
(1)添加gh-pages分支
master分支存储代码,gh-pages分支用来存放hexo g出来的public文件夹。Travis CI即自动化部署master分支中的代码,将其生成的public文件夹部署到gh-pages分支中。
# 列出所有本地分支和远程分支,仓库默认在 master 分支
$ git branch -a
# 新建并切换到 gh-pages 分支
$ git checkout -b gh-pages
# 显示有变更的文件
$ git status
$ git add .
# 提交暂存区到仓库区,并添加代码提交信息
$ git commit -m 'first commit'
# 添加远程仓库
$ git remote add origin git@github.com:DesertsX/yulequan-relations-graph.git
# 把本地的 gh-pages 分支推送到 origin 服务器上
$ git push origin gh-pages
# 切换分支命令
$ git checkout <想到切换的分支>
# 删除分支
$ git branch -d <想删除的分支名称>
注意:.travis.yml文件中,Travis CI默认部署的就是public文件夹了。
(2)在仓库setting中,修改仓库的默认Github pages显示页面。
4. 访问用户名.github.io不显示博客页面(问题一)
问题描述:更改主题为Next后,git push页面为空白,Travis CI提示 WARN No layout
原因:主题文件夹中有.git文件,导致上传git的时候被忽略了。
解决办法:
$ rm -rf themes/主题文件名
$ git add .git commit -m "fix"
$ git clone -b master 主题
$ git地址 themes/主题文件名rm -rf themes/主题文件名/.git
$ git add .git commit -m "fix"
$ git push
因为这个小问题,完全清空github和本地仓库重新设置了一遍~