创建博客源码仓库

我们需要创建一个用来存放 Hexo 博客源码的私有仓库

创建完成后,需要把博客的源码 push 到这里。

首先获取远程仓库地址,此处 SSH 和 HTTPS 均可,可以根据需要进行选择。

{cat_tips_warning color=""}

为了避免一些不必要的麻烦,这里使用私有仓库

{/cat_tips_warning}

Token获取

访问 Github->头像(右上角)->Settings->Developer Settings->Personal access tokens->generate new token,创建的 Token 名称随意,但必须勾选 repo 项 和 workflows 项。

{cat_tips_warning color=""}

token 只会显示这一次,之后将无法查看,所以务必保证你已经记录下了 Token。之后如果忘记了就只能重新生成重新配置了。

{/cat_tips_warning}

配置 Github Action

在博客根目录的 .github/workflows 文件夹(如果没有文件夹,则自行创建)下,创建 autodeploy.yml 文件,并把下面代码复制进去,这里我是用自己的配置,各位可以根据需要进行调整配置

name: 自动部署

on:
  push:
    branches:
      - master #可以更换成自己的分支

  release:
    types:
      - published

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: 检查分支
        uses: actions/checkout@v2
        with:
          ref: master

      - name: 安装 Node
        uses: actions/setup-node@v1
        with:
          node-version: "16.x"

      - name: 安装 Hexo
        run: |
          export TZ='Asia/Shanghai'
          npm install hexo-cli -g

      - name: 缓存 Hexo
        id: cache-npm
        uses: actions/cache@v3
        env:
          cache-name: cache-node-modules
        with:
          path: node_modules
          key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-build-${{ env.cache-name }}-
            ${{ runner.os }}-build-
            ${{ runner.os }}-

      - name: 安装依赖 
        if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }}
        run: |
          npm install gulp-cli -g
          npm install --save #下面的依赖可以根据需要去除,这个用于gulp压缩使用
          npm install gulp-htmlclean --save-dev
          npm install gulp-html-minifier-terser --save-dev
          npm install gulp-clean-css --save-dev
          npm install gulp-terser --save-dev
          npm install gulp-fontmin --save-dev

      - name: 生成静态文件
        run: |
          hexo clean
          hexo bangumi -u #获取bilibili追番
          hexo generate
          gulp

      - name: 部署到云服务器
        uses: Burnett01/rsync-deployments@6.0.0
        with:
          switches: -avzh
          path: public/
          remote_path: #填写服务器网站根目录
          remote_host: #服务器地址或域名
          remote_port: #ssh端口号
          remote_user: #登录用户
          remote_key: ${{ secrets.SERVER_KEY }}

      - name: 部署到Github
        uses: JamesIves/github-pages-deploy-action@v4
        with:
          token: #前面申请的token填入这里
          repository-name: gongjuecloak/gongjuecloak.github.io #更换成自己的静态文件仓库
          branch: master
          folder: public
          commit-message: "${{ github.event.head_commit.message }} Updated By Github Actions"

secrets.SERVER_KEY 需要在博客源码仓库的 Setting>>Secret>>Actions 新建环境变量,命名为SERVER_KEY,填写的内容为服务器的生成秘钥的私钥

设置仓库和分支

  1. 在博客根目录运行以下指令
git init #初始化
git remote add origin git@github.com:gongjuecloak/hexo.git #git@github.com:[github用户名]/[博客源码仓库名].git 
git checkout -b master # 切换到master分支,
#2020年10月后github新建仓库默认分支改为main,注意更改
# 如果不是,后面的所有设置的分支记得保持一致
  1. 添加屏蔽项

因为能够使用指令进行安装的内容不包括在需要提交的源码内,所有我们需要将这些内容添加到屏蔽项,表示不上传到 github 上。这样可以显著减少需要提交的文件量和加快提交速度。打开博客根目录下的 .gitignore ,写入以下内容:

.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/
.deploy_git*/
.idea
themes/anzhiyu/.git

如果不是anzhiyu主题,记得替换最后一行内容为你自己当前使用的主题。

  1. 之后再运行 git 提交指令,将博客源码提交到 github 上。
git add .
git commit -m "github action update"
git push origin master
#2020年10月后github新建仓库默认分支改为main,注意更改

查看部署情况

此时,打开 GIthub 存放源码的私有仓库,找到 action。

进入刚刚的 Commit 记录找到相应的任务,点击 Deploy 查看部署情况

全部打钩即完成自动部署。

参考文档

使用 Github Action 自动部署

Git + GitHub Action + SSH 将静态网站自动部署到云服务器上

最后修改:2024 年 09 月 04 日
如果觉得我的文章对你有用,请随意赞赏