• 使用Travis CI给hexo部署做持续集成


    为什么要使用持续集成?

    首先来回忆下使用hexo发布一篇博客的基本步骤吧:

    1. hexo new "xxx"
    2. 写博客
    3. hexo c
    4. hexo g
    5. hexo d

    以上是hexo写一篇博客的几个基本步骤,值得一提的是hexo g和hexo d两个操作,generate是hexo将我们写的md文件转换成网页静态资源文件的过程,执行这个命令后,你的博客根目录下的public文件夹中的文件就是deploy到git上的文件夹,你可以比对确认。

    此外,如果你像我一样,还把hexo的资源文件(不是public目录下生成部署使用的网页资源)同步推送到git上进行备份,那么还需要使用额外的git命令:add,commit,push。

    这样一看是不是就有些麻烦了呢?而持续集成就可以十分方便的简化我们维护博客的过程,配置完成后,你在写完一篇博客后只需要在blog根目录执行git push操作,让CI工具帮你处理hexo的一系列生成过程即可。

    怎么使用?

    1. 首先注册Travis-CI账户,可以直接使用GitHub账户登录;

    2. 注册完成后到GitHub上生成自己的token,之所以使用token是因为CI环境没有我们的SSH密钥,但hexo的deploy会操作我们的仓库;

    3. 有了token后,复制,到Travis-CI点击你的博客仓库,右上角点击进入设置,添加一个环境变量(环境变量名无所谓,方便识别就行,如:GITHUB_TOKEN),值就是生成的token,如图所示:

    1. 在博客根目录添加.travis.yaml文件,本人配置内容如下:

      language: node_js #指定使用的语言
      
      node_js: stable  #采用nodejs的最新版本
      
      # 指定缓存模块,可选。缓存可加快编译速度。
      cache:
        directories:
          - node_modules
      
      before_install:
          - export TZ='Asia/Shanghai' # 更改时区    
      
      # Start: Build Lifecycle
      install:
        - npm install
      
      # 执行清缓存,生成网页操作
      script:
        - hexo clean
        - hexo generate
      
      # 指定博客分支
      branches:
        only:
          - hexo #触发持续集成的分支
      
      # 指定博客的仓库地址
      env:
       global:
          - GH_REF: https://${GITHUB_TOKEN}@github.com/yantuyouyuxian/yantuyouyuxian.git
      # 设置git提交名,邮箱;替换真实token到_config.yml文件,最后depoy部署
      after_script:
        - cd ./public
        - git init
        - git config user.name "xxxx"
        - git config user.email "xxxx@qq.com"
        - git add .
        - git commit -m "TravisCI 自动部署"
        - git push --force --quiet "${GH_REF}" master:main
      
      

    踩的坑

    整个过程唯一要注意的一点就是将CI生成的public文件夹push到git的路径设置问题,也就是.travis.yaml中after_script部分。

    • 首先进入public文件夹,就是生成的网页资源静态文件
    • 然后将这个文件夹推送到我们部署博客的git仓库
    • 因为这里是CI线上的虚拟环境,不像我们本地配置了ssh密钥可以直接操作git仓库,所以需要用到token,token的使用就如GH_REF变量所示
    • 最后是master:main意思是将本地的master分支推送到目标仓库的main分支的意思
  • 相关阅读:
    手下有个人总是用一些小的缺点来否认你的决定的优点,如何解决这个问题? (转载)
    初等代数
    全民上网到全民织网 Web 2.0掀起人民战争
    这个sql语句:列出各门课程成绩最好的两位学生?
    在XML中发送二进制数据
    .NetFramework 数据保存与传输之序列化对象
    Duwamish学习之构架篇错误捕获
    在.NET环境中使用单元测试工具NUnit
    [翻译]XNA外文博客文章精选之fourteen
    [翻译]XNA外文博客文章精选之nine
  • 原文地址:https://www.cnblogs.com/zhang-han/p/14949044.html
Copyright © 2020-2023  润新知