You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在API调用中使用GitLab CI生成的Newman报告构件

方案说明

完全可以通过GitLab官方提供的制品API拉取生成的Newman报告,具体操作如下:

前置准备

你需要提前获取以下信息:

  • 你的GitLab实例访问地址(公有云GitLab就是https://gitlab.com)
  • 对应项目的ID(可以在项目主页的名称下方查看)
  • 生成Newman报告的CI任务的JOB ID(可以在CI流水线的任务详情页查看)
  • 拥有该项目read_api权限的个人访问令牌(PAT),如果你的Go服务是在同个GitLab CI流水线内运行,可直接用系统预置的CI_JOB_TOKEN无需额外生成令牌。

1. CURL拉取报告示例

直接调用GitLab Jobs制品API即可拉取指定报告文件,命令如下:

curl --header "PRIVATE-TOKEN: 你的个人访问令牌" "https://<你的GitLab地址>/api/v4/projects/<项目ID>/jobs/<JOB_ID>/artifacts/outputfile.json"

如果要拉取指定分支下最新成功运行的对应任务的报告,可使用如下请求:

curl --header "PRIVATE-TOKEN: 你的个人访问令牌" "https://<你的GitLab地址>/api/v4/projects/<项目ID>/jobs/artifacts/<分支名>/raw/outputfile.json?job=<你的CI任务名称>"

2. Go代码适配修改

你可以将原本读取本地文件的逻辑替换为发送HTTP请求拉取报告内容,示例代码如下:

package main

import (
	"io"
	"fmt"
	"net/http"
)

func main() {
	// 配置请求参数
	gitlabURL := "https://<你的GitLab地址>/api/v4/projects/<项目ID>/jobs/<JOB_ID>/artifacts/outputfile.json"
	token := "你的个人访问令牌"

	// 构建请求
	req, err := http.NewRequest("GET", gitlabURL, nil)
	if err != nil {
		fmt.Println("构建请求失败:", err)
		return
	}
	req.Header.Add("PRIVATE-TOKEN", token)

	// 发送请求
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Println("请求报告失败:", err)
		return
	}
	defer resp.Body.Close()

	// 读取响应内容(后续可直接解析,无需写入本地文件)
	reportContent, err := io.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("读取报告内容失败:", err)
		return
	}

	// 后续你的Newman报告解析逻辑直接使用reportContent即可
	fmt.Println("成功拉取报告,长度:", len(reportContent))
}

注意事项

  • 如果你的Go服务在同个GitLab CI流水线内运行,可直接将PRIVATE-TOKEN替换为JOB-TOKEN,值填系统环境变量CI_JOB_TOKEN即可,无需手动生成和维护个人访问令牌。
  • 你需要确保生成Newman报告的CI任务的制品保留时间未过期,否则会拉取失败。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 10:06:04