这是个小工具,比如想输出一个表格,每个表格都是对应着公司的JIRA正在跑的项目,那就可以使用Go将其导出。

如果单独去研究JIRA的库是没有特别的必要的,首先要找的是不是已经存在脚手架了,此处使用:go-jira

创建JIRA客户端访问句柄:

1
2
3
4
5
6
7
8
9
10
11
tp := jira.BasicAuthTransport{
Username: *user,
Password: *pw,
}

client, err := jira.NewClient(tp.Client(),
"http://jira.xxxxx.com")
if err != nil {
fmt.Println("new jira client error ,", err)
return
}

可以获取到所有的project:

1
2
3
4
5
6
7
req, _ := client.NewRequest("GET", "rest/api/2/project", nil)

projects := new([]jira.Project)
_, err = client.Do(req, projects)
if err != nil {
panic(err)
}

根据获取到的项目名,即可获取到项目下的所有issue:

1
2
3
4
5
6
7
8
// MaxResults 控制着能返回的issue的数量
jql := fmt.Sprintf("project = \"%s\"", projectName)
options := &jira.SearchOptions{MaxResults:1000}
issues, _, err := client.Issue.Search(jql, options)
if err != nil {
fmt.Printf("search %s project error %v", projectName, err)
return
}

至此就结束了,至于其他的特殊操作,这个库也是可以去操作的,比如库里没有,但jira上有的API,可以使用这个函数去获取数据,数据体可以通过浏览器进行查看后,写出来即可。

1
func (c *Client) NewRequest(method string, urlStr string, body interface{}) (*http.Request, error)

写excel的操作,同样非常简单,可以参考我的另一篇博客,进行站内搜索excel即可。

截止到目前:2020-4-16,go-jira的最新的代码里头出了点问题,目前的体现是,设置jira.SearchOptions {MaxResults: 100},但是依然只会返回默认50,根据我的测试,这是在commit-436469b62d4d62037f380b38c918a13f4a5f0ab2之后,这个bug就出现了,其他的暂未发现有什么问题,也和我用到的功能并不多有关。