GitHub Pages

在GitHub的项目仓库中有一个 Actions 模块,它是一个持续集成(CI)和持续部署(CD)平台,开发者可以利用它提供的配置规则,通过编写 yaml 文件来自定义工作流程,实现代码的构建、测试、打包、发布等。

GitHub Actions的核心是工作流程(Workflow),它是由一个或多个步骤(step)组成的一系列自动化任务。工作流程可以根据事件触发,例如在代码提交、拉取请求、新增tag时触发,也可以手动触发。

创建GitHub仓库

创建GitHub仓库 https://github.com/new
image.png

  • master 分支存储项目源代码
  • gh-pages 分支存储打包后的静态文件

:::info gh-pages 分支,是 GitHub Pages 服务的固定分支,必须是这个分支名才可以通过 HTTP 的方式访问到这个分支的静态文件资源。 :::

将 git 忽略文件中的 dist 注释或删除,否则dist目录无法上传至远程仓库。
image.png

:::info

  1. 如果你要部署在 https://.github.io/ 上,你可以省略 base 使其默认为 ‘/‘。
  2. 如果你要部署在 https://.github.io// 上,例如你的仓库地址为 https://github.com//,那么请设置 base 为 ‘//‘。 :::

我这里是第二种,所以需要将 base 设置为仓库名
image.png

然后执行 pnpm build打包,打包好后使用 pnpm preview 预览一下,没问题就提交代码到 master 分支

然后使用git subtree push --prefix dist origin gh-pages将dist目录推送到远程的 gh-pages 分支,若远程没有 gh-pagse 分支则会新建 gh-pagse分支然后再推送。

然后再设置里可以看到站点地址 https://[用户名].github.io/[仓库名]/
image.png
点击或者直接输入地址查看
image.png

GitHub Actions

上面的方式需要我们每次手动打包,然后将打包后dist目录提交到gh-pages分支。
通过配置 GitHub Actions 可以在每次提交代码到 master 分支时自动更新 gh-pages 。

创建GitHub Token

创建一个有 repo 和 workflow 权限的 GitHub Token

点击链接登录后,在打开的新面板中,填写相关信息:

Note,你的token名
Expiration,过期时间,默认是 No expiration 永不过期
Select scopes,选择你这个token可以使用哪些功能,按需选择即可,默认全选。
image.png

创建完成后,你会看到成功的提示并附带着token,将这个token复制下来。

:::info 注意:新生成的 Token 只会显示一次,保存起来,后面要用到。如有遗失,可以重新生成 :::

添加 Actions secret

将上述创建的 Token 添加到 GitHub 仓库中的 Secrets 里,并将这个新增的 secret 命名为 VITE_DEPLOY_TEST
打开项目 -> Settings -> Secrets -> Actions -> New repository secret
image.png

填写Name,后面在yml配置文件里通过secrets变量访问时的属性名。
填写Secret,在上一步拿到的token。 :::info 注意 :输入的 Nmae VITE_DEPLOY_TEST 在后续 Actions 的 yml 配置文件中要用到,两个地方保持一致! :::

image.png

创建完成
image.png

修改 package.json

打开 package.json 文件,新增 homepage 字段,表示该应用发布后的根目录

  1. "homepage":"https://[username].github.io/vite-vue-template-page",

创建 Actions 配置文件

(1)在项目根目录下创建 .github 目录。
(2)在 .github 目录下创建 workflows 目录。
(3)在 workflows 目录下创建 deploy.yml 文件。

  1. name: VITE DEPLOY TEST
  2. on:
  3. push:
  4. # master 分支有 push 时触发
  5. branches: [master]
  6. jobs:
  7. deploy:
  8. # 指定虚拟机环境
  9. runs-on: ubuntu-latest
  10. strategy:
  11. matrix:
  12. node-version: [14.x, 16.x]
  13. steps:
  14. - name: Checkout
  15. # 拉取 GitHub 仓库代码
  16. uses: actions/checkout@v3
  17. - name: Use Node.js ${{ matrix.node-version }}
  18. # 设定 Node.js 环境
  19. uses: actions/setup-node@v3
  20. with:
  21. node-version: ${{ matrix.node-version }}
  22. - name: Install
  23. # 安装依赖
  24. run: npm install
  25. - name: Build
  26. # 打包
  27. run: npm run build
  28. - name: Deploy
  29. uses: JamesIves/github-pages-deploy-action@v4
  30. with:
  31. # 部署打包目录
  32. folder: dist
  33. # 密钥名
  34. token: ${{ secrets.VITE_DEPLOY_TEST }}
  35. # 分支
  36. branch: gh-pages

token 这里改成前面设置的 Actions secret Name
image.png
App.vue 随便修改点内容后提交到 master
image.png
可以看到提交后自动 deploy 更新了
image.png

image.png
在 actions 下可以看到 workflow
image.png

参考

GitHub Actions