持续集成 测试平台 - 集成 Gitlab-CI

花菜 · 2021年05月27日 · 最后由 花菜 回复于 2021年05月28日 · 1358 次阅读

测试平台集成 Gitlab-CI 时序图

1、增加 Gitlab-CI 流水线配置

  • 在项目的根路径新增 Gitlab-CI 流水线配置文件.gitlab-ci.yml
  • Windows 系统在资源管理器中可能无法创建.开头文件,通过在git bash命令行中创建。
# .gitlab-ci.yml
stages:
  - autotest

自动化测试:
  image: centos:7
  stage: autotest
  variables: 
    {
      BASE_URL: 'http://xxx:8000', # 测试平台后端接口ip
      QUERY: '/api/fastrunner/gitlab-ci/',
      TASK_IDS: '22,70',  # 需要运行的任务,多个任务用逗号分隔;不传或者为空,则运行所有的任务
      PROJECT: 7,  # 测试平台中的项目id
      FULL_URL: '$BASE_URL$QUERY',
      START_JOB_USER: '$GITLAB_USER_NAME',
    }
  script:
    - echo start to request test platform...
    - echo $FULL_URL
    - |
      curl -X POST $FULL_URL -H "Content-Type: application/json" -d '{"project": "'"$PROJECT"'", "task_ids": "'"$TASK_IDS"'", "ci_job_id": "'"$CI_JOB_ID"'", "ci_job_url": "'"$CI_JOB_URL"'", "ci_pipeline_id": "'"$CI_PIPELINE_ID"'", "ci_pipeline_url": "'"$CI_PIPELINE_URL"'", "ci_project_id": "'"$CI_PROJECT_ID"'", "ci_project_name": "'"$CI_PROJECT_NAME"'", "ci_project_namespace": "'"$CI_PROJECT_NAMESPACE"'", "start_job_user": "'"$START_JOB_USER"'"}' > report.xml;
    - cat report.xml
    - e=`cat report.xml|grep -Po "(?<=<errors>).*(?=</errors>)"`; echo errors count $e
    - f=`cat report.xml|grep -Po "(?<=<failures>).*(?=</failures>)"`; echo failures count $f
    - echo run test finish...
    - if [[ $e -eq 0  && $f -eq 0 ]]; then exit 0; else exit 1; fi
  after_script:
    - echo $CI_JOB_ID $CI_JOB_STATUS
    - curl -X GET "${FULL_URL}?ci_job_id=${CI_JOB_ID}" > result.txt
    - cat result.txt
  artifacts:
    when: always
    reports:
      junit: report.xml

2、修改配置运行的项目和任务 id

修改两个变量:

  • TASK_IDS,需要运行的任务,多个任务用逗号分隔;不传或者为空,则运行所有的任务(任务状态需要是绿色的)
  • PROJECT,测试平台中的项目 id

3、修改 Gitlab Profile 的 Full name 为中文名

中文名的作用:

  • 在测试报告的创建人依赖这个变量,同时需要和测试平台的用户名一一对应
  • 后续飞书报告中也可能会用到这个变量 # 4、Pipeline 测试报告

5、测试平台 - 在线测试报告地址


6、飞书报告

共收到 8 条回复 时间 点赞

你的名字没遮住

测试游记 回复

知道就知道吧😂

这个是用 gitlab ci 取代 jenkins 完成部署和测试任务的触发?

只用过 gitlab ci 做一些组件库的自动测试和发布,没试过做镜像构建和部署之类的。用起来方便么,有没有什么坑?

花菜与群里一个名字啊,先收藏,有时间学习

陈恒捷 回复

是的,取代 Jenkins。
我们还没完全自动化,上生产还是运维来处理。dev 和 qa 可以自动部署,目前还没遇到什么问题,用起来挺方便的。

花菜 回复

想了解下,你们 gitlab ci 的 runner ,是运维管理还是测试管理?两个部门怎么分工?

我们之前用 gitlab ci 的时候,因为 gitlab 是运维管理的,所以 runner 也是运维管理。有些时候要装别的插件什么的或者出现本地无法重现的错误,都需要找运维协助,比较麻烦。后面 runner 迁到我们主机后,会好一些。而 jenkins 就是我们自己完全管理,相对方便一些。

陈恒捷 回复

运维管理,测试负责把 Gitlab-CI 和测试平台打通,测试是流水线中的一个 stage。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册