偷懒是人类的第一生产力
介绍
Github Actions 可以很方便实现 CI/CD 工作流,来帮我们完成一些工作,比如实现自动化测试、打包、部署等操作。本文将介绍利用 Github Actions 实现自动部署 hexo 到 Github Pages。
使用传统的方法,我们需要在本地电脑上安装 hexo 环境,写完文章执行相关命令进行部署。
有时候为了简单博文内容,但手头的设备上没有 hexo 的环境,这时候就可以借助 GitHub Actions 来实现云端部署。
创建所需仓库
- 创建
blog
仓库用来存放 Hexo 博文的 Markdown 源文件和配置文件(主题、站点等)
- 创建
username.github.io
仓库用来存放静态博客页面
生成部署密钥
1
| ssh-keygen -f github-deploy-key
|
当前目录将生成 github-deploy-key
和 github-deploy-key.pub
两个文件。
配置部署密钥
- 复制
github-deploy-key
文件内容,在 blog
仓库 Settings -> Secrets -> Add a new secret
页面上添加。
- 在
Name
输入框填写 HEXO_DEPLOY_PRI
。
- 在
Value
输入框填写 github-deploy-key
文件内容。
- 复制
github-deploy-key.pub
文件内容,在 username.github.io
仓库 Settings -> Deploy keys -> Add deploy key
页面上添加。
- 在
Title
输入框填写 HEXO_DEPLOY_PUB
。
- 在
Key
输入框填写 github-deploy-key.pub
文件内容。
- 勾选
Allow write access
选项。
编写 Github Actions
Workflow 模版
在 blog
仓库根目录下创建 .github/workflows/deploy.yml
文件。
deploy.yml
文件内容示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| name: CI
on: push: branches: - main
env: GIT_USER: username GIT_EMAIL: email@email.com THEME_REPO: theme-next/hexo-theme-next THEME_BRANCH: master DEPLOY_REPO: reponame DEPLOY_BRANCH: master
jobs: build: name: Build on node ${{ matrix.node_version }} and ${{ matrix.os }} runs-on: ubuntu-latest strategy: matrix: os: [ubuntu-latest] node_version: [12.x]
steps: - name: Checkout uses: actions/checkout@v2
- name: Checkout theme repo uses: actions/checkout@v2 with: repository: ${{ env.THEME_REPO }} ref: ${{ env.THEME_BRANCH }} path: themes/next
- name: Checkout deploy repo uses: actions/checkout@v2 with: repository: ${{ env.DEPLOY_REPO }} ref: ${{ env.DEPLOY_BRANCH }} path: .deploy_git
- name: Use Node.js ${{ matrix.node_version }} uses: actions/setup-node@v1 with: node-version: ${{ matrix.node_version }}
- name: Configuration environment env: HEXO_DEPLOY_PRI: ${{secrets.HEXO_DEPLOY_PRI}} run: | sudo timedatectl set-timezone "Asia/Shanghai" mkdir -p ~/.ssh/ echo "$HEXO_DEPLOY_PRI" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa ssh-keyscan github.com >> ~/.ssh/known_hosts git config --global user.name $GIT_USER git config --global user.email $GIT_EMAIL cp post.styl themes/next/source/css/_common/components/post/post.styl
- name: Install dependencies run: | npm install
- name: Deploy hexo run: | npm run deploy
|
配置文件
在 source
目录下新建_data
文件夹,将 next 主题的配置文件复制到此目录并重命名为next.yml
,并将配置的 override
属性修改为 true
;另外需要修改行内代码颜色,同时将themes/next/source/css/_common/components/post/post.styl
复制到项目根目录下。
另外,为了能在云端成功部署,需要把传统方法生成的 package.json
、站点配置文件_config.yml
和source
文件夹复制到blog
仓库
参考
利用 Github Actions 自动部署 Hexo 博客
GitHub Actions 自动部署 Hexo
NexT 主题数据文件