2. github自动部署

1/5/2023 笔记

# github自动部署

# 基本概念:GitHub Action

GitHub Actions 是一个持续集成持续交付的平台,它可以做到自动化构建、测试、部署。你可以创建工作流,构建和测试每一个 pull request 或者部署合并后的代码到生产环境。

持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。

  • (1)workflow (工作流程):持续集成一次运行的过程,就是一个 workflow。
  • (2)job (任务):一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,可以完成多个任务。
  • (3)step(步骤):每个 job 由多个 step 构成,一步步完成。
  • (4)action (动作):每个 step 可以依次执行一个或多个命令(action)。

# 步骤:

    1. 根目录下新建一个目录.github/workflows,里面新建一个yml文件,文件名称随意。下面是相关配置内容(工作流):
name: Github Action

on: # 监听pull_request
  pull_request:
   branches:
    - main

jobs: # 任务
  build: # 自定义名称
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [14.x]
    steps:  # 指定每个job的运行步骤。可以包含一个或多个步骤
      - name: Checkout  # 步骤1
        uses: actions/checkout@v1 # 作用:获取源码。 官方actions库:https://github.com/actions

      - name: Use Node.js ${{ matrix.node-version }} # 步骤2
        uses: actions/setup-node@v1 # 作用:安装nodejs
        with:
          node-version: ${{ matrix.node-version }} # 版本

      - name: Build and Deploy # 步骤3
        # 构建和部署
        run: |  # %ae 作者的电子邮件地址 【git log --pretty=format:  格式化log输出】
          echo '获取仓库基本信息'
          remote_addr=`git remote get-url --push origin`
          commit_info=`git describe --all --always --long`
          user_name='leezozz'
          user_email=`git log -1 --pretty=format:'%ae'`   
          deploy_branch=blog  

          echo ${remote_addr}
          echo ${commit_info}
          echo ${deploy_branch}

          yarn
          yarn build
          cd dist
          git config --global init.defaultBranch $deploy_branch
          git init
          echo ${user_name}
          echo ${user_email}

          git config user.name ${user_name}
          git config user.email ${user_email}
          echo '设置git用户信息完成'

          git add -A
          git commit -m "auto deploy, $commit_info"
          remote_addr=`echo $remote_addr | awk -F'://' '{print $2}'`
          remote_addr=https://${user_name}:${{secrets.BLOG_TOKEN}}@${remote_addr}
          echo ${remote_addr}
          git remote add origin ${remote_addr}
          git push origin HEAD:$deploy_branch --force # 推送到github $deploy_branch分支
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
    1. 在个人GitHub页面,依次点击Settings->Developer settings->Personal access tokens
    1. 点击Generate new token出现如下界面,在Note中输入名称,在Select scopes选择workflow

设置New personal access token

    1. 将生成的token复制出来为后续创建secret做准备,注意必须及时复制,一旦离开此页面后续就无法查看其值,只能重新创建新token
    1. 进入对应的GitHub项目下,依次点击Settings->Secrets->Actions进入添加Action secrets的界面,点击New repository secret按钮。 New repository secret页面
    1. 在出现的界面中name部分输入我们设置的值,Secret部分输入步骤4中记录的token值,然后点击Add secret按钮 需要注意的是name的值不能以GITHUB_开头,否则创建会出错 New repository secret页面
    1. 此时token值设置完毕,可以直接在yml文件中使用 secrets.BLOG_TOKEN
    1. 把打包后的文件推送新的分支,例如blog分支 blog分支
    1. 设置github网址,点击保存,会在上方生成相应网址:https://leezozz.github.io/leezozz-blog/ (opens new window)
      设置github网址
      此时,每新建一个pr请求就会自动触发actions,开始执行yml文件的命令,自动进行打包更新操作
    1. 注意
      Github flow 是 Github.com 使用的工作流程

而github flow模型保证高质量的核心措施是:在集成前通过pull request,从而触发审核(审核可以是一系列的自动化校验测试以及代码审核Code Review),在审核通过后再合并到主干,从而保证主干的稳定性。

(1)新建合并请求 等待审核 (2)自动审核通过 审核通过
(3)点击acitons,查看/等待审核通过 actions审核通过
(4)此时,点击合并请求 通过pr
(5)此时https://leezozz.github.io/leezozz-blog/ (opens new window) 已经自动更新了

最近更新时间: 2/4/2023, 10:01:08 AM
강남역 4번 출구
Plastic / Fallin` Dild