美文网首页其他
hexo+gitpages+ci 打造个人博客

hexo+gitpages+ci 打造个人博客

作者: EVAN_1382 | 来源:发表于2019-02-06 12:05 被阅读0次

    前言:先宣传一下个人博客,如果你觉得在我的文章中有所收获,求一个Star,如果你有好的建议,请麻烦留言告诉我

    前言

    说起自己写博客的历史也是有断断续续一年了,大概也是18年春节期间自己fork了他人的博客,使用gitPages部署,也是从那时开始学习git,博客说起来也算是自己成为一个稍微正式一点的coder的开端吧。至于自己为什么要放弃之前博客,要重新利用hexo打造个人博客,原因如下:

    1. hexo配置简单,插件丰富
    2. 3-hexo这个主题比较符合自己对于博客条理性的要求,相比于之前的博客更加精炼,易整理,易阅读
    3. ci的集成也让hexo更加关心写作本身
      在阅读本文之前,默认读者拥有域名解析经验与gitPages了解,如果存在疑问,请参考我fork的上一个Blog原作者的详细搭建流程

    基础环境

    hexo安装

    基础环境:Node,Git
    教程:hexo官网安装教程

    3-hexo主题

    仓库地址

    Travis CI配置

    请先按以下操作配置,详细配置在余下篇幅介绍

    1. 将Travis CI授予GitHub权限
    2. 需要被CI管理的仓库在根目录生成 .travis.yml文件,并进行push到github
    3. Travis CI开启对相应仓库的监测
    4. push代码到ci配置的监测分支,看log记录是否触发成功
    ci触发分支配置
    branches: 
      only:
      - source //触发ci的条件分支
    

    补充: 为防止有些同学不了解CI概念,我简单介绍下CI,CI意味着持续集成,可以以我公司配置的CI为例,我们都知道代码上线需要保证质量,我们可以在CI中配置每次进行Git Push时,复杂CI的机器就会进行代码的编译,历史自测的检查,当我们合并Master分支时,我们的对外的Api可能发生变化,也可以依靠CI进行自动API包的发布,这些都是CI要做的事情,在这篇文章涉及的代码库存在两个分支,source分支保留我们博客的源码,包含我们文章的Markdown等文件,Master分支是Hexo生成的静态网页文件,我们依靠Travis CI做到的就是,我们向source分支提交代码,Travis CI进行拉取环境,编译,最后hexo deploy到Master分支,让我们的网页进行变化

    CI

    .travis.yml文件加入对环境运行环境支持

    language: node_js //node环境
    node_js:
    - 10.15.1 //node版本
    branches: 
      only:
      - source //触发ci的条件分支
    before_install: 
    - npm install -g hexo-cli //hexo环境
    - npm install --save hexo-deployer-git //hexo deploy插件
    install:
    - npm install //安装package.json文件中配置的hexo插件
    

    当source分支发生改变,Travis CI监测到change后进行ci,首先安装node环境,之后安装hexo环境,安装deploy插件,安装额外hexo插件

    _config.yml文件加入仓库配置

    deploy:
      type: git
      repo: git@github.com:EvanLjp/evanljp.github.io.git
      branch: master
    

    一些细心地同学可能已经发现了一些问题,我们是在运行ci的机器进行deploy,但是我们机器上并没有配置git秘钥,怎么能进行push操作呢,这就要说到Github OAuth,支持一种带有token的秘钥进行免git秘钥push

    创建Github OAuthToken

    1. 打开 Personal Access Tokens
    2. create new token
    3. 请注意,至少给这个token repo的权限,否则无法push
    4. 进行token可用性测试
      • 按https://<token>@github.com/owner/repo.git格式拼接某个仓库的url(<token>表示生成token),例如我的blog仓库地址:https://1f0f0XXX@github.com/Evanljp/evanljp.github.io.git(XXX表示省略,实际token很长)
      • 进行git clone ,能clone说明url拼接合理
      • 进行git push,如成功,说明这个token可用,如发现403,请检查repo权限是否赋予
        我们已经看到这个token权限的强大之处,我的仓库source分支包含了Blog的所有源码,我不可能把这么大权限的token进行暴露,所以必须进行加密,幸好travis已经提供解决方案,接下来我们看一下如何token加密

    Token加密

    1. 首先安装 travis 命令行工具
    gem install travis
    travis login
    
    1. .travis.yml通过命令加入加密token :
      travis encrypt 'GH_TOKEN=TOKEN' --add,TOKEN表示之前明文token,你会发现.travis.yml文件已经加入了如下内容:
    env:
      global:
        secure: fuY23T6wEu...
    

    Token解密

    在.travis.yml文件加入如下内容,以动态解密发布

    after_success:
        - git config --global user.name "evanljp"
        - git config --global user.email "evanljp@outlook.com"
        - sed -i'' "s~git@github.com:EvanLjp/evanljp.github.io.git~https://${GH_TOKEN}:x-oauth-basic@github.com/EvanLjp/evanljp.github.io.git~" _config.yml
        - hexo deploy --silent
    

    发布

    上一步的配置中实际已经加入了hexo deploy --silent发布配置,请动手尝试,观看CI线上Log,如果发现Push成功,那么恭喜你,你也拥有了一个可以自动Ci的blog,让你可以更加关注写作

    参考

    个人blog配置
    Deploying Hexo to Github Pages with Travis

    相关文章

      网友评论

        本文标题:hexo+gitpages+ci 打造个人博客

        本文链接:https://www.haomeiwen.com/subject/koobsqtx.html