type
status
date
slug
summary
tags
category
icon
password
Sub-item
Parent item
前言
GitHub Actions 是 GitHub 推出的可用于自动化构建,测试和部署项目的平台,可以通过创建工作流来自动化,自定义和执行软件开发工作流程. GitHub Actions 的具体用法有很多,本文仅介绍如何利用它来实现对 Hexo 项目的自动化部署. ## 准备工作 - 本地已搭建好 Hexo 项目 - 创建一个 GitHub 仓库用于存储你的 Hexo 项目源码 - 创建一个 GitHub 仓库用于存储生成的静态页面文件 (如未主动创建,则Github会将生成的静态文件推送到项目源码的master分支)
代码
注意:
- on
push
表示在 push 至该仓库的main
分支时触发此 workflow, 你可以在paths-ignore
下添加排除的路径 (即有改动也不触发)
jobs
下的 job 可以自定义名称,但是建议不要有空格,name
则可以自定义任意名称 (可以中文)
step
下的一个分支必须且只能使用run
和uses
中的一个
uses
表示使用现有的 GitHub Actions (可以在右侧 Marketplace 搜索)
- 形如
${{ secrets.xx }}
的变量为项目的 secret, 均需要在项目中添加,具体位置如下图
文本中流程执行结果是将静态文件部署到个人服务器中去
最后部署部分脚本通过 ssh 上的 rsync 将文件部署到远程文件夹中,具体参数如下
- switches:rsync 标志,例如:
avzr --delete
- path:要上传文件地址,当前 hexo g 之后静态文件在
public/
中
- remote_path:博客在服务器中的路径
- remote_host:主机地址
- remote_port:ssh 连接端口号
- remote_user:要连接的用户
- remote_key:服务器生成的密钥
服务器获取SSH
连接密钥
登录服务器终端,输入命令
ssh-keygen
出现的提示内容一路回车,最终会在
~/.ssh
生成公钥和私钥 id_rsa.pub
、id_rsa
将公钥
id_rsa.pub
复制到 authorized_keys
复制一份私钥内容填入
secret
中需要在远程主机上安装 rsync 命令,否则会同步失败 (不同 linux 版本均可用包管理器直接安装)
总结
本文中的工作流实现了在本地提交 Hexo 项目源码的时候自动部署至 GitHub Pages 及远程服务器主机的功能. 大大节省了时间.
- 作者:Anyaer
- 链接:https://cool.anyae.top/article/0d067f4f-0419-41a2-b6d2-40da82f20c1c
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。