引言
这几天用 Hexo 框架的 Keep 主题搭建的一个静态博客。使用 hexo g
生成静态页面后,编辑配置文件中的部署相关参数,再使用 hexo d
命令即可实现网站的部署。
为实现更进一步的自动化,推荐使用 GitHub Action 自动化工作流程。即实现 Git
提交代码后,GitHub Action
能自动渲染 Markdown 文件,并将生成的静态页面自动部署到 GitHub Pages,腾讯云,阿里云等云服务器。
本教程不仅适用于 Hexo 生成的静态页面,对于其它任何静态网站页面也都适用。
准备正式开始之前,你需要掌握 GitHub Action 的基础语法:
name
: 工作流的名称。on
: 指定次工作流的触发器。push
表示只要有人将更改推送到仓库就会触发工作流运行。(点击这里了解如何指定特定分支,路径或标签)jobs
: 将工作流运行的所有作业组合到一起。build-and-deploy
: 定义的作业的名称。runs-on
: 将作业配置为在最新版本的 Ubuntu Linux 上运行。这意味着作业将在 GitHub 托管的新虚拟机上执行。有关使用其他运行器的语法示例,请参阅 GitHub 操作的工作流语法。steps
: 将作业中运行的所有步骤组合在一起。嵌套在此部分下的每个项都是一个单独的操作或 shell 脚本。uses
: 指定需要运行的action
。env
: 指定运行action
时需要用到的环境变量的值。
name: Deploying Hexo project to GitHub pages
on: [push]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@master
- name: Build and Deploy
uses: theme-keep/hexo-deploy-github-pages-action@master
env:
PERSONAL_TOKEN: ${{ secrets.HEXO_DEPLOY_GH }}
PUBLISH_REPOSITORY: XavierJiezou/xavierjiezou.github.io
BRANCH: gh-pages
PUBLISH_DIR: ./public
PERSONAL_TOKEN
: GitHub 个人访问令牌。点击这里新建,可以命名为HEXO_DEPLOY_GH
,开启repo
和workflow
权限即可,有效日期设置为永久。
- 复制上一步获取的
token
,打开你的静态网页托管的 GitHub 仓库,在Settings-Secrets
中新建一个密钥,名称填HEXO_DEPLOY_GH
,值 Value 直接 Ctrl+V粘贴token
的值。
PUBLISH_REPOSITORY
: GitHub 的公共仓库,用于展示 GitHub Pages。这里填用户名/用户名.github.io
,用户名是你 GitHub 的用户名。BRANCH
: 分支,填gh-pages
就行。PUBLISH_DIR
: 网页的静态文件存放目录。Hexo 默认是./public
name: deploying Hexo project to GitHub pages
on:
push:
branches:
- main # main 分支有 push 行为时就触发这个 action
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@master
- name: Build and Deploy
uses: theme-keep/hexo-deploy-github-pages-action@master
env:
PERSONAL_TOKEN: ${{ secrets.HEXO_KEEP_DEPLOY }}
PUBLISH_REPOSITORY: XavierJiezou/xavierjiezou.github.io
BRANCH: gh-pages
PUBLISH_DIR: ./public
- name: Deploy to Server
uses: easingthemes/ssh-deploy@main
env:
SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }}
ARGS: -rltgoDzvO --delete
SOURCE: ./public/
REMOTE_HOST: ghgxj.xyz
REMOTE_USER: root
TARGET: /www/wwwroot/ghgxj.xyz/
EXCLUDE:
- 部署到腾讯或阿里的 CentOS 服务器上需要用到
easingthemes/ssh-deploy@main
SSH_PRIVATE_KEY
: 是在服务器上生成的 SSH 私钥,可以使用命令ssh-keygen -m PEM -t rsa -b 4096
生成,并配置到仓库的Secrets
中。ARGS
: 默认即可。SOURCE
: 需要上传到服务器上的文件的目录。REMOTE_HOST
: 服务器公网 IP 或域名。REMOTE_USER
: 服务器 SSH 用户名。TARGET
: 文件上传到服务器上保存的目录。EXCLUDE
: 可指定部分文件不上传。
https://github.com/easingthemes/ssh-deploy