首页 > 其他分享 >golang jenkinsapi 批量构建jenkins job

golang jenkinsapi 批量构建jenkins job

时间:2023-03-05 22:33:22浏览次数:39  
标签:jenkinsapi nil err gojenkins ctx golang job jenkins

golang 批量构建jenkins job

      py批量构建jenkins job是,若job在某个floder下面则无法调用,目前测试发现只要job在jenkins根目录下才可调用,不够灵活。golang则没有这个限制,此处记录golang使用gojenkins包来批量构建jenkins的job。

package main

import (
    "context"
    "fmt"
    "strings"

    "github.com/bndr/gojenkins"
)

func OneJobBuild(jenkins *gojenkins.Jenkins, ctx context.Context, jobname string) {
    jobarr := strings.Split(jobname, "/")
    newjobname := strings.Join(jobarr, "/job/") //newjobname: tomcat-test/job/open-api
    fmt.Printf("newjobname: %v\n", newjobname)
    _, err := jenkins.BuildJob(ctx, newjobname, nil)
    if err != nil {
        panic(err)
    }
}

func AllJobBuild(jenkins *gojenkins.Jenkins, ctx context.Context, jobname string) {
    _, err := jenkins.BuildJob(ctx, jobname, nil)
    if err != nil {
        panic(err)
    }
}

func main() {
    ctx := context.Background()
    jenkins, _ := gojenkins.CreateJenkins(nil, "http://10.0.0.1:8080", "user", "password").Init(ctx)

    gojenkins, err := jenkins.GetJob(ctx, "tomcat-test")  //此处tomcat-test为jenkins的floder
    if err != nil {
        panic(err)
    }
    jobList, err2 := gojenkins.GetInnerJobs(ctx)

    if err2 != nil {
        panic(err2)
    }
    for _, job := range jobList {
        afterJob := strings.TrimLeft(job.Base, "/job")
        jobSplit := strings.Split(afterJob, "/")

        AllJobBuild(jenkins, ctx, afterJob)  //构建某个floder下所有的job

    }
    // OneJobBuild(jenkins, ctx, jobname)  //构建某一个job,需要传入job名称
}

 

标签:jenkinsapi,nil,err,gojenkins,ctx,golang,job,jenkins
From: https://www.cnblogs.com/wushaoyu/p/17181965.html

相关文章

  • json转golang结构
    在Golang中,我们可以使用标准库中的encoding/json包来将JSON数据转换为结构体。本文将介绍如何使用该包将JSON数据转换为Golang结构体。首先,让我们看一下JSON数据的格式。......
  • 02 Golang 基础简介
    一、标识符标识符是指定义的具有特殊意义的词,例如变量、常量、函数名等等,任何一门语言中都对自己的标识符有特殊定义的规则。在Go语言中,标识符由字母数字和下划线组成,并......
  • golang标准库 json
    序列化:将内存中对象存储下来,把它变成一个个字节,转为二进制数据反序列化:将文件的一个个字节恢复成内存中队形。从二进制数据中恢复字符序列化:jsonxml二进制序列化:proto......
  • Golang HTTP编程及源码解析-请求/响应处理
    1.HTTP协议HTTP协议是HyperTextTransferProtocol(超文本传输协议)的缩写,基于TCP/IP通信协议来传递数据(HTML文件、图片文件、查询结果等)。HTTP是无连接的:无连接的......
  • 萌新也能看懂的 Golang 题解(一)
    写在前面关于“模拟题”和“算法题”及主观难度评价第一批1791.设备编号(模拟)1792.服务器集群网络延时(排序、数学)1793.给定差值的组合(哈希表)1787.最长元音子串(模......
  • 萌新也能看懂的 Golang 题解(二)
    第二批1807.矩阵转置(数学)难度:简单;主观评价:简单。简单模拟题+数学题(判断完全平方数)。先判断矩阵长度是否为完全平方数(开根号然后自身相乘,判断和开根号之前的数是否一致......
  • 萌新也能看懂的 Golang 题解(三)
    第三批1822.电话拦截(模拟、排序)难度:中等;主观评价:简单。sort.Slice() 应用题,重点在于通配符的判断和如何设计数据结构保证最后能按呼叫顺序返回通话记录。对于没有通......
  • golang的指针变量,智商声明没有赋值,不能直接 *p=123之类的
    packagemainimport"fmt"funcmain(){ //申明指针的时候,如果没有指向某个变量,默认值为nil //不能直接进行操作,包括读写 //而用new返回的是有默认值的指针,为数据......
  • C# 判断JObject的键值是否存在
    usingNewtonsoft.Json.Linq;usingNewtonsoft.Json; JObjectjson1=(JObject)JsonConvert.DeserializeObject(strJson);stringevent1=json1["event"].ToStr......
  • protobuf golang&&python序列化反序列化测试
    1.概要最近考虑采用protobuf来实现kafka消息传递,所以先测试一下golang和python之前序列化互通问题。由于go和python对于二进制的表示在ide层面是无法统一的,直接把python......