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

📅  最后修改于: 2023-12-03 15:37:35.488000             🧑  作者: Mango

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

本文将介绍如何使用GitLab上的Shell脚本和Docker Executor来自动化构建、测试和部署Linux上的C/C++应用程序。

准备工作
安装Docker

在使用Docker Executor之前,必须先安装Docker。具体安装步骤请参考Docker官方文档

准备GitLab项目
  1. 在GitLab上创建一个新项目。

  2. 将C/C++应用程序的源代码提交到GitLab项目的代码仓库中。

创建Shell脚本

在GitLab项目下创建一个名为.gitlab-ci.yml的文件,并编辑如下内容:

stages:
  - build
  - test
  - deploy

variables:
  DOCKER_IMAGE: gcc:latest

build:
  image: $DOCKER_IMAGE
  stage: build
  script:
    - apt-get update -qy
    - apt-get install -qy build-essential
    - make

test:
  image: $DOCKER_IMAGE
  stage: test
  script: "./test.sh"

deploy:
  image: $DOCKER_IMAGE
  stage: deploy
  script: "./deploy.sh"
  environment:
    name: production
    url: https://example.com
  only:
    - master

此处定义了三个阶段,分别为build、test和deploy。

Build阶段

build阶段用于构建C/C++应用程序。我们使用了一个Docker镜像,该镜像包含了GCC编译器和构建工具。

build:
  image: $DOCKER_IMAGE
  stage: build
  script:
    - apt-get update -qy
    - apt-get install -qy build-essential
    - make

具体来说,此处我们的脚本执行了以下操作:

  1. 更新Ubuntu软件仓库的信息。

  2. 安装build-essential,该软件包包含了大多数Linux平台的本地构建工具。

  3. 调用make来构建我们的C/C++应用程序。

Test阶段

test阶段用于运行测试用例。我们在test.sh脚本中定义了一些测试用例,并使用了一些Linux命令(例如grep)来验证测试结果:

test:
  image: $DOCKER_IMAGE
  stage: test
  script: "./test.sh"
Deploy阶段

deploy阶段用于将C/C++应用程序部署到生产环境。此处我们使用了deploy.sh脚本,该脚本可能会包含一些Linux命令,例如SCP或者rsync来将应用程序传输到远程服务器:

deploy:
  image: $DOCKER_IMAGE
  stage: deploy
  script: "./deploy.sh"
  environment:
    name: production
    url: https://example.com
  only:
    - master

此处,我们在deploy阶段设置了环境变量,包括远程部署的服务器地址和URL。

编写测试脚本

在测试阶段,我们需要编写一些测试用例,并使用测试脚本来运行这些测试用例。

下面是一个简单的测试脚本示例test.sh

#!/bin/bash

# Run tests
./test/test1
./test/test2

# Check test results
grep "PASSED" *test*.log >/dev/null
if [ $? -ne 0 ]; then
  echo "Tests failed"
  exit 1
fi

echo "Tests passed"
编写部署脚本

在deploy阶段,我们需要实现部署应用程序到生产环境的逻辑。下面是一个简单的部署脚本示例deploy.sh

#!/bin/bash

# Deploy to production server
scp -r . user@example.com:/var/www/myapp/

echo "Deployment completed."
提交代码并运行CI/CD

完成上述步骤后,将代码提交到GitLab项目的代码仓库中。每次提交后,GitLab将自动运行我们定义的CI/CD步骤。

总结

使用Shell和Docker Executor在GitLab上实现CI/CD常常是一种最简便的解决方案,可让您的应用程序在每次提交之后都经过一系列自动化测试,以保证部署在生产环境中的质量。