From 1ad1bc1cf290982c736c6dd1b8f4478131502876 Mon Sep 17 00:00:00 2001 From: Brad Williams Date: Mon, 16 Mar 2026 09:39:22 -0400 Subject: [PATCH] Bumping to the latest/greatest jira-lifecycle-plugin rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- go.mod | 7 +- go.sum | 12 ++-- pkg/jira/jira_test.go | 22 +++---- .../pkg/helpers/helpers.go | 65 +++++++++++-------- vendor/modules.txt | 10 ++- 5 files changed, 63 insertions(+), 53 deletions(-) diff --git a/go.mod b/go.mod index 579bc9d2d..aa03f65e4 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/hashicorp/go-retryablehttp v0.7.7 github.com/hashicorp/golang-lru v1.0.2 github.com/opencontainers/go-digest v1.0.0 - github.com/openshift-eng/jira-lifecycle-plugin v0.0.0-20240710130641-608a3c0b33ae + github.com/openshift-eng/jira-lifecycle-plugin v0.0.0-20260316124234-fc8cf3e48910 github.com/openshift/api v0.0.0-20260226052804-beff70de904a github.com/openshift/build-machinery-go v0.0.0-20250530140348-dc5b2804eeee github.com/openshift/ci-tools v0.0.0-20240710031808-de122ac79fa9 @@ -45,8 +45,8 @@ require ( google.golang.org/api v0.233.0 gopkg.in/fsnotify.v1 v1.4.7 gopkg.in/robfig/cron.v2 v2.0.0-20150107220207-be2e0b0deed5 - k8s.io/api v0.34.1 - k8s.io/apimachinery v0.34.1 + k8s.io/api v0.34.2 + k8s.io/apimachinery v0.34.2 k8s.io/client-go v0.34.1 k8s.io/code-generator v0.34.1 k8s.io/component-base v0.34.1 @@ -101,7 +101,6 @@ require ( go.yaml.in/yaml/v2 v2.4.2 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.45.0 // indirect - golang.org/x/tools/go/expect v0.1.1-deprecated // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect sigs.k8s.io/randfill v1.0.0 // indirect sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect diff --git a/go.sum b/go.sum index 80c1b5157..2972fec61 100644 --- a/go.sum +++ b/go.sum @@ -508,8 +508,8 @@ github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/openshift-eng/jira-lifecycle-plugin v0.0.0-20240710130641-608a3c0b33ae h1:QfwPnBBiomFBXpqO3FXtpShG4qUJve+fA4nRIGuL66M= -github.com/openshift-eng/jira-lifecycle-plugin v0.0.0-20240710130641-608a3c0b33ae/go.mod h1:musOQCo+YGU+82k+N9jD00WPjvzVfCVOUY+Abd/MWog= +github.com/openshift-eng/jira-lifecycle-plugin v0.0.0-20260316124234-fc8cf3e48910 h1:XWX/qAavEuGSLde++EMfytZIRk8e8H/Q6aHCN1qP4Yw= +github.com/openshift-eng/jira-lifecycle-plugin v0.0.0-20260316124234-fc8cf3e48910/go.mod h1:gRqwjo3Gioar0vk/ZNz/7K3+yTRyVJRacI2glJ46KaY= github.com/openshift/api v0.0.0-20260226052804-beff70de904a h1:3mBAecolw1crGJR1pUk4YVmFbwt6upeyALOsu6L0MCE= github.com/openshift/api v0.0.0-20260226052804-beff70de904a/go.mod h1:ZYAxo9t1AALeEotN07tNzIvqqqWSxcZIqMUKnY/xCeQ= github.com/openshift/build-machinery-go v0.0.0-20250530140348-dc5b2804eeee h1:+Sp5GGnjHDhT/a/nQ1xdp43UscBMr7G5wxsYotyhzJ4= @@ -1143,13 +1143,13 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/api v0.19.13/go.mod h1:xNpkpfCFYnVjbmKqIInsBPqUROkHefMc42rUA92XkdU= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI= k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc= k8s.io/apimachinery v0.19.13/go.mod h1:RMyblyny2ZcDQ/oVE+lC31u7XTHUaSXEK2IhgtwGxfc= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= k8s.io/apiserver v0.34.1 h1:U3JBGdgANK3dfFcyknWde1G6X1F4bg7PXuvlqt8lITA= k8s.io/apiserver v0.34.1/go.mod h1:eOOc9nrVqlBI1AFCvVzsob0OxtPZUCPiUJL45JOTBG0= k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= diff --git a/pkg/jira/jira_test.go b/pkg/jira/jira_test.go index fd4b5c122..c99c792a1 100644 --- a/pkg/jira/jira_test.go +++ b/pkg/jira/jira_test.go @@ -131,7 +131,7 @@ func TestGetPRS(t *testing.T) { } func TestIssueTargetReleaseCheck(t *testing.T) { - issueJSON := "{\n \"id\":\"0000\",\n\"key\":\"OCPBUGS-0000\",\n\"fields\":{\n \"customfield_12319940\": [\n{\n\"name\": \"4.11.Z\"\n}\n]\n}\n}" + issueJSON := "{\n \"id\":\"0000\",\n\"key\":\"OCPBUGS-0000\",\n\"fields\":{\n \"customfield_10855\": [\n{\n\"name\": \"4.11.Z\"\n}\n]\n}\n}" var issue jira.Issue err := json.Unmarshal([]byte(issueJSON), &issue) @@ -950,13 +950,13 @@ const ( "description": "Status ON_QA", "name": "ON_QA" }, - "customfield_12315948": { + "customfield_10470": { "name": "qa_contact@redhat.com", "key": "qa_contact", "emailAddress": "qa_contact@redhat.com", "displayName": "Jack Smith" }, - "customfield_12319940": [ + "customfield_10855": [ { "self": "https://issues.redhat.com/rest/api/2/version/12390168", "id": "12390168", @@ -979,13 +979,13 @@ const ( "description": "Issue is verified", "name": "Verified" }, - "customfield_12315948": { + "customfield_10470": { "name": "qa_contact@redhat.com", "key": "qa_contact", "emailAddress": "qa_contact@redhat.com", "displayName": "Jack Smith" }, - "customfield_12319940": [ + "customfield_10855": [ { "self": "https://issues.redhat.com/rest/api/2/version/12390168", "id": "12390168", @@ -1008,13 +1008,13 @@ const ( "description": "Issue is verified", "name": "Verified" }, - "customfield_12315948": { + "customfield_10470": { "name": "qa_contact@redhat.com", "key": "qa_contact", "emailAddress": "qa_contact@redhat.com", "displayName": "Jack Smith" }, - "customfield_12319940": [ + "customfield_10855": [ { "self": "https://issues.redhat.com/rest/api/2/version/12390168", "id": "12390168", @@ -1066,13 +1066,13 @@ const ( "description": "Issue is in progress", "name": "In Progress" }, - "customfield_12315948": { + "customfield_10470": { "name": "qa_contact@redhat.com", "key": "qa_contact", "emailAddress": "qa_contact@redhat.com", "displayName": "Jack Smith" }, - "customfield_12319940": [ + "customfield_10855": [ { "self": "https://issues.redhat.com/rest/api/2/version/12390168", "id": "12390168", @@ -1095,13 +1095,13 @@ const ( "description": "Status MODIFIED", "name": "MODIFIED" }, - "customfield_12315948": { + "customfield_10470": { "name": "qa_contact@redhat.com", "key": "qa_contact", "emailAddress": "qa_contact@redhat.com", "displayName": "Jack Smith" }, - "customfield_12319940": [ + "customfield_10855": [ { "self": "https://issues.redhat.com/rest/api/2/version/12390168", "id": "12390168", diff --git a/vendor/github.com/openshift-eng/jira-lifecycle-plugin/pkg/helpers/helpers.go b/vendor/github.com/openshift-eng/jira-lifecycle-plugin/pkg/helpers/helpers.go index a85aa5ebf..a0c4cddfc 100644 --- a/vendor/github.com/openshift-eng/jira-lifecycle-plugin/pkg/helpers/helpers.go +++ b/vendor/github.com/openshift-eng/jira-lifecycle-plugin/pkg/helpers/helpers.go @@ -11,20 +11,20 @@ import ( ) const ( - QAContactField = "customfield_12315948" - SeverityField = "customfield_12316142" - TargetVersionField = "customfield_12319940" - TargetVersionFieldOld = "customfield_12323140" - ReleaseBlockerField = "customfield_12319743" - ReleaseNoteTextField = "customfield_12317313" - SprintField = "customfield_12310940" - ReleaseNoteTypeField = "customfield_12320850" + QAContactField = "customfield_10470" + SeverityField = "customfield_10840" + TargetVersionField = "customfield_10855" + ReleaseBlockerField = "customfield_10847" + ReleaseNoteTextField = "customfield_10783" + SprintField = "customfield_10020" + ReleaseNoteTypeField = "customfield_10785" + ContributorsField = "customfield_10479" ) // GetUnknownField will attempt to get the specified field from the Unknowns struct and unmarshal // the value into the provided function. If the field is not set, the first return value of this // function will return false. -func GetUnknownField(field string, issue *jira.Issue, fn func() interface{}) (bool, error) { +func GetUnknownField(field string, issue *jira.Issue, fn func() any) (bool, error) { obj := fn() if issue.Fields == nil || issue.Fields.Unknowns == nil { return false, nil @@ -33,6 +33,9 @@ func GetUnknownField(field string, issue *jira.Issue, fn func() interface{}) (bo if !ok { return false, nil } + if unknownField == nil { + return false, nil + } bytes, err := json.Marshal(unknownField) if err != nil { return true, fmt.Errorf("failed to process the custom field %s. Error : %v", field, err) @@ -45,7 +48,7 @@ func GetUnknownField(field string, issue *jira.Issue, fn func() interface{}) (bo // GetSprintField returns a raw interface for the Sprint value of an issue if it exists. Currently, the value // is only used during cloning, so no struct is currently needed for us to parse data from the interface. -func GetSprintField(issue *jira.Issue) interface{} { +func GetSprintField(issue *jira.Issue) any { if issue.Fields == nil || issue.Fields.Unknowns == nil { return nil } @@ -64,7 +67,7 @@ func GetIssueSecurityLevel(issue *jira.Issue) (*SecurityLevel, error) { // as part of the issue fields // See https://github.com/andygrunwald/go-jira/issues/456 var obj *SecurityLevel - isSet, err := GetUnknownField("security", issue, func() interface{} { + isSet, err := GetUnknownField("security", issue, func() any { obj = &SecurityLevel{} return obj }) @@ -83,7 +86,7 @@ type SecurityLevel struct { func GetIssueQaContact(issue *jira.Issue) (*jira.User, error) { var obj *jira.User - isSet, err := GetUnknownField(QAContactField, issue, func() interface{} { + isSet, err := GetUnknownField(QAContactField, issue, func() any { obj = &jira.User{} return obj }) @@ -95,14 +98,7 @@ func GetIssueQaContact(issue *jira.Issue) (*jira.User, error) { func GetIssueTargetVersion(issue *jira.Issue) ([]*jira.Version, error) { var obj *[]*jira.Version - isSet, err := GetUnknownField(TargetVersionField, issue, func() interface{} { - obj = &[]*jira.Version{{}} - return obj - }) - if isSet && obj != nil && *obj != nil { - return *obj, err - } - isSet, err = GetUnknownField(TargetVersionFieldOld, issue, func() interface{} { + isSet, err := GetUnknownField(TargetVersionField, issue, func() any { obj = &[]*jira.Version{{}} return obj }) @@ -114,7 +110,7 @@ func GetIssueTargetVersion(issue *jira.Issue) ([]*jira.Version, error) { func GetIssueSeverity(issue *jira.Issue) (*CustomField, error) { var obj *CustomField - isSet, err := GetUnknownField(SeverityField, issue, func() interface{} { + isSet, err := GetUnknownField(SeverityField, issue, func() any { obj = &CustomField{} return obj }) @@ -133,7 +129,7 @@ type CustomField struct { func GetIssueReleaseNoteText(issue *jira.Issue) (*string, error) { var obj *string - isSet, err := GetUnknownField(ReleaseNoteTextField, issue, func() interface{} { + isSet, err := GetUnknownField(ReleaseNoteTextField, issue, func() any { var field string obj = &field return obj @@ -146,7 +142,7 @@ func GetIssueReleaseNoteText(issue *jira.Issue) (*string, error) { func GetIssueReleaseNoteType(issue *jira.Issue) (*CustomField, error) { var obj *CustomField - isSet, err := GetUnknownField(ReleaseNoteTypeField, issue, func() interface{} { + isSet, err := GetUnknownField(ReleaseNoteTypeField, issue, func() any { obj = &CustomField{} return obj }) @@ -159,11 +155,11 @@ func GetIssueReleaseNoteType(issue *jira.Issue) (*CustomField, error) { var activeSprintReg = regexp.MustCompile(",state=ACTIVE,") var sprintIDReg = regexp.MustCompile("id=([0-9]+)") -func GetActiveSprintID(sprintField interface{}) (int, error) { +func GetActiveSprintID(sprintField any) (int, error) { if sprintField == nil { return -1, nil } - sprintFieldSlice, ok := sprintField.([]interface{}) + sprintFieldSlice, ok := sprintField.([]any) if !ok { return -1, errors.New("failed to convert sprint field to slice of interfaces") } @@ -174,7 +170,7 @@ func GetActiveSprintID(sprintField interface{}) (int, error) { sprintID, err := strconv.Atoi(submatch[1]) if err != nil { // should be impossible based on the regex - return -1, fmt.Errorf("Failed to parse sprint ID. Err: %w", err) + return -1, fmt.Errorf("failed to parse sprint ID. Err: %w", err) } return sprintID, nil } @@ -182,3 +178,20 @@ func GetActiveSprintID(sprintField interface{}) (int, error) { } return -1, nil } + +type Contributor struct { + Self string `json:"self"` + Name string `json:"name"` +} + +func GetIssueContributors(issue *jira.Issue) (*[]Contributor, error) { + var obj *[]Contributor + isSet, err := GetUnknownField(ContributorsField, issue, func() any { + obj = &[]Contributor{} + return obj + }) + if !isSet { + return nil, err + } + return obj, err +} diff --git a/vendor/modules.txt b/vendor/modules.txt index 6860c1171..b78a64ee3 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -670,8 +670,8 @@ github.com/munnerz/goautoneg # github.com/opencontainers/go-digest v1.0.0 ## explicit; go 1.13 github.com/opencontainers/go-digest -# github.com/openshift-eng/jira-lifecycle-plugin v0.0.0-20240710130641-608a3c0b33ae -## explicit; go 1.21 +# github.com/openshift-eng/jira-lifecycle-plugin v0.0.0-20260316124234-fc8cf3e48910 +## explicit; go 1.25.5 github.com/openshift-eng/jira-lifecycle-plugin/pkg/helpers # github.com/openshift/api v0.0.0-20260226052804-beff70de904a ## explicit; go 1.24.0 @@ -1173,8 +1173,6 @@ golang.org/x/tools/internal/stdlib golang.org/x/tools/internal/typeparams golang.org/x/tools/internal/typesinternal golang.org/x/tools/internal/versions -# golang.org/x/tools/go/expect v0.1.1-deprecated -## explicit; go 1.23.0 # golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da ## explicit; go 1.18 golang.org/x/xerrors @@ -1445,7 +1443,7 @@ gopkg.in/yaml.v2 # gopkg.in/yaml.v3 v3.0.1 ## explicit gopkg.in/yaml.v3 -# k8s.io/api v0.34.1 +# k8s.io/api v0.34.2 ## explicit; go 1.24.0 k8s.io/api/admission/v1 k8s.io/api/admission/v1beta1 @@ -1507,7 +1505,7 @@ k8s.io/api/storage/v1 k8s.io/api/storage/v1alpha1 k8s.io/api/storage/v1beta1 k8s.io/api/storagemigration/v1alpha1 -# k8s.io/apimachinery v0.34.1 +# k8s.io/apimachinery v0.34.2 ## explicit; go 1.24.0 k8s.io/apimachinery/pkg/api/equality k8s.io/apimachinery/pkg/api/errors