背景
公司环境搭建私有化的git仓库,使用了Gitlab,想要实现一套ci/cd的流程,即提交完成代码到仓库后,自动测试或部署,运行一条流水线去完成任务。
功能介绍
GitLab提供持续集成服务。如果将.gitlab-ci.yml文件添加到存储库的根目录,并将GitLab项目配置为使用Runner,则每次提交或推送都会触发CI 管道。
.gitlab-ci.yml文件告诉gitlab运行程序该怎么做。默认情况下,它运行具有三个阶段的管道:构建、测试和部署。你不需要使用所有三个阶段;没有作业的阶段将被忽略。
大多数项目使用GitLab的CI服务来运行测试套件,以便开发人员在破坏某些内容时立即获得反馈。使用连续交付和连续部署来自动将测试代码部署到临时环境和生产环境。
测试需求
git提交代码后,触发流程,在测试主机执行脚本,观察测试流程与返回结果。
实现方式
1.注册项目Runner
如下图所示,可以手动创建针对该git项目所使用的runner:
执行命令注册:
# gitlab-runner register
分别填写url、注册令牌等信息
# url、令牌等可以在上图所指位置找到,tags的名称是要之后在yml文件指定的名称
重启runner
# gitlab-runner restart
创建完成后,可以查看runner是否可用:
active - Runner已启用,随时可以处理新作业
paused - Runner已暂停,暂时不会接受新的作业
2.配置yml
配置以下内容到.gitlab-ci.yml文件,实现了将git中 C A Y S E F I L E 写 入 临 时 文 件 CAYSE_FILE写入临时文件 CAYSEFILE写入临时文件sh_script中,推送到$AIM_IP测试环境中执行
stages:
- test
# 定义的任务1
job1:
# 场景为测试执行
stage: test
# 所需执行的脚本
script:
- sudo apt-get install sshpass -y
- echo $CAYSE_FILE
- echo $AIM_PASS
- echo $AIM_IP
- sh_script=$(mktemp XXXXXX.sh)
- sudo cat $CAYSE_FILE > $sh_script
- sudo sshpass -p "$AIM_PASS" scp $sh_script root@$AIM_IP:/tmp
- sudo sshpass -p "$AIM_PASS" ssh root@$AIM_IP "chmod 755 /tmp/$sh_script"
- sudo sshpass -p "$AIM_PASS" ssh root@$AIM_IP "bash /tmp/$sh_script"
only:
- master
tags:
- test_hu
按照以下内容,可以将已于替换的信息配置成变量,在yml文件中写入
3.触发流程
之后在每次提交代码后,自动触发cicd流程,完成对代码的测试部署
在成功执行完成后,可以在job任务中查看编排的yml文件的流程,查看到测试代码的执行信息