📅  最后修改于: 2023-12-03 15:37:35.488000             🧑  作者: Mango
本文将介绍如何使用GitLab上的Shell脚本和Docker Executor来自动化构建、测试和部署Linux上的C/C++应用程序。
在使用Docker Executor之前,必须先安装Docker。具体安装步骤请参考Docker官方文档。
在GitLab上创建一个新项目。
将C/C++应用程序的源代码提交到GitLab项目的代码仓库中。
在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阶段用于构建C/C++应用程序。我们使用了一个Docker镜像,该镜像包含了GCC编译器和构建工具。
build:
image: $DOCKER_IMAGE
stage: build
script:
- apt-get update -qy
- apt-get install -qy build-essential
- make
具体来说,此处我们的脚本执行了以下操作:
更新Ubuntu软件仓库的信息。
安装build-essential,该软件包包含了大多数Linux平台的本地构建工具。
调用make来构建我们的C/C++应用程序。
test阶段用于运行测试用例。我们在test.sh
脚本中定义了一些测试用例,并使用了一些Linux命令(例如grep)来验证测试结果:
test:
image: $DOCKER_IMAGE
stage: test
script: "./test.sh"
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."
完成上述步骤后,将代码提交到GitLab项目的代码仓库中。每次提交后,GitLab将自动运行我们定义的CI/CD步骤。
使用Shell和Docker Executor在GitLab上实现CI/CD常常是一种最简便的解决方案,可让您的应用程序在每次提交之后都经过一系列自动化测试,以保证部署在生产环境中的质量。