📌  相关文章
📜  在 GitLab 上使用 Shell 和 Docker Executor 在 CC++ 应用程序(Linux)中实现 CICD(1)

📅  最后修改于: 2023-12-03 14:50:55.668000             🧑  作者: Mango

在 GitLab 上使用 Shell 和 Docker Executor 在 C/C++ 应用程序(Linux)中实现 CI/CD

在软件开发过程中,CI/CD 是一个非常重要的环节。GitLab 提供了强大的 CI/CD 工具,可以方便的集成到我们的开发流程中。本文将介绍如何使用 GitLab 上的 Shell 和 Docker Executor,在 C/C++ 应用程序中实现 CI/CD。

什么是 CI/CD?

CI/CD 指的是持续集成(Continuous Integration)和持续交付(Continuous Delivery)。持续集成是指开发者在代码修改后,将代码进行编译、测试和打包等操作,并及时的反馈给团队。持续交付则是将这些操作自动化,并在通过自动化测试后,将代码交付给测试团队或者直接发布给客户。

GitLab CI/CD

GitLab 是一个源代码管理工具,除了源代码管理功能之外,还提供了非常强大的 CI/CD 工具。通过 GitLab CI/CD,我们可以方便的将代码进行构建、测试、部署等操作,并及时的反馈给团队。

在 GitLab 上使用 CI/CD 需要如下几个步骤:

  1. 编写 .gitlab-ci.yml 文件,定义 Pipeline;
  2. Push 代码到 GitLab,触发 Pipeline;
  3. GitLab 使用 Executor 执行 Pipeline 中定义的任务;
  4. Pipeline 执行完毕,对结果进行分析。
在 C/C++ 应用程序中使用 GitLab CI/CD

使用 GitLab CI/CD,可以方便的对 C/C++ 应用程序进行构建、测试、打包、部署等操作。下面是一个简单的例子:

# .gitlab-ci.yml
stages:
  - build
  - test

build:
  stage: build
  image: gcc:8.3
  script:
    - mkdir build
    - cd build
    - cmake ..
    - make

test:
  stage: test
  image: gcc:8.3
  script:
    - ./test

在这个例子中,我们定义了两个阶段(Build 和 Test)。Build 阶段使用 gcc:8.3 的 Docker 镜像,执行构建操作,包括 CMake 和 make;Test 阶段执行测试操作。这个例子中使用了单个 Runner,但是 GitLab 也支持在多台服务器上同时执行 CI/CD 任务。

使用 Shell Executor

GitLab 支持多种 Executor,其中最简单的 Executor 是 Shell Executor。Shell Executor 是在 Runner 上直接执行命令,不需要额外的 Docker 环境。Shell Executor 可以适用于很多开发语言,包括 C/C++。下面是一个使用 Shell Executor 的例子:

# .gitlab-ci.yml
stages:
  - build
  - test

build:
  stage: build
  script:
    - mkdir build
    - cd build
    - cmake ..
    - make

test:
  stage: test
  script:
    - ./test

在这个例子中,我们只需要定义脚本命令并在 Runner 上执行即可完成整个 CI/CD 流程。需要注意的是,使用 Shell Executor 相对于 Docker Executor 来说,可能需要一些额外的配置,如在 Runner 上安装相关依赖等。

使用 Docker Executor

Docker Executor 是在 Docker 容器中执行代码。相比于 Shell Executor,Docker Executor 更加方便,可以直接通过 Docker 镜像来构建和测试应用程序。下面是一个使用 Docker Executor 的例子:

# .gitlab-ci.yml
stages:
  - build
  - test

build:
  stage: build
  image: gcc:8.3
  script:
    - mkdir build
    - cd build
    - cmake ..
    - make

test:
  stage: test
  image: gcc:8.3
  script:
    - ./test

在这个例子中,我们使用 gcc:8.3 的 Docker 镜像,构建和测试应用程序。使用 Docker Executor 的好处是,我们可以在不同的 Docker 镜像中执行任务,而不需要考虑不同操作系统的问题。

总结

CI/CD 对于软件开发过程中的质量保证是非常重要的。GitLab 提供了非常强大的 CI/CD 工具,通过 GitLab 的 Shell 或 Docker Executor,可以方便的在 C/C++ 应用程序中进行 CI/CD。在使用 GitLab CI/CD 的过程中,需要注意正确的定义 Pipeline,选择合适的 Executor,并对结果进行分析。