如何利用GitHubAction和gulp部署压缩你的GithubPage+Hexo博客

差点翻车
本文原发表于个人博客,转换为CSDN可能排版可能有些许差异,正确排版原文可以查看
地址:https://blog.fivezha.cn/2020/07/24/github-action-blog/

前言

GithubAction作为Github提供的免费的CI/CD服务,让开发者感受到了自动化的爽,相比起Travis CI来说,GitHubAction集成方便,非常适合快速部署的操作,本教程便是一篇如何利用GithubAction对于GithubPage+Hexo博客进行自动化部署,并利用gulp进行压缩。

配置GithubAction

生成key

首先依旧是申请key,

cd ~/.ssh
ssh-keygen -t rsa -b 4096 -C "$(git config user.email)" -f gh-pages -N ""

在这里插入图片描述

此时会生成**.pub的公钥与没有后缀的私钥**:

配置仓库

首先新建一个空仓库,用于存放你的博客根目录,新建完成后将博客根目录所有文件都上传到这个仓库中,传完项目结构大体如下:

在这里插入图片描述

然后开始配置仓库,首先

在这里插入图片描述

在这里插入图片描述

配置成你的公钥,然后在上传博客的仓库中,上传你的私钥:

在这里插入图片描述

注意这里的私钥名字一定要跟后面Action里面设置的一样!(不知道就跟我一样)

配置workflow

在博客根目录新建.github文件夹,再在.github文件夹里新建workflows文件夹,新建完在workflows文件夹里新建deploy.yml文件,然后按照如下编写:

# workflow name
name: Deploy To Github Pages

# 当有 push 到仓库就运行
on: [push]

jobs:
  deploy: 
    name: Deploy Hexo Public To Pages
    runs-on: ubuntu-latest 
    env:
      TZ: Asia/Shanghai    
        
    steps:
    # 切换到master
    # from: https://github.com/actions/checkout
    - name: Checkout Repository master branch
      uses: actions/checkout@master 
    
    # 安装node
    # from: https://github.com/actions/setup-node  
    - name: Setup Node.js 11.x 
      uses: actions/setup-node@master
      with:
        node-version: "11.x"
    
    # 缓存 node_modules
    - name: Cache node modules
      uses: actions/cache@v2
      with:
        path: ~/.npm
        key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
        restore-keys: |
          ${{ runner.OS }}-build-${{ env.cache-name }}-
          ${{ runner.OS }}-build-
          ${{ runner.OS }}-

    # 安装hexo并生成
    - name: Setup Hexo Dependencies
      run: |
        npm install hexo-cli -g
        npm install
        hexo generate
        
    # 部署到GitHubPage
    # from https://github.com/peaceiris/actions-gh-pages    
    - name: Deploy
      uses: peaceiris/actions-gh-pages@v3
      with:
        deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
        # 这里写你自己的仓库名
        external_repository: xmmmmmovo/xmmmmmovo.github.io
        publish_branch: master
        publish_dir: ./public
        commit_message: ${{ github.event.head_commit.message }}

好了,这样就已经配置完成了,你每次提交到此仓库,便会自动帮你运行部署到GithubPage上去。

测试

在这里插入图片描述

在这里插入图片描述

可以看到,已经成功运行了。

配置gulp

我们随便点开一个文件:

在这里插入图片描述

可以看到,里面充斥着大量的空格,积少成多,这会占用非常多的时间,让你的博客感觉加载起来很慢,所以既然我们都是全自动化部署了,我们不如直接在进行一遍压缩操作,这样使你博客加载的更加迅速,体验更加良好。

安装gulp

首先进到博客根目录,然后打开命令行,输入(这里其实你直接在package.json里面写也行(因为node_modules已经没用了),但是我比较懒):

npm install gulp@3.9.1 gulp-minify-css gulp-htmlmin gulp-htmlclean --save-dev

待完成后,改写deploy.yml

# workflow name
name: Deploy To Github Pages

# 当有 push 到仓库就运行
on: [push]

jobs:
  deploy: 
    name: Deploy Hexo Public To Pages
    runs-on: ubuntu-latest 
    env:
      TZ: Asia/Shanghai    
        
    steps:
    # 切换到master
    # from: https://github.com/actions/checkout
    - name: Checkout Repository master branch
      uses: actions/checkout@master 
    
    # 安装node
    # from: https://github.com/actions/setup-node  
    - name: Setup Node.js 11.x 
      uses: actions/setup-node@master
      with:
        node-version: "11.x"
    
    # 缓存 node_modules
    - name: Cache node modules
      uses: actions/cache@v2
      with:
        path: ~/.npm
        key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
        restore-keys: |
          ${{ runner.OS }}-build-${{ env.cache-name }}-
          ${{ runner.OS }}-build-
          ${{ runner.OS }}-

    # 安装hexo并生成
    - name: Setup Hexo Dependencies
      run: |
        npm install hexo-cli -g
        npm install
        hexo generate
        gulp
        
    # 部署到GitHubPage
    # from https://github.com/peaceiris/actions-gh-pages    
    - name: Deploy
      uses: peaceiris/actions-gh-pages@v3
      with:
        deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
        # 这里写你自己的仓库名
        external_repository: xmmmmmovo/xmmmmmovo.github.io
        publish_branch: master
        publish_dir: ./public
        # 这里我改成了与原格式相似格式的commit message
        commit_message: 'Site updated: ${{ github.event.head_commit.timestamp }}'

然后编写gulpfile.js文件用来加载gulp

var gulp = require('gulp');
var minifycss = require('gulp-minify-css');
var htmlmin = require('gulp-htmlmin');
var htmlclean = require('gulp-htmlclean');
gulp.task('minify-css', function() {
    return gulp.src('./public/**/*.css')
        .pipe(minifycss())
        .pipe(gulp.dest('./public'))
});
gulp.task('minify-html', function() {
  return gulp.src('./public/**/*.html')
    .pipe(htmlclean())
    .pipe(htmlmin({
         removeComments: true,
         minifyJS: true,
         minifyCSS: true,
         minifyURLs: true
    }))
    .pipe(gulp.dest('./public'))
});
gulp.task('default', ['minify-html', 'minify-css']);

此时再次提交,等待GithubAction完成之后,便可以查看效果了~

在这里插入图片描述

可以看到800多行瞬间变为了16行,是不是很爽~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值