Deploy Pages #1159
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Deploy Pages | |
on: | |
# 推送时执行 | |
push: | |
branches: [main, master] | |
# pr 时执行 | |
pull_request: | |
branches: [main, master] | |
# 定时执行,字段含义:分钟 小时 日 月 星期 | |
# 注意: | |
# 1.采用的是 UTC 时间 | |
# 即,你配置的 0 0 * * *(UTC)00:00 实际上是(GMT+0800)08:00 | |
# 只有你配置为 00 16 * * *(UTC)16:00 实际上才是 GMT+0800)00:00 | |
# 2.官方声明:schedule 事件在 GitHub Actions 工作流运行期间负载过高时可能会延迟。 高负载时间包括每小时的开始时间。 为了降低延迟的可能性,建议将您的工作流程安排在不同时间运行。 | |
# 例如:笔者之前设定的定时规则为 0 0 * * *(UTC),实际(GMT+0800)执行时间通常在 9:10 ~ 10:00,甚至会出现在 10:00 之后执行的情况 | |
# 3.建议不只是定时执行的时候注意时间,自己 push 时也注意时间,早点休息 | |
# 例如:笔者多次亲身经历,凌晨时间 pages build and deployment 任务大概能持续 8 分钟的 Current status: deployment_queued 状态, | |
# 即使能进入 Current status: deployment_in_progress 和 Current status: syncing_files 状态,如果文件多点,没一会儿就 Error: Timeout reached, aborting! 超时失败了 | |
schedule: | |
- cron: 30 17 * * * | |
# 可手动执行 | |
workflow_dispatch: | |
jobs: | |
# 任务1: 部署 GitHub Pages | |
deploy-github-pages: | |
runs-on: ubuntu-latest | |
steps: | |
# 1、检出源码 | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
# 默认只拉取分支最近一次的 commit,可能会导致一些文章的 GitInfo 变量无法获取,设为 0 代表拉取所有分支所有提交 | |
fetch-depth: 0 | |
# 2、配置 Git | |
# 主要是 quotePath,默认情况下,文件名包含中文时,git 会使用引号把文件名括起来,这会导致 action 中无法读取 :GitInfo 变量 | |
- name: Git Configuration | |
run: | | |
git config --global core.quotePath false | |
git config --global core.autocrlf false | |
git config --global core.safecrlf true | |
git config --global core.ignorecase false | |
# 3、安装 PNPM | |
- name: Setup PNPM | |
uses: pnpm/action-setup@v2 | |
with: | |
version: latest | |
# 4、安装 Node 环境 | |
- name: Setup Node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
registry-url: https://registry.npmjs.org | |
cache: pnpm | |
# 5、安装依赖 | |
- name: Install dependencies | |
run: pnpm i --frozen-lockfile | |
# 6、打包 | |
- name: Build | |
run: pnpm build | |
# 7、部署 GitHub Pages | |
- name: Deploy GitHub Pages | |
uses: JamesIves/github-pages-deploy-action@v4 | |
with: | |
BRANCH: pages | |
FOLDER: docs/.vitepress/dist | |
# 任务2: 部署 Gitee Pages | |
deploy-gitee-pages: | |
runs-on: ubuntu-latest | |
steps: | |
# 1、同步内容到 Gitee | |
- name: Sync to Gitee | |
uses: wearerequired/git-mirror-action@master #使用action库 | |
env: | |
SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }} #Gitee私钥 | |
with: | |
source-repo: git@github.com:Charles7c/charles7c.github.io.git #GitHub 源仓库地址 | |
destination-repo: git@gitee.com:Charles7c/charles7c.git #Gitee 目标仓库地址 | |
# 2、部署 Gitee Pages | |
- name: Deploy Gitee Pages | |
# 手动执行时只同步内容, 不进行部署 | |
if: github.event_name != 'workflow_dispatch' | |
uses: yanglbme/gitee-pages-action@main | |
with: | |
gitee-username: ${{ secrets.GITEE_USERNAME }} #Gitee 用户名 | |
gitee-password: ${{ secrets.GITEE_PASSWORD }} #Gitee 密码 | |
gitee-repo: Charles7c/charles7c #Gitee 仓库 | |
branch: pages #要部署的分支,默认是 master,若是其他分支,则需要指定(指定的分支必须存在) |