GitHub Action Workflow

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 提供的运行器,也可以设置自己的运行器。

工作流程的执行原理:

  1. 事件触发:当仓库中发生了一个配置了触发器的事件时,GitHub Actions 会检查是否有相关的工作流程文件。
  2. 检出代码:工作流程开始时,默认的第一步是检出仓库的代码到运行器上。
  3. 执行任务:根据工作流程文件中的定义,任务会被顺序执行或者并行执行。
  4. 执行步骤:在每个任务内部,步骤会按照定义的顺序执行。如果某个步骤失败了,默认情况下,该任务会停止,并且工作流程会被标记为失败。
  5. 使用动作:在步骤中,可以使用预定义的动作来完成特定的任务。
  6. 访问权限:运行器在执行任务时会使用一个 GitHub 密钥(GITHUB_TOKEN),该密钥拥有对当前仓库的读写权限。
  7. 日志和通知:工作流程的执行过程会被记录,并且可以通过 GitHub UI 查看日志。此外,还可以配置通知,比如在流程成功或失败时发送邮件。
  8. 完成:所有任务完成后,工作流程要么成功结束,要么因为错误而失败。
    通过这种方式,GitHub Actions 提供了一种灵活、可扩展的方式来自动化软件开发过程中的各个环节。
如果您的项目是基于 Python,并且您想要在 GitHub Actions 工作流程中使用 Python 3.11,您可以按照以下示例来设置 `.github/workflows/ci.yml` 文件:
```yaml
name: Python CI
on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
      with:
        fetch-depth: 1
    - name: Set up Python 3.11
      uses: actions/setup-python@v4
      with:
        python-version: '3.11'
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt
    - name: Run tests
      run: |
        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” 选项卡中显示执行的状态和日志。

你可能感兴趣的:(github)