最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 用GitHub Action + VuePress自动化部署自己的文档网站

    正文概述 掘金(Chenjunyi)   2021-03-10   977

    前言

    本文教你如何使用GitHub Action + vuepress自动化部署在GitHub Pages。最终的代码在我的GitHub可以看,演示可以点这里。

    VuePress

    VuePress 是一个以 Markdown 为中心的静态网站生成器。在本文的示例里使用的是vue3版本的vuepress-next。VuePress还能在Markdown里使用Vue语法,并且每个页面都会预渲染生成静态的HTML,也就是说加载性能好还有非常好的SEO支持,非常适合用来写文档和博客。

    项目搭建

    1.创建项目

    # 创建并进入一个目录
    mkdir vuepress-starter
    cd vuepress-starter
    
    # 初始化项目
    git init
    yarn init
    
    # 将 VuePress 安装为本地依赖
    yarn add -D vuepress@next
    

    2.添加script命令

    {
      "scripts": {
        "docs:dev": "vuepress dev docs",
        "docs:build": "vuepress build docs"
      }
    }
    
    

    3.创建第一篇文章

    mkdir docs
    echo '# Hello VuePress' > docs/README.md
    

    4.本地启动

    yarn docs:dev
    

    然后就可以打开localhost:8080看到Hello Vuepress的文章了,并且是支持热更新,因为vuepress就是用webpack-dev-server驱动的。VuePress还有很多扩展的配置,在docs目录下加新建.vuepress/config.js,在这里可以配置标题、主题、语言、导航栏等等,在这里不展开描述。 最后部署的时候用yarn docs:build命令就行,会在docs/.vuepress生成dist目录,这个目录后面配置workflow会用到。

    GitHub-Actions

    actions顾名思义就是一堆动作,是一个持续集成服务,持续集成包含了拉代码、运行测试、编译代码、登录远程服务器,发布到第三方服务等等的操作,GitHub将这些操作称为actions。

    不同项目的很多操作可以是一样的,比如拉取分支代码、缓存依赖等,每个也就是一个action脚本是可以共用的,所以GitHub允许开发者把每个操作写成独立的脚本文件,存放到代码仓库,使得其他开发者可以引用。GitHub做了一个官方市场,可以让开发者提交action供其他人使用,GitHub 官方的 actions 则都放在 github.com/actions 里面。接下来介绍写一个VuePress的action。

    建立仓库

    首先在github上创建仓库,如果建立的仓库名称是username.github.io,则最后访问的地址username.github.io/。 如果不是这个名称,则最后访问的地址是username.github.io/repo/ ,repo就是仓库名字,此时还需要先修改.vuepress/config.js,该文件导出一个对象,增加base的配置项,值为“/repo/”。

    添加.github相关配置文件

    在项目的根目录下新建.github/workflows目录,workflow就是GitHub Actions 的配置文件。随便新建.yml文件就是一个flow,github会自动运行workflows目录下所有的yml文件。介绍下workflow最重要的几个配置和概念。

    1. name

    name字段是 workflow 的名称。如果省略该字段,默认为当前 workflow 的文件名

    1. on

    on字段指定触发 workflow 的条件,通常是某些事件。在本文实例里用的是push,指的就是当git push事件发生时触发该workflow。

    1. jobs

    jobs是workflow最重要的部分,表示workflow要执行的任务,可以是一个或者多个。

    接下里开始就是本文示例的部署内容。

    我们希望的流程是,本地改完代码,上传到github后能自动打包部署到gh-pages分支。先配置触发条件on:

    on: # 触发条件
      # 每当 push 到 master 分支时触发部署
      push:
        branches: [master]
      # 是否手动触发部署
      workflow_dispatch:
    

    接下来配置重头戏jobs:

    jobs:
      docs:
        runs-on: ubuntu-latest # 指定运行所需要的虚拟机环境(必填)
    
        steps:
          - uses: actions/checkout@v2
            with:
              # “最近更新时间” 等 git 日志相关信息,需要拉取全部提交记录
              fetch-depth: 0
    
          - name: Setup Node.js
            uses: actions/setup-node@v1
            with:
              # 选择要使用的 node 版本
              node-version: "14"
    
          # 缓存 node_modules
          - name: Cache dependencies
            uses: actions/cache@v2
            id: yarn-cache
            with:
              path: |
                **/node_modules
              key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
              restore-keys: |
                ${{ runner.os }}-yarn-
    
          # 如果缓存没有命中,安装依赖
          - name: Install dependencies
            if: steps.yarn-cache.outputs.cache-hit != 'true'
            run: yarn --frozen-lockfile
    
          # 运行构建脚本
          - name: Build VuePress site
            run: yarn docs:build
    
          # 查看 workflow 的文档来获取更多信息
          # @see https://github.com/crazy-max/ghaction-github-pages
          - name: Deploy to GitHub Pages
            uses: crazy-max/ghaction-github-pages@v2
            # 环境变量
            env:
              GITHUB_TOKEN: ${{ secrets.ACTION_SECRET }}
            with:
              # 部署到 gh-pages 分支
              target_branch: gh-pages
              # 部署目录为 VuePress 的默认输出目录
              build_dir: docs/.vuepress/dist
    

    首先job里配置运行这个脚本需要的虚拟机环境,这个虚拟机环境由github提供,可用的包括windows、linux、macos等环境,具体看官方文档。在此示例中其实不论哪个系统都是可以的,因为我们需要的是node环境,而node本身就是跨平台的。

    接下里设置获取源码、需要的node版本、增加缓存依赖,这里使用官方提供的actions/setup-node@v1、setup-node@v1、cache@v2。这里的@表示版本,使用别人的action时最好都加上版本,以防后面更新的action不兼容当前的脚本。这些前置条件配置好,接下来就是熟悉的yarn install、yarn build:docs,安装依赖使用--frozen-lockfile来锁定版本。最后一步就是将打包的目录更新到gh-pages分支。因为要更新github代码,所以还需要配置github-token。 用GitHub Action + VuePress自动化部署自己的文档网站

    在仓库的setting下找到secert,新建一个secert,文件名可以随便取,在workflow的环境变量里secerts指的就是这里secert,后面就是secert里文件的具体名称,在这里取为ACTION_SECERT,env配置secerts.ACTION_SECRET就行。

    用GitHub Action + VuePress自动化部署自己的文档网站

    最后指定部署的分支名称,和部署到分支的默认输出目录就行。

    尝试着推送代码,可以看到仓库的Actions开始自动运行了,并且能看到运行的日志。 用GitHub Action + VuePress自动化部署自己的文档网站

    运行完后访问 username.github.io/repo 就能看到部署后的效果了。

    源码

    gitHub: github.com/chen-junyi/…

    github pages: chen-junyi.github.io/article/

    结束语

    有什么说的不对或者有疑问的,欢迎在下面留言交流~~


    起源地下载网 » 用GitHub Action + VuePress自动化部署自己的文档网站

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元