Github Actions的认识与使用

版权申明:本文为原创文章,转载请注明原文出处

原文链接:http://blog.pp6f.com/2022/02/16/Github/Github_Actions/

这里介绍Github官方提供的的一个功能Actions。它以脚本的形式,在各种系统环境包括但不限于Linux,MacOS,Windows等等为基础,运行代码 程序。


索引

前言

Github Actions使用限制

  • 在使用Github Actions前 你必须知道 它的一些限制 和 免费额度。官方计费文档
  • 每个月有2000分钟和500MB粗存的免费额度
  • Linux分钟乘数是1 macOS是10 Windows是2 意思是 如果使用1分钟的Windows要扣2分钟额度
  • 每个Workflow中的job最多可以执行6个小时
  • 每个Workflow中的job最多可以排队24小时
  • 每个Workflow最多可以执行72小时
  • 所有Action中 一个小时最多可以调用1000API请求
  • 每个仓库只能同时支持20workflow并行
  • 并发工作数:Linux 20,macOS 5,(专业版可以提高到Linux 180,macOS 50)

Github Action基础介绍

基础概念

  • workflow 工作流。 Action会在仓库的.github/workflows目录下后缀为.yml格式的文件作为执行脚本。
  • job 构建任务。 每个workflow由一个或多个job组成,可以并发执行job
  • step 步骤。 每个job由一个或多个step组成 按顺序依次执行
  • action 行动。 每个step由一个或多个action组成 按顺序依次执行
  • 一句话就是:每个Workflow有一个或多个job,每个job有一个或多个step,每个step有一个或多个action

术语/名词/作用

  • 只有部分 随时增加 修改

  • on 触发的条件 官方文档 事件文档 官方

      name: GitHub Actions Test
      on:
          push:
              branches:
                  - main
    
  • runs-on 运行的环境 和 运行版本 例如:ubuntu-letest 官方文档

      jobs:
          job1:
              runs-on: ubuntu-latest
    
  • name 显示在GithubAction页面的步骤名字

      jobs:
          my_first_job:
              name: My first job
          my_second_job:
              name: My second job
    
  • uses 要执行的action Github提供一个Action市场 更多参考官方文档

      jobs:
          my_first_job:
              steps:
                - name: Check out repository
                  uses: actions/checkout@v2       #检出仓库的代码到workflow工作区
    
  • run 执行的命令 run: | 表示后面有多条命令 参考官方文档

      jobs:
          job1:
              steps:
                - name: Display the path
                  run: npm install
          job2:
              steps:
                - name: Display the path
                  run: |
                      npm ci
                      npm run build
                  
    
  • needs 需要等待完成的job。可以是一个job的名字也可以是数组 参考官方文档

      jobs:
          job1:
          job2:
              needs: job1
          job3:
              needs: [job1, job2]
      # 在此示例中,job1 必须在 job2 开始之前成功完成,而 job3 要等待 job1 和 job2 完成。
    

创建一个Action

了解了以上知识,我们开始创建一个workflow

  • 进入你的仓库 点击 Actions
    这里可以选择你需要的环境 我们选择自定义 点击set up a workflow yourself
  • 实际上就是在.github/workflows目录下创建一个后缀为.yml格式的文件
  • 文件名可以自定义 但后缀必须是.yml
  • 在编辑框内输入以下代码
    *.yml
    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
    # name 自定义一个workflow的名字
    name: workflow
    # on 定义在什么事件触发后运行这个workflow
    on:
    # push 当main分支有push推送事件时 触发这个workflow
    push:
    branches: [ main ]

    # workflow_dispatch 定义了可以手动运行这个workflow
    workflow_dispatch:

    # jobs 包含所有要运行的job 可以依次运行 也可以 并发
    jobs:
    # 定义一个job 名字叫build
    build:
    # 这里声明这个workflow运行在什么系统环境 这里定义的是ubuntu后面的-latest表示最新版本
    runs-on: ubuntu-latest

    # steps 要执行的步骤
    steps:
    # uses 定义具体要做的action
    # actions/checkout@v2 执行actions(官方帐号)下checkout仓库的v2分支。它的作用是检出本仓库到workflow中
    - uses: actions/checkout@v2

    # 运行一个命令 和在系统命令行运行的命令一样
    - name: Run a one-line script
    run: echo Hello, world!

    # 运行多行命令
    - name: Run a multi-line script
    run: |
    echo Add other actions to build,
    echo test, and deploy your project.

  • 在编辑页面可以看到 右边Marketplace提供了一个Action市场 Documentation提供了官方文档
  • 编辑好后 点击右上角的Start commit 在弹出的对话框点击Commit new file
  • 创建完成后 在点击页面的Actions 会看到所有workflows中刚刚创建的workflow
  • 点击进入刚刚创建的workflow 进入后点击左边的build 这里可以看到详细的执行步骤
  • 好了 现在当这个仓库只要有push推送 就会触发这个workflow自动运行

问题/注意事项

版本

  • 在执行一些脚本时 要特别注意运行环境版本 因为这会导致workflow不能正常工作 这是比较容易忽略的地方

为README.md自述文件添加workflow状态徽章


结束

Github Actions这个功能给我们带来的可创造性非常强大。
这里只是简单介绍了一些功能,有什么问题可以在我的博客留言。


作者

Bruce

发布于

2022-02-16

更新于

2023-03-10

许可协议

评论