mirror of
https://github.com/strongdm/comply
synced 2024-11-22 07:34:54 +00:00
Specifying Jira Issuetype in config.yaml (#53)
* Jira integration documentation improved. Added ability to specify what type of issue to create in Jira * Apparently, Go doesn't like http/https in front of package name in
This commit is contained in:
parent
8f3d668789
commit
bcc9b06ac4
18
README.md
18
README.md
@ -82,12 +82,28 @@ COMMANDS:
|
|||||||
- Github
|
- Github
|
||||||
- Gitlab
|
- Gitlab
|
||||||
|
|
||||||
|
## Configuring Jira
|
||||||
|
When comply creates a ticket (through `proc`, for instance), it sets the following fields.
|
||||||
|
|
||||||
|
- assignee
|
||||||
|
- description
|
||||||
|
- issuetype
|
||||||
|
- labels
|
||||||
|
- project key
|
||||||
|
- reporter
|
||||||
|
- summary
|
||||||
|
|
||||||
|
Please make sure that the default *Create Screen* has all of those fields enabled. Additionally, make sure that there are no other required fields for the issue type you choose.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Forking and local development
|
## Forking and local development
|
||||||
> Assumes installation of golang and configuration of GOPATH in .bash_profile, .zshrc, etc
|
> Assumes installation of golang and configuration of GOPATH in .bash_profile, .zshrc, etc
|
||||||
> Inspiration: http://code.openark.org/blog/development/forking-golang-repositories-on-github-and-managing-the-import-path
|
> Inspiration: http://code.openark.org/blog/development/forking-golang-repositories-on-github-and-managing-the-import-path
|
||||||
|
|
||||||
```
|
```
|
||||||
$ go get http://github.com/strongdm/comply
|
$ go get github.com/strongdm/comply
|
||||||
$ cd $GOPATH/src/github.com/strongdm/comply ; go get ./...
|
$ cd $GOPATH/src/github.com/strongdm/comply ; go get ./...
|
||||||
$ make
|
$ make
|
||||||
$ cd example
|
$ cd example
|
||||||
|
@ -5,6 +5,14 @@ tickets:
|
|||||||
token: XXX
|
token: XXX
|
||||||
username: strongdm
|
username: strongdm
|
||||||
repo: comply
|
repo: comply
|
||||||
|
# jira:
|
||||||
|
# username: xxxx # This is the username you log in to Jira's UI with. Probably your email address.
|
||||||
|
# password: xxxx # If you don't have a "managed account", use your password in this field. But if your organization
|
||||||
|
# # uses SAML or OAuth, or Jira's built-in multi-factor authentication, you need to use
|
||||||
|
# # an API token. Learn more here: https://confluence.atlassian.com/cloud/api-tokens-938839638.html
|
||||||
|
# project: comply
|
||||||
|
# url: https://yourjira
|
||||||
|
# taskType: Task # This must be an Issue, not a sub-task
|
||||||
# gitlab:
|
# gitlab:
|
||||||
# domain: https://gitlab.example.com:443/ # or https://gitlab.com/
|
# domain: https://gitlab.example.com:443/ # or https://gitlab.com/
|
||||||
# token: token-here
|
# token: token-here
|
||||||
|
@ -16,6 +16,7 @@ const (
|
|||||||
cfgPassword = "password"
|
cfgPassword = "password"
|
||||||
cfgURL = "url"
|
cfgURL = "url"
|
||||||
cfgProject = "project"
|
cfgProject = "project"
|
||||||
|
cfgTaskType = "taskType"
|
||||||
)
|
)
|
||||||
|
|
||||||
var prompts = map[string]string{
|
var prompts = map[string]string{
|
||||||
@ -23,6 +24,7 @@ var prompts = map[string]string{
|
|||||||
cfgPassword: "Jira Password",
|
cfgPassword: "Jira Password",
|
||||||
cfgURL: "Jira URL",
|
cfgURL: "Jira URL",
|
||||||
cfgProject: "Jira Project Code",
|
cfgProject: "Jira Project Code",
|
||||||
|
cfgTaskType: "Jira Task Type",
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prompts are human-readable configuration element names
|
// Prompts are human-readable configuration element names
|
||||||
@ -40,6 +42,7 @@ type jiraPlugin struct {
|
|||||||
password string
|
password string
|
||||||
url string
|
url string
|
||||||
project string
|
project string
|
||||||
|
taskType string
|
||||||
|
|
||||||
clientMu sync.Mutex
|
clientMu sync.Mutex
|
||||||
client *jira.Client
|
client *jira.Client
|
||||||
@ -66,7 +69,7 @@ func (j *jiraPlugin) Get(ID string) (*model.Ticket, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (j *jiraPlugin) Configured() bool {
|
func (j *jiraPlugin) Configured() bool {
|
||||||
return j.username != "" && j.password != "" && j.url != "" && j.project != ""
|
return j.username != "" && j.password != "" && j.url != "" && j.project != "" && j.taskType != ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (j *jiraPlugin) Links() model.TicketLinks {
|
func (j *jiraPlugin) Links() model.TicketLinks {
|
||||||
@ -93,6 +96,9 @@ func (j *jiraPlugin) Configure(cfg map[string]interface{}) error {
|
|||||||
if j.project, err = getCfg(cfg, cfgProject); err != nil {
|
if j.project, err = getCfg(cfg, cfgProject); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if j.taskType, err = getCfg(cfg, cfgTaskType); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -134,7 +140,7 @@ func (j *jiraPlugin) Create(ticket *model.Ticket, labels []string) error {
|
|||||||
i := jira.Issue{
|
i := jira.Issue{
|
||||||
Fields: &jira.IssueFields{
|
Fields: &jira.IssueFields{
|
||||||
Type: jira.IssueType{
|
Type: jira.IssueType{
|
||||||
Name: "Task",
|
Name: j.taskType,
|
||||||
},
|
},
|
||||||
Project: jira.Project{
|
Project: jira.Project{
|
||||||
Key: j.project,
|
Key: j.project,
|
||||||
|
@ -87,7 +87,10 @@ func GetPlugin(ts TicketSystem) TicketPlugin {
|
|||||||
}
|
}
|
||||||
cfgStringed[kS] = v
|
cfgStringed[kS] = v
|
||||||
}
|
}
|
||||||
tp.Configure(cfgStringed)
|
err := tp.Configure(cfgStringed)
|
||||||
|
if( err != nil) {
|
||||||
|
panic(fmt.Sprintf("Configuration error `%s` in project YAML", err))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user