Github Actions全自动博客部署

访问https://darlewo.cn可查看详细内容。

博客的搭建可以参考Hexo + Yilia + Github Pages 博客搭建。

我们现在有两个仓库,一个是存放网页静态文件的github.io;一个是存放博客源码的仓库,因为里面的配置涉及到私人的密码信息,因此设置为私有仓库。

那么现在博客部署分为两步:

  1. 当添加新文章或更改配置后,需要将源码push到私有仓库;

  2. 博客编译三步曲将网页静态文件上传到github.io.

    hexo cl
    hexo g
    hexo d
    

有没有什么方法能实现全自动的博客部署, 每次只需要push源码到私有仓库,hexo会自动编译上传网页静态文件。

方法有很多,本文介绍一个Github新推出的功能–Actions.

首先介绍一下Github Actions:作为一种CI/CD工具(Continuous Integration/Continuous,持续集成/持续部署)它可以实现许多任务的自动化,能够进行测试,进行质量检查,然后部署。

这介绍有点官方,简而言之就是,当你将源代码push到Github之后,你可以自己定义一套操作流程。比如说你想让你的代码push上去之后在其他平台上看看会不会报错,那么你定义的流程就是首先将你上传的源码clone到本地(当然不是你的本地,类似于docker,都在云上),然后安装相关环境,再去执行你定义的操作。如果发现有什么错误信息,你好去修改你的源码。

拉回到本文的主题,我们想定义的一套流程是:当我push源码的时候,它会自动编译博客而不需要我再去执行那三步曲。

下面是具体步骤:

准备密钥

公钥+私钥

ssh-keygen -t rsa -C "Github邮箱地址"
# 比如 ssh-keygen -t rsa -C "[email protected]"

公钥内容:~/.ssh/id_rsa.pub

私钥内容:~/.ssh/id_rsa

密钥设置

在github.io的Settings中,设置Deploy keys为公钥内容,命名随意。

Github Actions全自动博客部署_第1张图片

在私有仓库的Settings中,设置Secrets,新增内容为私钥,命名为DEPLOY_KEY

Github Actions全自动博客部署_第2张图片

添加Actions配置文件

这一步就是定义当我们push源码后的操作

在Actions中新增workflow

Github Actions全自动博客部署_第3张图片

Github会自动生成一个yaml文件

Github Actions全自动博客部署_第4张图片

替换为如下配置文件,只需要修改下Git的配置信息,点击Start commit

# workflow name
name: Hexo Blog CI

# master branch on push, auto run
on: 
  push:
    branches:
      - master
      
jobs:
  build: 
    runs-on: ubuntu-latest 
        
    steps:
    # check it to your workflow can access it
    # from: https://github.com/actions/checkout
    - name: Checkout Repository master branch
      uses: actions/checkout@v2
      
    # from: https://github.com/actions/setup-node  
    - name: Setup Node.js 10.x 
      uses: actions/setup-node@master
      with:
        node-version: "10.x"
    
    - name: Setup Hexo Dependencies
      run: |
        npm install hexo-cli -g
        npm install hexo-deployer-git --save
        npm install
    
    - name: Setup Deploy Private Key
      env:
        HEXO_DEPLOY_PRIVATE_KEY: ${{ secrets.DEPLOY_KEY }}
      run: |
        mkdir -p ~/.ssh/
        echo "$HEXO_DEPLOY_PRIVATE_KEY" > ~/.ssh/id_rsa 
        chmod 600 ~/.ssh/id_rsa
        ssh-keyscan github.com >> ~/.ssh/known_hosts
        
    - name: Setup Git Infomation
      run: | 
        git config --global user.name "zengruizhao"
        git config --global user.email "[email protected]"
        git config --global core.quotepath false
    - name: Deploy Hexo 
      run: |
        rm -rf .deploy_git
        hexo clean
        hexo generate 
        hexo deploy

然后它会自动执行。当我们每次push源码的时候,Github Actions会自动执行上面的操作。比如我git commit -m 'add 测试'如下:

Github Actions全自动博客部署_第5张图片

一切都是那么优雅–Elegant

参考

  • 如何用 GitHub Actions 写出高质量的 Python代码?
  • Github Actions 通过 SSH 自动部署 Hexo
  • 【CICD】github新功能actions全方位讲解!!

你可能感兴趣的:(开发)