-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added
--assert
option to report evidence commit jira
Improved debugging Co-authored-by: Sami Alajrami <[email protected]> Co-authored-by: Steve Tooke <[email protected]>
- Loading branch information
1 parent
0f321de
commit f6c6c26
Showing
5 changed files
with
61 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -22,6 +22,7 @@ type reportEvidenceCommitJiraOptions struct { | |
pat string | ||
srcRepoRoot string | ||
payload JiraEvidencePayload | ||
assert bool | ||
} | ||
|
||
const reportEvidenceCommitJiraShortDesc = `Report Jira evidence for a commit in Kosli flows.` | ||
|
@@ -75,6 +76,20 @@ kosli report evidence commit jira \ | |
--api-token yourAPIToken \ | ||
--org yourOrgName \ | ||
--user-data /path/to/json/file.json | ||
# fail if no issue reference is found, or the issue is not found in your jira instance | ||
kosli report evidence commit jira \ | ||
--commit yourGitCommitSha1 \ | ||
--name yourEvidenceName \ | ||
--jira-base-url https://kosli.atlassian.net \ | ||
--jira-username [email protected] \ | ||
--jira-api-token yourJiraAPIToken \ | ||
--flows yourFlowName \ | ||
--build-url https://exampleci.com \ | ||
--api-token yourAPIToken \ | ||
--org yourOrgName \ | ||
--assert | ||
` | ||
|
||
func newReportEvidenceCommitJiraCmd(out io.Writer) *cobra.Command { | ||
|
@@ -117,6 +132,7 @@ func newReportEvidenceCommitJiraCmd(out io.Writer) *cobra.Command { | |
cmd.Flags().StringVar(&o.srcRepoRoot, "repo-root", ".", repoRootFlag) | ||
cmd.Flags().StringVarP(&o.userDataFilePath, "user-data", "u", "", evidenceUserDataFlag) | ||
cmd.Flags().StringSliceVarP(&o.evidencePaths, "evidence-paths", "e", []string{}, evidencePathsFlag) | ||
cmd.Flags().BoolVar(&o.assert, "assert", false, assertJiraEvidenceFlag) | ||
addDryRunFlag(cmd) | ||
|
||
err := RequireFlags(cmd, []string{"commit", "build-url", "name", "jira-base-url"}) | ||
|
@@ -145,6 +161,7 @@ func (o *reportEvidenceCommitJiraOptions) run(args []string) error { | |
return err | ||
} | ||
|
||
logger.Debug("Resolving commit reference: %s", o.payload.CommitSHA) | ||
o.payload.CommitSHA, err = gv.ResolveRevision(o.payload.CommitSHA) | ||
if err != nil { | ||
return err | ||
|
@@ -157,14 +174,19 @@ func (o *reportEvidenceCommitJiraOptions) run(args []string) error { | |
// more info: https://support.atlassian.com/jira-software-cloud/docs/what-is-an-issue/#Workingwithissues-Projectandissuekeys | ||
jiraIssueKeyPattern := `[A-Z][A-Z0-9]{1,9}-[0-9]+` | ||
|
||
issueIDs, err := gv.MatchPatternInCommitMessageORBranchName(jiraIssueKeyPattern, o.payload.CommitSHA) | ||
issueIDs, commitInfo, err := gv.MatchPatternInCommitMessageORBranchName(jiraIssueKeyPattern, o.payload.CommitSHA) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
logger.Debug("Checked for Jira issue references in Git commit %s on branch %s commit message:\n%s", commitInfo.Sha1, commitInfo.Branch, commitInfo.Message) | ||
logger.Debug("the following Jira references are found in commit message or branch name: %v", issueIDs) | ||
|
||
if len(issueIDs) == 0 && o.assert { | ||
return fmt.Errorf("no Jira references are found in commit message or branch name") | ||
} | ||
|
||
issueLog := "" | ||
issueFoundCount := 0 | ||
for _, issueID := range issueIDs { | ||
result, err := jc.GetJiraIssueInfo(issueID) | ||
if err != nil { | ||
|
@@ -174,9 +196,13 @@ func (o *reportEvidenceCommitJiraOptions) run(args []string) error { | |
issueExistLog := "issue not found" | ||
if result.IssueExists { | ||
issueExistLog = "issue found" | ||
issueFoundCount++ | ||
} | ||
issueLog += fmt.Sprintf("\n\t%s: %s", result.IssueID, issueExistLog) | ||
} | ||
if issueFoundCount != len(issueIDs) && o.assert { | ||
return fmt.Errorf("missing Jira issues from references found in commit message or branch name%s", issueLog) | ||
} | ||
|
||
form, cleanupNeeded, evidencePath, err := newEvidenceForm(o.payload, o.evidencePaths) | ||
// if we created a tar package, remove it after uploading it | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -173,6 +173,32 @@ func (suite *CommitEvidenceJiraCommandTestSuite) TestCommitEvidenceJiraCommandCm | |
--build-url example.com %s`, suite.tmpDir, suite.defaultKosliArguments), | ||
golden: "Error: required flag(s) \"commit\" not set\n", | ||
}, | ||
{ | ||
wantError: true, | ||
name: "assert for non-existing Jira issue gives an error", | ||
cmd: fmt.Sprintf(`report evidence commit jira --name jira-validation | ||
--jira-base-url https://kosli-test.atlassian.net --jira-username [email protected] | ||
--repo-root %s | ||
--assert | ||
--build-url example.com %s`, suite.tmpDir, suite.defaultKosliArguments), | ||
goldenRegex: "Error: missing Jira issues from references found in commit message or branch name.*", | ||
additionalConfig: jiraTestsAdditionalConfig{ | ||
commitMessage: "SAMI-1 test commit", | ||
}, | ||
}, | ||
{ | ||
wantError: true, | ||
name: "assert for no Jira issue reference gives an error", | ||
cmd: fmt.Sprintf(`report evidence commit jira --name jira-validation | ||
--jira-base-url https://kosli-test.atlassian.net --jira-username [email protected] | ||
--repo-root %s | ||
--assert | ||
--build-url example.com %s`, suite.tmpDir, suite.defaultKosliArguments), | ||
goldenRegex: "Error: no Jira references are found in commit message or branch name", | ||
additionalConfig: jiraTestsAdditionalConfig{ | ||
commitMessage: "test commit without reference", | ||
}, | ||
}, | ||
} | ||
for _, test := range tests { | ||
funcName(test, suite) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters