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 提供了一种灵活、可扩展的方式来自动化软件开发过程中的各个环节。
- 如果您的项目是基于 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” 选项卡中表现执行的状态和日记。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |