Github Actions学习

GitHubActions是一个用于自动化代码生成、测试和部署的平台。它支持在多种操作系统上运行工作流程,包括Linux、Windows和macOS。工作流由事件触发,如push或pull请求,执行一系列作业和步骤,包括安装依赖、运行测试等。此外,它还允许使用预定义或自定义的动作来简化工作流程。例如,一个简单的配置可以自动在代码提交后执行单元测试并打包发布。
摘要由CSDN通过智能技术生成

官方文档入口

为什么要使用Github Actions?

官话:
GitHub Actions 是一种持续集成和持续交付 (CI/CD) 平台,可用于自动执行生成、测试和部署管道。 您可以创建工作流程来构建和测试存储库的每个拉取请求,或将合并的拉取请求部署到生产环境。

比较直观的实践例子就是比如本地更新代码后要push到github上的远程仓库,那么在我本地push成功那一刻就会在github上自动执行,我们预先设定好的workflows就会自动执行,执行的内容包括但不仅限于执行单元测试(pytest)、打包发布等。

还有一个很重要的功能就是它能提供 Linux、Windows 和 macOS 虚拟机来运行工作流程,也就是说即使我本地是macOS开发的程序,通过这个平台我也模拟在Linux或Windows上我的程序是否可以跑通,还可以通过这些提供的虚拟容器打包跨平台的whl文件;但我未知的是它们是否提供arm64架构下macOS虚拟环境。

GitHub Actions 的组件

上面提到我们可以通过设置workflow,从而在push或者pull这种事件发生时被触发。
官话:
工作流包含一个或多个可按顺序或并行运行的作业。 每个作业都将在其自己的虚拟机运行器中或在容器中运行,并具有一个或多个步骤,用于运行定义的脚本或运行动作。动作是一个可重用的扩展,可简化工作流 。

workflow

workflow在我们仓库的 .github/workflows 目录中定义,仓库可以有多个workflow,每个workflow都可以执行不同的任务集。
在这里插入图片描述

Events

事件是存储库中触发工作流程运行的特定活动。比如pull,push

Jobs

job是workflow中在同一运行器上执行的一组步骤。每个步骤要么是一个将要执行的 shell 脚本,要么是一个将要运行的动作。 步骤按顺序执行,并且相互依赖。默认情况下,作业没有依赖关系,并且彼此并行运行。 当一个作业依赖于另一个作业时,它将等待从属作业完成,然后才能运行。
每个job有一个id,其实就是

jobs:
  my_first_job:
    name: My first job
  my_second_job:
    name: My second job

依赖关系定义:
使用 jobs.<job_id>.needs 定义每个job的前后定义关系
比如下面这个例子就代表job2必须在job1执行完后才执行,job3需要在job1、job2执行后才能完成。

jobs:
  job1:
  job2:
    needs: job1
  job3:
    needs: [job1, job2]
Actions

action是GitHub Actions平台的自定义应用程序,用于执行复杂但经常重复的任务。它带来的好处是减少重复工作。

Runners

Runner是在触发工作流时运行工作流的服务器,就是上面提到的虚拟环境。

官方案例解析

这是在我们git仓库目录下的 .github/workflows/learn-github-actions.yml

name: learn-github-actions
run-name: ${{ github.actor }} is learning GitHub Actions
on: [push]
jobs:
  check-bats-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v
上面比较重要的字段:
on: 触发这个workflow运行的事件,这里是push
jobs:类似一个标记,代表jobs:下面的是一系列要执行的工作
check-bats-version:定义名为check-bats-version的作业。子键将定义这个作业的属性。
runs-on: ubuntu-latest:将作业配置为在最新版本的Ubuntu Linux运行器上运行。
steps:将check-bats-version这个job中运行的所有step组合在一起。
- uses: actions/checkout@v3:uses关键字指定此步骤将运行actions/checkout操作的v3
 - uses: actions/setup-node@v3
      with:
        node-version: '14'
        此步骤使用actions/setup-node@v3操作来安装指定版本的Node.js(本例使用v14)。这将把node和npm命令放在PATH中。
    - run: npm install -g bats:run关键字告诉作业在运行程序上执行命令。
关于uses字段含义

这个字段代表使用别人预先写好的github action,将它们引入我们目前写的workflow中,github已经预先定义好了一些常用的actions,当然也可以复用自己仓库内部事先写好的action,或者是Docker Hub上发布的Docker容器镜像
参考文档:https://docs.github.com/en/actions/learn-github-actions/finding-and-customizing-actions

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GitHub Actions是GitHub的持续集成服务,它可以帮助开发者通过自动化的构建、发布和测试来验证代码,从而尽快发现集成错误。\[2\]GitHub Actions由多个操作组成,比如抓取代码、运行测试、登录远程服务器、发布到第三方服务等等,这些操作被称为actions。一个workflow是一次持续集成的运行过程,由一个或多个jobs构成,每个job又由多个steps构成,每个step可以执行一个或多个命令(action)。\[3\] GitHub Actions允许开发者把每个操作写成独立的脚本文件,存放到代码仓库,使得其他开发者可以引用该脚本,这个脚本就是一个Action。开发者可以从GitHub社区共享的官方市场查找需要的Action,也可以自己编写Action并开源供其他人使用。Action可以通过指定commit、标签或分支来引用不同的版本。\[1\] 在使用GitHub Actions之前,需要了解持续集成/持续交付的概念、Git相关知识、Linux/Windows/macOS脚本相关知识以及Yaml基础语法。Yaml是一种用于配置文件的简洁易读的数据序列化格式。\[2\] GitHub Actions提供了Linux、Windows和macOS虚拟机来运行工作流程,也可以在自己的数据中心或云基础架构中托管自己的自托管运行器。通过在代码仓库中的.github/workflows目录下创建.yml文件,可以配置自动触发的工作流程。\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [GitHubActions详解](https://blog.csdn.net/unreliable_narrator/article/details/124468384)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Github Actions](https://blog.csdn.net/SeriousLose/article/details/121476152)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值