使用 GitHub Actions 自动发布一个 Vue 应用到 GitHub Pages

准备工作

  1. 本地 Vue CLI 创建一个 Vue 项目(vue-github-pages-demo)
  2. Github 创建远程仓库
  3. 建立连接,提交代码到 Github

个人设置

进入 Github 个人设置 settings,生成 Personal access tokens

在这里插入图片描述

在这里插入图片描述

Confirm password to continue(输入密码)。

设置 Note 标识(一般使用大写),这个标识不要忘记,Select scopes 不用勾选,直接创建 Genterate token

记录生成的 token:

在这里插入图片描述

项目设置

进入项目的 settings,设置 Secrets:
(secrets 稍后会在项目目录下的工作流配置文件.github/workflows/***.yml中使用)

在这里插入图片描述

将 token 添加进去(记录一下 Name):

在这里插入图片描述

本地项目

Github Actions 配置文件

在本地项目创建 Github Actions 的配置文件:workflow 工作流文件。

  • Github 识别到配置文件后,会自动执行配置中的工作流。
    • 配置文件中可以通过 secrets 访问GitHub项目配置中的 Secrets 信息
  • 配置文件存放在代码才能够库的 .github/workflows 目录。
  • workflow 文件采用 YAML 格式,文件名可以任意取,但是后缀统一为 .yml

Github Actions 官方文档

阮一峰 GitHub Actions 入门教程

参考别人写好的配置:Github 官方市场

这里参考 Deploy to GitHub Pages(注意当前是master分支,不是市场中提供的 latest 版本)。

创建 .github/workflows/ci.yml 文件,复制 example 示例代码,并进行调整。

# 工作流名称,不设置的话默认取配置文件名
name: Build and Deploy
# 指定触发 workflow 的条件
# 指定触发事件时,可以限定分支或标签
# 当前是 只有 master分支上触发 push 事件时才执行工作流任务
on: 
  push:
    branches:
      - master
# 工作流执行的一个或多个任务
jobs:
  # 任务名称
  build-and-deploy:
    # 任务运行的容器类型(虚拟机环境)
    runs-on: ubuntu-latest
    # 任务执行的步骤
    steps:
      # 步骤名称
      - name: Checkout 🛎️
        # 使用的操作 actions,可以使用公共仓库,本地仓库,别人的仓库的action
        # 拉取代码
        uses: actions/checkout@master

      - name: Build and Deploy
        # 构建发布 Github pages
        uses: JamesIves/github-pages-deploy-action@releases/v2
        # 该步骤所需的环境变量
        env:
          ACCESS_TOKEN: ${{ secrets.MY_TOKEN }}
          # 在部署前要checkout的基本分支,默认是master
          BASE_BRANCH: master # The branch the action should deploy from.
          # 指定部署的分支,默认是 gh-pages 分支
          BRANCH: gh-pages # The branch the action should deploy to.
          # 存储库中要部署的文件夹。
          # 该步骤会将项目中 FOLDER 指定文件夹下的文件推送到 BRANCH 分支,作为Github Pages 部署的内容。
          # Vue CLI默认打包到 dist 目录
          FOLDER: dist # The folder the action should deploy.
          # 在向 BRANCH 分支推送代码前,可以指定构建脚本
          BUILD_SCRIPT: npm install && npm run build # The build script the action should run prior to deploying.

package.json 配置 homepage

homepage 是该应用发布后的根目录:当 Github Pages 配置好后,用于访问的地址:

"homepage": "https://[用户名].github.io/[仓库名称]",

使用二级目录,并且二级目录为仓库名称的原因:

  • 最后需要设置项目Settings中的GitHub Pages 的Source。
  • 保存后它会生成访问地址,且地址格式就是上面 homepage中的样子,homepage只是遵循 GitHub Pages 的规则。

二级目录访问问题

  • 当前配置,会在 master 分支有文件 push 推送时触发工作流任务
  • 任务会在 ubuntu-latest 环境中执行
  • 先将 BASE_BRANCH(master) 分支下的代码 checkout
  • 然后运行构建脚本 BUILD_SCRIPT (npm install && npm run build
  • 然后将 FOLDER(dist)目录下的文件,全部 push 推送到 BRANCH(gh-pages)分支
  • 最后在项目 Settings 中配置 Github Pages 的 Source 后,通过生成的地址访问。

在这里插入图片描述

但是访问地址是一个二级路径(/仓库名称)。

而打包后的文件 dist/index.html 中引用资源的路径是在根目录,此时会访问不到。

例如:

<link href=/css/app.47edb1b2.css rel=preload as=style>

解决办法:配置 vue ,指定打包后的资源访问路径

// vue.config.js
module.exports = {
  outputDir: 'dist',
  publicPath: process.env.NODE_ENV === 'production' ? '/仓库名称/' : '/'
}

打包后结果:

<link href=/仓库名称/css/app.47edb1b2.css rel=preload as=style>

提交代码 & 配置 GitHub Pages

提交代码后,GitHub 只要发现.github/workflows目录里面有.yml文件,就会自动运行该文件。

查看 Actions,及进度:

在这里插入图片描述

在这里插入图片描述

部署完成:

在这里插入图片描述

Github 会自动创建 gh-pages 分支(BRANCH指定的)。

在项目 Settings 中配置 GitHub Pages,指定创建的 gh-pages 分支。

在这里插入图片描述

保存后,会显示要访问的地址:

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在GitHub项目中进行打包的步骤如下: 1. 首先,完成代码的提交和推送到GitHub仓库。使用以下命令将代码提交到仓库: ``` git add . git commit -m "feat: 第一次发布部署" git push ``` 注意,这只是提交了代码的记录,并不会触发自动化构建部署。 2. 接下来,我们需要为代码打上一个版本标签。使用以下命令进行版本标记: ``` git tag v0.1.0 git push origin v0.1.0 ``` 这将把本地标签推送到远程仓库,并触发自动构建部署。 3. 在项目中创建一个名为`vue.config.js`的文件,并添加以下代码: ```javascript module.exports = { assetsDir: 'static', parallel: false, publicPath: './', devServer: { port: 5000, open: true, }, }; ``` 这个配置文件可以用来自定义Vue项目的一些配置,比如静态资源目录、并行构建等。 4. 最后,我们需要生成一个GitHub Actions Token。可以通过以下链接生成Token:\[https://github.com/settings/tokens\](https://github.com/settings/tokens)。在生成Token时,需要勾选`repo`权限,并保存生成的Token(请注意,该Token只显示一次,如果忘记了就需要重新生成)。 完成以上步骤后,GitHub Actions自动进行打包部署到服务器。 #### 引用[.reference_title] - *1* *3* [利用GitHub Actions自动化打包部署服务器](https://blog.csdn.net/qq_35374262/article/details/108127204)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [项目打包部署到githubGitHub Pages(静态网页)](https://blog.csdn.net/zuo_kaizheng/article/details/121659587)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值