You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何编程获取GitLab CI作业结果并触发后续测试?

嘿,我之前做类似的GitLab CI自动化脚本时也踩过类似的坑,给你几个实用的解决方案:

搞定GitLab CI作业状态获取+后续测试触发
  • 先澄清一个误区:GitLab API其实完全能拿到作业状态甚至日志
    你可能没找对正确的API端点~ GitLab的Jobs API提供了完整的作业信息获取能力:

    • 要查项目下的所有作业,用GET /projects/:id/jobs,返回的每个作业对象里都有status字段,像successfailedrunning这些状态值都能拿到
    • 如果要单个作业的详细信息(包括日志),用GET /projects/:id/jobs/:job_id,甚至还有专门的日志接口GET /projects/:id/jobs/:job_id/log可以直接拉取作业输出
      用API来拿状态绝对比用WebDriver爬页面靠谱多了,完全不用跟动态URL较劲。
  • 如果非得用WebDriver爬页面(真心不推荐,但给你个可行方案)
    要是你因为某些特殊情况必须走页面抓取的路子,那别盯着作业的直接URL,换个思路从CI/CD作业列表页入手:

    1. 先打开项目的CI/CD作业列表页面(比如项目下的/-/jobs路径)
    2. 在这里可以通过作业名称、所属分支、关联的提交信息来筛选定位你要找的那个作业,不用管它的ID或者动态生成的URL路径
    3. 找到对应的作业条目后,点击进入详情页,再去抓取结果对应的<div>内容
      这样就绕开了作业URL不可预测的问题,通过列表页的筛选定位更稳定。
  • 作业成功后触发后续测试的正确姿势
    当你通过API确认作业状态是success后,直接用GitLab的Pipeline API就能触发新的测试流水线:
    调用POST /projects/:id/pipeline接口,指定ref(要触发测试的分支名),还可以传递variables参数给后续测试用,全程API操作,自动化起来非常顺畅。

内容的提问来源于stack exchange,提问作者ndp

火山引擎 最新活动