1. 首页
  2. 主题
  3. Go第三方库

golang 调用jenkins-job接口,如何传递file类型参数从本地上传文件

Liz8202 · · 4290 次点击
运行环境: go 1.19.1 windows/amd64 问题描述: go 调用jenkins api如何进行file类型参数 现有代码 ```go func BuildJob(fileName string,projectCode string){ //初始化邮箱 initMail() // // 安全员邮箱账号设置 setSafeEmail(projectCode) ctx := context.Background() jenkins := gojenkins.CreateJenkins(nil, "http://" + jenkinsAddr, jenkinsUser, jenkinsPwd) _, err := jenkins.Init(ctx) if err != nil { fmt.Println("********错误创建连接********") return } fmt.Println("********创建jenkins连接成功********") if jenkins != nil { //如果参数完全一样,会当同一次构建 queueid, err := jenkins.BuildJob(ctx,jobName, map[string]string{"node":"dwglpt-zcy2","filename":fileName,"project_code":projectCode,"adminEmail":adminEmail,"adminUser":adminUser,"work_order_number":work_order_number}) if err != nil { fmt.Println("********构建任务失败********") return } fmt.Println("queueid:", queueid) var buildNumber int64 //获取构建Num for{ task,_ := jenkins.GetQueueItem(ctx,queueid) if task.Raw.Executable.Number != 0 { buildNumber = task.Raw.Executable.Number break } time.Sleep(time.Second * 1) } fmt.Printf("buildNum:%v\n",buildNumber) build, err := jenkins.GetBuild(ctx,jobName,buildNumber) //正则规则,控制台去掉空白字符 pattern := regexp.MustCompile(`\s+`) firstTip := true //等待输入验证码 for { if build.IsRunning(ctx) { consoleOutput := pattern.ReplaceAllString(build.GetConsoleOutput(ctx),"") time.Sleep(time.Second * 5) if strings.HasSuffix(consoleOutput,"Inputrequested"){ //第一次输入验证码后后续输入验证码 if firstTip { fmt.Println("###############请输入验证码###############") firstTip = false } else { fmt.Println("###############验证码输入错误,请重新输入验证码###############") } fmt.Scanf("%s\n",&valiCode) //调用接口进行构建 InvokRequest("POST","http://" + jenkinsUser + ":" + jenkinsToken + "@" + jenkinsAddr + "/job/dwglptyq/job/sc-cpjob/" + fmt.Sprintf("%v",buildNumber) + "/wfapi/inputSubmit?inputId=Inputap",valiCode) } }else { break } } //最终结果信息 fmt.Printf("********构建号: %d,构建结果: %v********\n", build.GetBuildNumber(), build.GetResult()) } } ``` 目前,传递的参数都是字符串类型,因为jenkins job的参数变化,需要将本地的文件通过file参数传到jenkins服务器,当前功能不能满足触发job的条件。 当前jenkins参数界面如图示 ![image.png](https://static.golangjob.cn/230419/6e0ac63a5c510db69e5bea33c4d30d64.png) 对于红框中的文件参数,我的golang代码应该怎么调整。
盲猜一下,你用的应该是`github.com/bndr/gojenkins`,API设计得跟Go标准库差远了,`gopher style`就不要求了(能用就行要啥自行车),关键是还不正交。 你在获取`queueid`的时候实际使用的是`InvokeSimple`,说句不好听的就是阉割版。要上传文件就得用`Invoke`,但是`Invoke`却给不了你`queueid`。 所以它所谓的封装逻辑只是为了封装而封装,到头来用户还得自己从里面把代码抠出来复制一遍。
#1
更多评论
<a href="/user/Neightly" title="@Neightly">@Neightly</a> 是的大佬,确实是bnrd/gojenkins
#2

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中