gitlab添加CI自动测试

1. CI运行规格配置文件.gitlab-ci.yml

yml 配置文件语法:
https://docs.gitlab.com/17.3/ee/ci/yaml/index.html

添加.gitlab-ci.yml文件并配置 :

复制代码
## 定义几个阶段 
stages:          # List of stages for jobs, and their order of execution
  - build
  - test
  - deploy
  - 
 ## 示例job ,可以添加多个job 
build-generator-job:       # This job runs in the build stage, which runs first.
  stage: build  ## 运行的阶段 
  tags:
    - build-generator-job
  only:
    - develop
  script:
    - echo "Compiling the code..."
    - /bin/bash xxx.sh generator all  ## 示例内容,实际build需要干的事情,此处可以写命令,也可以写脚本等 
    - echo "Compile complete."

参考博客:https://blog.csdn.net/Mrxiao_bo/article/details/138863594

2. gitlab上添加runner & 绑定CI运行的服务器

进入项目的CICD配置页面,点击runners进入:


2.1 在服务器上安装runner

复制代码
### Download and install binary

# Download the binary for your system
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

# Give it permission to execute
sudo chmod +x /usr/local/bin/gitlab-runner

# Create a GitLab Runner user
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

# Install and run as a service
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start

## Command to register runner

sudo gitlab-runner register --url http://192.168.1.xxx/ --registration-token GR1348941p2u73yR4HziHG8oNMjn7
## 此处的url是gitlab服务器地址 
## token是gitlab那边生成的,直接从runner处拷贝过来即可。

2.2 在服务器上注册runner

复制代码
$ sudo gitlab-runner register --url http://192.168.1.xx/ --registration-token GR1348941p2u73yR4HziHG8oNMjn7
Runtime platform                                    arch=amd64 os=linux pid=1779809 revision=b92ee590 version=17.4.0
Running in system-mode.                            
                                                   
Enter the GitLab instance URL (for example, https://gitlab.com/):
# 可不填
[http://192.168.1.xx/]: 
Enter the registration token:
# 可不填
[GR1348941p2u73yR4HziHG8oNMjn7]: 
Enter a description for the runner:
# 可不填
[qli-Z390-UD]: 
Enter tags for the runner (comma-separated):
# 该runner可以执行的tag,这个和yml文件定义的job对应,也可不填,后续在gitlab runner界面下配置 
build-generator-job build-runtime-job build-app-job model-test-job
Enter optional maintenance note for the runner:

WARNING: Support for registration tokens and runner parameters in the 'register' command has been deprecated in GitLab Runner 15.6 and will be replaced with support for authentication tokens. For more information, see https://docs.gitlab.com/ee/ci/runners/new_creation_workflow 
Registering runner... succeeded                     runner=GR1348941p2u73yR4
Enter an executor: custom, kubernetes, docker, docker-windows, docker+machine, docker-autoscaler, shell, ssh, parallels, virtualbox, instance:
# 配置执行环境,可以选docker/shell 等,跟进实际需求来定,如果需要依赖服务器环境等,可直接选shell 
docker
Enter the default Docker image (for example, ruby:2.7):
latest
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
 
Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"

打开runner运行服务器下该文件 /home/gitlab-runner/.bash_logout ,屏蔽如下几行: (要不然会导致初始化得时候报错)

复制代码
if [ "$SHLVL" = 1 ]; then
    [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
fi

3. 原理解析

3.1 CI如何判断任务执行成功or失败 ?

复制代码
  script:
    - echo "Compiling the code..."
    - /bin/bash test.sh all > test.log
    - echo "Compile complete."

如上脚本命令,判断成功失败的条件是每条命令的返回状态,如果返回非0,则判定为失败,如果返回0则是成功

3.2 artifacts下面配置的路径是如何确定,有何作用

复制代码
model-test-job:   # This job runs in the test stage.
  stage: test    # It only starts when the job in the build stage completes successfully.
  script:
    - echo "Running  tests... This will take about 10 mins."  > test.log
  artifacts:
 artifacts:
    name: "$CI_BUILD"
    paths:
      - test.log

artifacts用于指定在job 成功或失败 时应附加到作业的文件和目录的列表 。作业完成后,工件将被发送到GitLab,并可在GitLab UI中下载 .

artifacts:paths

路径是相对于项目目录($CI_PROJECT_DIR)的,不能直接在其外部链接。

相关推荐
卓码软件测评2 分钟前
软件首版次认定测试机构:【Apifox与UMI框架结合:实现OpenAPI规范与Mock服务的自动化流水线】
测试工具·ci/cd·性能优化·单元测试·测试用例
cly11 小时前
Jenkins CI/CD 平台详解
运维·ci/cd·jenkins
fiveym1 小时前
CI/CD 完整流水线全解析:环节拆解 + 角色分工
ci/cd
h7ml2 小时前
企业微信API接口对接系统中Java后端的持续集成/持续部署(CI/CD)落地技巧
java·ci/cd·企业微信
一念一花一世界2 小时前
企业级CI/CD工具选型:GitLab CI/CD vs Jenkins vs Arbess
ci/cd·gitlab·jenkins·arbess
OpenMiniServer1 天前
AI + GitLab + VSCode:下一代开发工作流的革命性集成
人工智能·vscode·gitlab
OpenMiniServer1 天前
GitLab AI革命:如何将智能开发融入你的DevOps工作流
人工智能·gitlab·devops
fiveym1 天前
持续交付与持续部署(CD)深度解析:定义差异、流程架构与交付模式对比
运维·ci/cd·架构
oMcLin1 天前
如何在 CentOS 8 上部署并优化 Jenkins 2.x 流水线,提升 CI/CD 流程的自动化与高效性
ci/cd·centos·jenkins
木二_2 天前
附058.Kubernetes Gitea部署
ci/cd·kubernetes·gitea