GitHub Action Workflow

打印 上一主题 下一主题

主题 868|帖子 868|积分 2614

GitHub Actions 是一个一连集成和一连部署 (CI/CD) 平台,它允许您自动化构建、测试和部署您的项目。以下是 GitHub Actions 中的 Workflow(工作流程)的原理:
1. 工作流程文件(Workflow File)

工作流程是由存储在堆栈中的 YAML 格式的文件界说的。这些文件通常放在 .github/workflows 目次下。您可以在一个堆栈中创建多个工作流程文件,用于执行差别的自动化任务。
2. 触发器(Triggers)

工作流程可以通过各种变乱来触发,例如:


  • push:当有代码被推送到堆栈时。
  • pull_request:当有人提交一个 pull request 时。
  • issue_comment:当有人评论一个 issue 时。
  • schedule:基于预定的时间表。
3. 任务(Jobs)

工作流程由一个或多个任务组成。每个任务是在同一运行器(runner)上执行的一组步骤。
4. 步骤(Steps)

每个任务包罗一系列的步骤。步骤可以是执行命令、使用动作(actions)或者设置情况变量。
5. 动作(Actions)

动作是工作流程中的独立命令,可以是社区贡献的或者自界说的。它们是工作流程最小的可移植单元,可以用来执行各种操作,好比设置情况、运行脚本、使用 Docker 容器等。
6. 运行器(Runners)

运行器是一个服务器或者虚拟机,它运行 GitHub Actions 的命令。您可以使用 GitHub 提供的运行器,也可以设置本身的运行器。
工作流程的执行原理:


  • 变乱触发:当堆栈中发生了一个配置了触发器的变乱时,GitHub Actions 会检查是否有干系的工作流程文件。
  • 检出代码:工作流程开始时,默认的第一步是检出堆栈的代码到运行器上。
  • 执行任务:根据工作流程文件中的界说,任务会被顺序执行或者并行执行。
  • 执行步骤:在每个任务内部,步骤会按照界说的顺序执行。如果某个步骤失败了,默认情况下,该任务会停止,而且工作流程会被标志为失败。
  • 使用动作:在步骤中,可以使用预界说的动作来完成特定的任务。
  • 访问权限:运行器在执行任务时会使用一个 GitHub 密钥(GITHUB_TOKEN),该密钥拥有对当前堆栈的读写权限。
  • 日记和关照:工作流程的执行过程会被记录,而且可以通过 GitHub UI 检察日记。别的,还可以配置关照,好比在流程乐成或失败时发送邮件。
  • 完成:所有任务完成后,工作流程要么乐成竣事,要么因为错误而失败。
    通过这种方式,GitHub Actions 提供了一种灵活、可扩展的方式来自动化软件开发过程中的各个环节。
  1. 如果您的项目是基于 Python,并且您想要在 GitHub Actions 工作流程中使用 Python 3.11,您可以按照以下示例来设置 `.github/workflows/ci.yml` 文件:
  2. ```yaml
  3. name: Python CI
  4. on:
  5.   push:
  6.     branches: [ main ]
  7.   pull_request:
  8.     branches: [ main ]
  9. jobs:
  10.   build:
  11.     runs-on: ubuntu-latest
  12.     steps:
  13.     - uses: actions/checkout@v3
  14.       with:
  15.         fetch-depth: 1
  16.     - name: Set up Python 3.11
  17.       uses: actions/setup-python@v4
  18.       with:
  19.         python-version: '3.11'
  20.     - name: Install dependencies
  21.       run: |
  22.         python -m pip install --upgrade pip
  23.         pip install -r requirements.txt
  24.     - name: Run tests
  25.       run: |
  26.         python -m unittest discover -s tests
复制代码
以下是工作流程的详细解释:


  • name: 工作流程的名称。
  • on: 界说了触发工作流程的变乱。在这个例子中,它会在向 main 分支 push 代码或创建一个针对 main 分支的 pull request 时触发。
  • jobs: 界说了要执行的一个或多个作业(在这个例子中只有一个作业)。

    • build: 作业的 ID。

      • runs-on: 指定运行作业的虚拟机情况,这里使用的是最新版本的 Ubuntu。
      • steps: 界说了作业中的步骤。

        • actions/checkout@v3: 使用一个社区提供的动作来检出代码。
        • actions/setup-python@v4: 使用一个社区提供的动作来设置 Python 情况,指定版本为 3.11。
        • Install dependencies: 运行一系列命令来升级 pip 并安装项目依赖,假设你的依赖列表在 requirements.txt 文件中。
        • Run tests: 运行命令来执行项目中的测试。这里假设你的测试脚本位于 tests 目次,而且遵循了 Python 的 unittest 测试框架的命名约定。
          当您将这个文件推送到 GitHub 堆栈时,每次对 main 分支的 push 或 pull request 都会触发这个工作流程。GitHub Actions 会自动执行界说好的步骤,并在堆栈的 “Actions” 选项卡中表现执行的状态和日记。




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

篮之新喜

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表