Caution

todo…

1 github action

github action github action

以hugo 为例 正常我们的发布流程可能是这样 1. build 本地代码 生成静态文件 2. 上传到服务器 (比如scp操作) 3. 域名配置 比如nginx

github action 就是启动一个小的虚拟机,发现你push后,就做某些操作 ,比如build 和scp 的操作

# 1. 当前git仓库中 创建.github/workflows/ 目录
mkdir -p .github/workflows/
touch .github/workflows/learn-github-actions.yml
learn-github-actions.yml
name: learn-github-actions
run-name: ${{ github.actor }} is learning GitHub Actions
on: [push] # 当有push 推送时 会触发我们的job
jobs:
  check-bats-version: # 这个你你的任务的名字, 随便起, 当然我们起一个能表明任务的名字..
   # 将作业配置为在最新版本的 Ubuntu Linux 运行器上运行。 
   # 这意味着该作业将在 GitHub 托管的新虚拟机上执行
    runs-on: ubuntu-latest
    steps:
      #  uses 关键字指定此步骤将运行 actions/checkout 操作的 v3
      # 我们可以从字面上看出这是一个 git checkout  仓库的操作.
      # 将仓库 checkout到运行器(虚拟机)上
      - uses: actions/checkout@v3 #
      # checkout 代码后, 然后这里是安装 node
      - uses: actions/setup-node@v3
        with:
          node-version: '14' # 安装的版本是14
      - run: npm install -g bats # 执行命令
      - run: bats -v
  1. on: [push] 指定分支的push发生时 官方文档

    on:
       push:
          branches:
             - main
             - 'releases/**'
  2. uses: actions/checkout@v3 实际是个github仓库哦 https://github.com/actions/checkout

https://github.com/peaceiris/actions-hugo https://github.com/peaceiris/actions-gh-pages

my_repo/nav_src hugo博客源码, 然后我想要push后,自动build 生成静态文件,发布到另外一个仓库中

hugo.yml
name: Hugo Actions
on:
  push:
    branches:
      - main  # 这里的意思是当 main 分支发生 push 的时候,运行下面的 jobs
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      #   with:
      #     submodules: true  # Fetch submodule
      #     fetch-depth: 0 
      - name: Setup Hugo
        uses: peaceiris/actions-hugo@v2 # hugo官方的action, 安装hugo
        with:
          hugo-version: '0.110.0'   # 安装指定版本的hugo
      - name: Build
        run: hugo --minify  # 使用hugo生成静态网页
      - name: Deploy To another  repository  # 部署至其他仓库,也可以是其他分支
        uses: peaceiris/actions-gh-pages@v3 # hugo官方提供的自动发布github pages的action
        with:
          external_repository: my_repo/nav  # 发布到哪个repo
          personal_token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
          # hugo 生成的静态文件在 public 目录, 这里的意思是 要发布 public 文件夹里的内容
          publish_dir: ./public
          publish_branch: main  # 发布到哪个分支
          force_orphan: true
          full_commit_message: ${{ github.event.head_commit.message }}
将hugo.yml中的PERSONAL_ACCESS_TOKEN改成你设置的NAME
  1. 创建 Personal_Access_Token:

    • Note: 给token 描述
    • Expiration: No expiration
    • Select scopes: 全选

    生成后, 复制token

  2. 目标仓库 设置 Personal_Access_Token:

    打开目标仓库页面 -> 点击Settings -> Security -> Secrets and variables -> Actions,选择 New repository secret ->设置一个名字 NAME (比如 DEPLOY2NAV) -> 粘贴前面生成的 personal_access_token

  3. 将hugo.yml 里的 PERSONAL_ACCESS_TOKEN 改成DEPLOY2NAV

push 后去看 my_repo/nav_src 仓库的 Actions ,看执行的命令情况. 成功的话,会在 my_repo/nav仓库里看到静态页面.

Back to top