github_action

workflows中的yml是自动构建工具,和makefile mill等工具类似,只不过worflows是github中action组件自动执行的,这一部分用于创建分支gh-pages,单独存储mdbook build构建出来的那些html还有一些依赖文件,以保持其他分支的洁净,并设定自动更新文档的条件,具体示例如下,基本可以直接使用

name: deploy-github-pages  # 定义workflow或步骤名称
on:                        # on:触发条件
  push:
    branches:
      - main               # 当main分支有新的push,触发该github action
jobs:
  deploy-github-pages:     # 使用最新的Ubuntu作为执行环境
    runs-on: ubuntu-latest # 运行环境
    permissions:           # 设置权限,使得action可以向gh-pages分支写入
      contents: write
    steps:                 # 以下都是各个任务
      - name: Checkout repository         # 步骤名称
        uses: actions/checkout@v4  # uses-使用github action中写好的脚本,这里是在拉取我的代码

      - name: Setup mdBook
        if: ${{ github.ref == 'refs/heads/main' }}
        uses: peaceiris/actions-mdbook@v1.2.0       # 主分支上安装mdbook
        with:
          mdbook-version: '0.4.5'

      - name: Build site
        if: ${{ github.ref == 'refs/heads/main' }}
        working-directory: .
        run: mdbook build                           # 主分支上运行mdbook build指令

      - name: Move HTML files to root 
        run: |                                      # run: | 运行多行shell脚本
          mv ./book/html/* ./book/
          rm -r ./book/html

      - name: Deploy to GitHub Pages
        uses: peaceiris/actions-gh-pages@v3  # 使用该actions用于自动部署github pages
        if: ${{ github.ref == 'refs/heads/main' }}
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./book               # 指令主分支的./book内容作为gh-pages分支的内容
          force_orphan: true                   # 删除gh-pages的历史记录  ,只保留最新版本

本质:workflows中的操作就是github帮我们在某种触发下,自动执行某些指令。比如上面就是push到主分支时,执行后面的操作,后面的操作就是github把我们的主分支的代码pull下来,然后下载mdbook执行mdbook build,然后创建gh-pages分支,将生成的/book推送到我的仓库的gh-pages分支上。