deploy.yml
新建工作流文件 .github/workflows/deploy.yml
,这里我以 Hexo 的自动化部署为例。
1 | name: Hexo Deploy |
工作流解释
这个 GitHub Actions 工作流文件 deploy.yml
主要用于在代码推送到 GitHub 仓库的 main
分支后,自动化部署 Hexo 博客,并将更新同步到服务器。以下是各个步骤的详细解释:
-
工作流名称和触发条件:
name: Hexo Deploy
:定义工作流的名称。on: push: branches: - main
:当代码推送到main
分支时触发工作流。
-
环境变量:
env: TZ: Asia/Shanghai
:设置时区为上海时间。
-
工作任务:
jobs: build: runs-on: ubuntu-latest
:定义一个名为build
的任务,运行在最新的 Ubuntu 环境上。
-
步骤:
-
steps:
:定义一系列步骤来执行任务。 -
Checkout 源代码:
name: Checkout source
:使用actions/checkout@v2
操作从main
分支检出代码。
-
设置 Node.js:
name: Setup Node.js
:使用actions/setup-node@v1
操作设置 Node.js 环境,版本为20
。
-
设置 Hexo:
name: Setup Hexo
:配置 Hexo 环境。env: ACTION_DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
:使用 GitHub Secrets 中的DEPLOY_KEY
。run:
:执行一系列命令来配置 SSH 密钥、全局 Git 配置和安装 Hexo 及其依赖。- 注意这一步要在脚本中修改自己的邮箱和用户名。
-
部署 Hexo:
name: Deploy
:运行 Hexo 部署命令。run:
:执行hexo clean
、hexo generate
和hexo deploy
命令来清理、生成和部署 Hexo 博客。
-
连接服务器并克隆(关键步骤):
name: ECS clone
:使用cross-the-world/ssh-pipeline@master
操作连接服务器并克隆代码。env: WELCOME: "ssh pipeline"
:设置环境变量。with:
:提供服务器的 IP 地址、用户名和密码等信息。script:
:执行一系列命令来连接服务器、克隆仓库、删除旧文件、移动新文件、删除.git
目录并修改权限。git clone --depth 1 -b gh-pages https://ghp.ci/https://github.com/${{ secrets.GH_USERNAME }}/${{ secrets.GH_REPO }}.git
这一行是关键,通过克隆分支gh-pages
来部署静态页面,并且只进行浅层克隆,节省了时间,其中可以根据自己的实际情况进行修改。
-
配置 Secrets
在仓库的 Settings
-> Secrets
中添加以下 Secrets:
USER_HOST
:服务器的 IP 地址USER_NAME
:服务器的登录用户名USER_PASS
:服务器的登录密码ECS_SITE
:服务器上 Hexo 博客(或其他静态文件)的目录GH_USERNAME
:GitHub 用户名GH_REPO
:GitHub 仓库名DEPLOY_KEY
:用于生成静态文件推送到 GitHub 的 SSH 密钥
特点
- 使用 SSH 密钥连接服务器,避免了每次部署时输入密码的麻烦。
- 通过 GitHub Actions 实现自动化部署,提高了效率。
- 使用
ghp.ci
代理克隆,解决了大陆地区访问 GitHub 慢的问题,并且不需要使用国内 Gitee 等平台进行中转。 - 支持多种静态页面部署,如 Hexo、VuePress 等。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 W1ndysの小屋!
评论