首页 后端开发 C++ 与 GitHub Actions 持续集成

与 GitHub Actions 持续集成

Nov 22, 2024 am 07:15 AM

Continuous Integration with GitHub Actions

介绍

在 DPS909 的实验 8 中,我探索了 持续集成 (CI) 的力量,特别是通过 GitHub Actions。这个实验室是一个很好的机会,可以通过自动化测试、确保质量控制以及学习将工作流程集成到现实世界的开发实践中来增强我的项目。

CI 确保代码在每次更改时都保持功能正常且无错误。它可以防止通过连续运行测试来破坏默认分支。在这个实验室中,我不仅将 CI 集成到我自己的项目中,还为我合作伙伴的项目提供了测试。这篇博文反映了我完成这些任务的过程。


为我的项目设置 GitHub Actions

为了在我的项目中设置 CI,我创建了一个 GitHub Actions 工作流。此工作流程在以下情况下触发:

  • 已向主分支推送。
  • 已创建针对主分支的拉取请求。

YAML 工作流配置

下面是我用于 GitHub Actions 工作流程的 YAML 文件:

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: CI Workflow

 

on:

  push:

    branches:

      - main

  pull_request:

    branches:

      - main

 

jobs:

  build-and-test:

    runs-on: ubuntu-latest

 

    steps:

      - name: Checkout repository

        uses: actions/checkout@v3

 

      - name: Set up C++

        uses: actions/setup-cpp@v1

        with:

          compiler: gcc

 

      - name: Build the project

        run: |

          mkdir build

          cd build

          cmake ..

          make

 

      - name: Run Tests

        run: |

          cd build

          ctest

登录后复制

此工作流程检查我的存储库,使用 CMake 构建项目,并运行我在实验室 7 中编写的测试。


使用拉取请求测试 CI

为了确保工作流程按预期工作,我:

  1. 创建了一个新分支,添加更多测试。
  2. 为我的项目中的不同功能添加了新测试。
  3. 将分支推送到我的存储库并打开针对主分支的拉取请求。

CI 工作流程按预期运行:

  • 最初,我故意破坏了其中一个测试来观察失败。日志清楚地显示了问题,这使得调试变得简单。
  • 修复测试后,CI 通过,确认工作流程成功。

将此拉取请求合并到主分支让我确信我的项目不会出现无意的错误。


为合作伙伴的项目提供测试

在实验室的第二部分,我与我的同学 Inder Parmar 合作,并向他们的存储库 Tailor4Job 贡献了测试。

我的请求请求:#11

  • 任务:我为其 jobFilter 函数添加了一个测试用例,以确保它正确处理边缘情况。
  • 挑战:他们的存储库使用了与我不同的框架和设置。了解他们的测试工具和项目结构需要一些时间。
  • 结果:我的拉取请求成功通过了他们的 CI 工作流程。这次经历教会了我编写符合项目现有结构和指南的测试的重要性。

对持续集成的反思

设置 CI 改变了我的开发工作流程。以下是一些要点:

  • 主动错误预防:CI 确保尽早发现错误,降低破坏默认分支的风险。
  • 易于协作:自动化测试在合并多个开发人员的代码时提供信心。
  • 改进的调试:CI 日志提供了对测试失败的详细见解,使调试更快、更高效。

在合作伙伴的存储库上进行协作是一次丰富的经历,因为它让我接触到了不同的代码库、测试环境和工作流程。


可选挑战

虽然我没有完全实现可选挑战,但我探索了:

  1. 添加 Linter:作为 CI 的一部分自动进行 linting 有助于及早发现样式和语法问题。
  2. 开发容器:我尝试使用 Docker 和 Codespaces 设置可重现的开发环境。

这些步骤可以进一步提高项目质量和新贡献者的入职便利性。


结论

实验 8 教会了我将 CI 工作流程集成到开发项目中的重要性。 CI 确保一致的质量控制并促进协作,使其成为现代软件开发中的宝贵工具。

您可以在下面查看我的项目成功的 CI 运行以及对我合作伙伴项目的拉取请求:

  • CI 工作流程运行:GitHub 操作
  • 合作伙伴的回购 PR:拉取请求 #11

这个实验室真正增强了我对开源开发中的自动化、测试和协作的理解。

以上是与 GitHub Actions 持续集成的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

c语言函数返回值的类型有哪些?返回值是由什么决定的? c语言函数返回值的类型有哪些?返回值是由什么决定的? Mar 03, 2025 pm 05:52 PM

c语言函数返回值的类型有哪些?返回值是由什么决定的?

c语言函数格式字母大小写转换步骤 c语言函数格式字母大小写转换步骤 Mar 03, 2025 pm 05:53 PM

c语言函数格式字母大小写转换步骤

Gulc:从头开始建造的C库 Gulc:从头开始建造的C库 Mar 03, 2025 pm 05:46 PM

Gulc:从头开始建造的C库

c语言函数的定义和调用规则是什么 c语言函数的定义和调用规则是什么 Mar 03, 2025 pm 05:53 PM

c语言函数的定义和调用规则是什么

C标准模板库(STL)如何工作? C标准模板库(STL)如何工作? Mar 12, 2025 pm 04:50 PM

C标准模板库(STL)如何工作?

c语言函数返回值在内存保存在哪里? c语言函数返回值在内存保存在哪里? Mar 03, 2025 pm 05:51 PM

c语言函数返回值在内存保存在哪里?

distinct用法和短语分享 distinct用法和短语分享 Mar 03, 2025 pm 05:51 PM

distinct用法和短语分享

如何有效地使用STL(排序,查找,转换等)的算法? 如何有效地使用STL(排序,查找,转换等)的算法? Mar 12, 2025 pm 04:52 PM

如何有效地使用STL(排序,查找,转换等)的算法?

See all articles