前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >hexo-CI自动部署

hexo-CI自动部署

作者头像
hahah
发布2022-06-15 19:52:37
3450
发布2022-06-15 19:52:37
举报
文章被收录于专栏:爪哇学习日记爪哇学习日记

hexo-CI自动部署

构建说明

​ hexo博客项目已经构建有好一段时间了,一般都是直接通过指令进行发布,为了适配在不同地方编辑笔记快速直接发布可采用CI的方式进行自动部署,此处介绍的是通过GitHab Actions+Github Pages的方式进行发布(分仓库存储:用于区分版本源文件管理&网站发布版本管理),随后则可直接通过typora编辑md文件并上传到指定仓库路径,自动部署网站内容

Github Page:是github网站提供的静态网站服务

travis: 是在线托管的CI服务,用Travis来进行持续集成,参考文章

github Actions:借助Github原生CI/CD构建自动部署

  • 原有hexo部署三连:

​ 原有构建思路:A仓库管理源码提交信息、B仓库管理构建后的代码版本信息

代码语言:javascript
复制
hexo clean & hexo g & hexo deploy
  • 分支推送+CI自动部署

​ 基于上述思路是将source和发布仓库进行分离,可考虑在源码仓库下借助github pages+CI自动集成部署环境,构建工作流部署信息(可同源仓库发布或者跨仓库发布)

代码语言:javascript
复制
    CI\CD概念:「持续集成(Continuous Integration)」、「持续交付(Continuous Delivery)」、「持续部署(Continuous Deployment)」
代码语言:javascript
复制
# 本地编辑文件推送到指定的分支

# 构建CI环境自动部署

1.github Actions 跨仓库发布

​ 在源码仓库构建配置文件:.github/.workflows/autoDeploy.yml

  • action设计思路:
代码语言:javascript
复制
a.拉取指定分支代码(gh-pages)
b.设定node.js环境、构建项目模块依赖缓存
c.服务器验证并执行指令部署
  • action配置参考

​ 可先从Github Actions仓库、Github Marketplace中搜索可用的Actions,在此基础上造轮子

构建配置参考

  • 采用SSH方式推送指定仓库,通过指令生成新的SSH秘钥
代码语言:javascript
复制
# 在当前目录生成hexo-deploy-key私钥文件和hexo-deploy-key.pub公钥文件
ssh-keygen -f hexo-deploy-key -C "username.github.io"

​ A仓库存储源文件内容,B仓库存储发布内容,则在B仓库中配置公钥文件,A仓库中配置私钥文件

​ B仓库配置:Settings -> Deploy keys -> 添加Deploy key -> 填充 hexo-deploy-key.pub文件内容,勾选Allow write access配置

​ A仓库配置:Settings -> Secrets -> Actions -> 添加属性配置HEXO_DEPLOY_KEY_PRI,填充hexo-deploy-key私钥文件内容

  • autoDeploy.yml文件编辑

​ 其构建原理为监听指定分支变化,通过checkout分支、访问目录、部署环境并执行hexo三连。除却github仓库访问权限,其他相关的配置均引用代码中的内容(和本地发布操作一样,只不过是让机器替代执行)

代码语言:javascript
复制
# 文件路径 .github/workflows/autoDeploy.yml
name: CI自动部署

on:
  push:
    branches: [dev] # 当push指定分支操作触发时执行自动部署

jobs:
  hexo-deployment:
    runs-on: ubuntu-latest
    env:
      TZ: Asia/Shanghai

    steps:
    - name: 1.checkout分支
      uses: actions/checkout@v2
      with:
        ref: dev
  
    # 如果主题不是通过git submodule方式引入则不需要配置
    - name: extend:Checkout主题仓库
      uses: actions/checkout@v2
      with:
        repository: holic-x/hexo-theme-butterfly # 主题仓库位置(可以指向自己fork的项目)
        ref: dev-custom # 拉取分支
        path: themes/butterfly # 拉取内容到指定位置

    - name: 2.node环境安装
      uses: actions/setup-node@v1
      with:
        node-version: '12.x'

    - name: 3.缓存 Hexo 模块,提高构建速度
      uses: actions/cache@v1
      id: cache
      with:
        path: node_modules
        key: ${{runner.OS}}-${{hashFiles('**/package-lock.json')}}

    - name: 4.安装依赖
      if: steps.cache.outputs.cache-hit != 'true'
      run: |
        npm install --save

    - name: 5.服务器验证
      env:
        ACTION_DEPLOY_KEY: ${{ secrets.HEXO_DEPLOY_KEY_PRI }}
      run: |
        sudo timedatectl set-timezone "Asia/Shanghai"
        mkdir -p ~/.ssh/
        echo "$ACTION_DEPLOY_KEY" > ~/.ssh/id_rsa
        chmod 600 ~/.ssh/id_rsa
        ssh-keyscan github.com >> ~/.ssh/known_hosts  # 填写服务器IP(如果是自建Git仓库则填写相应的服务器IP)
        
    - name: 6.三连操作部署
      env:
        BAIDU_TOKEN: ${{ secrets.BAIDU_TOKEN }} # 设置环境变量BAIDU_TOKEN
        BING_TOKEN: ${{ secrets.BING_TOKEN }} # 设置环境变量BING_TOKEN
        GIT_NAME: ${{ secrets.GIT_NAME }} 
        GIT_EMAIL: ${{ secrets.GIT_EMAIL }} 
      run: |
        git config --global user.name ${GIT_NAME}  # GitHub用户名
        git config --global user.email ${GIT_EMAIL} # GitHub用户名邮箱
        npx hexo clean && npx hexo g && npx hexo deploy

或者可以直接引用现成的轮子:

​ a.部署到Github Pages:theme-keep/hexo-deploy-github-pages-action

​ b.部署到腾讯云服务器:easingthemes/ssh-deploy

  • 检查_config.yml文件

​ 部署内容格式参考如下所示

代码语言:javascript
复制
deploy:
  type:  git
  repository:  git@github.com:username/username.github.io.git
  branch:  master
  name:  username
  email:  username@gmail.com

2.CI引入自动提交URL至搜索引擎

​ 结合hexo-submit-urls-to-search-engine插件,参考SEO优化说明

​ 在Settings->Secrets->Actions中配置属性,随后添加一个步骤用于发布

参数

说明

BAIDU_TOKEN

根据文档指示生成

BING_TOKEN

根据文档指示生成

| ​ |

  • 部署操作部分配置环境变量
代码语言:javascript
复制
- name: 6.三连操作部署
      env:
        BAIDU_TOKEN: ${{ secrets.BAIDU_TOKEN }} # 设置环境变量BAIDU_TOKEN
        BING_TOKEN: ${{ secrets.BING_TOKEN }} # 设置环境变量BING_TOKEN
        GIT_NAME: ${{ secrets.GIT_NAME }} 
        GIT_EMAIL: ${{ secrets.GIT_EMAIL }} 
      run: |
        git config --global user.name ${GIT_NAME}  # GitHub用户名
        git config --global user.email ${GIT_EMAIL} # GitHub用户名邮箱
        npx hexo clean && npx hexo g && npx hexo deploy
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • hexo-CI自动部署
    • 1.github Actions 跨仓库发布
      • 构建配置参考
    • 2.CI引入自动提交URL至搜索引擎
    相关产品与服务
    持续集成
    CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档