Hi Parichay,

I meant changing the constructor to

public ForkMergeRequestDiscoveryTrait(int strategyId, SCMHeadAuthority
trust) {

until Structs plugin supports parameters with parameterized type.

I opened a pull request to add some support for parameterized types to
Structs plugin:
https://github.com/jenkinsci/structs-plugin/pull/52

I tested the fix with Job DSL. It will enable the DSL syntax from my
previous post.

Regards,
Daniel


On Mon, Aug 19, 2019 at 5:39 PM Parichay Barpanda <
[email protected]> wrote:

> Thanks Daniel. But I didn't understand by what you meant "remove the type
> parameters". I was able to configure the trait using `configure` block.
> https://gist.github.com/baymac/f1a2249a0ec7b999c057056937e752a6
>
> On Saturday, August 17, 2019 at 5:09:03 PM UTC+5:30, Daniel Spilker wrote:
>>
>> Hi Parichay,
>>
>> the Job DSL script would be this:
>>
>> organizationFolder('example') {
>>   organizations {
>>     gitLabSCMNavigator {
>>       projectOwner('test')
>>       traits {
>>         gitLabForkDiscovery {
>>           strategyId(42)
>>           trust {
>>             gitLabTrustNobody()
>>           }
>>         }
>>       }
>>     }
>>   }
>> }
>>
>> But the script will fail. The problem is caused by the "trust"
>> constructor parameter of ForkMergeRequestDiscoveryTrait. Job DSL uses
>> the Structs plugin for introspection of Describables. Unfortunately Structs
>> does not handle parameter types with generics except for sub classes of
>> java.util.Collection. So the trait will not be shown in the API viewer.
>>
>> To check if a class is supported by Structs (and Job DSL), run the
>> following in the Jenkins script console:
>>
>> org.jenkinsci.plugins.structs.describable.DescribableModel.of(io.jenkins.plugins.gitlabbranchsource.ForkMergeRequestDiscoveryTrait)
>>
>> The result will be
>>
>> ForkMergeRequestDiscoveryTrait(strategyId: int, trust: 
>> java.lang.UnsupportedOperationException: do not know how to categorize 
>> attributes of type jenkins.scm.api.trait.SCMHeadAuthority<? super 
>> io.jenkins.plugins.gitlabbranchsource.GitLabSCMSourceRequest, ? extends 
>> jenkins.scm.api.mixin.ChangeRequestSCMHead2, ? extends 
>> jenkins.scm.api.SCMRevision>)
>>
>> As a workaround, you can remove the type parameters from the "trust"
>> constructor parameter.
>>
>> @Jesse: would it be feasible to fallback to the raw type when a
>> parameterized type is detected?
>>
>> https://github.com/jenkinsci/structs-plugin/blob/structs-parent-1.20/plugin/src/main/java/org/jenkinsci/plugins/structs/describable/ParameterType.java#L104
>>
>> Regards,
>> Daniel
>>
>>
>> On Fri, Aug 16, 2019 at 3:11 PM Parichay Barpanda <[email protected]>
>> wrote:
>>
>>> Hi all,
>>>
>>> I am trying to configure GitLab Branch Source Plugin organizational
>>> folder using Job DSL. But unfortunately job dsl api viewer doesn't detect 
>>> Fork
>>> Merge Request Trait
>>> <https://github.com/jenkinsci/gitlab-branch-source-plugin/blob/develop/src/main/java/io/jenkins/plugins/gitlabbranchsource/ForkMergeRequestDiscoveryTrait.java>.
>>> All the detected traits in Job dsl api viewer takes either
>>> int/boolean/string values. But in Fork Merge Request Trait the trust field
>>> takes an SCMHeadAuthority object. How does one configure Job DSL with fork
>>> `change request` trait for any of the branch source plugin?
>>>
>>> Can someone help me with figuring out what is wrong here. I have the
>>> following cases:
>>>
>>> 1. Job DSL doesn't support Fork Merge Request Trait.
>>>
>>> 2. There is something wrong with the impl of Fork Merge Request Trait.
>>>
>>> 3. Our Job DSL configuration is incorrect (note unable to configure fork
>>> merge request in this configuration):
>>>
>>> organizationFolder(name) {
>>>       organizations {
>>>         displayName(config.displayName)
>>>         description(orgDescription)
>>>         gitLabSCMNavigator {
>>>           projectOwner(config.group)
>>>           credentialsId('gitlab_ssh_key')
>>>           serverName('git.3shape.local')
>>>           traits {
>>>             subGroupProjectDiscoveryTrait() // discover projects inside
>>> subgroups
>>>             gitLabBranchDiscovery {
>>>               strategyId(3) // discover all branches
>>>             }
>>>             originMergeRequestDiscoveryTrait {
>>>               strategyId(1) // discover MRs and merge them with target
>>> branch
>>>             }
>>>             gitLabTagDiscovery() // discover tags
>>>             gitLFSPullTrait()
>>>           }
>>>         }
>>>       }
>>>       orphanedItemStrategy {
>>>         discardOldItems {
>>>           daysToKeep(7)
>>>           numToKeep(10)
>>>         }
>>>       }
>>>       if (!isSandbox()) {
>>>         triggers {
>>>           periodicFolderTrigger {
>>>             interval('1d')
>>>           }
>>>         }
>>>       }
>>>       projectFactories {
>>>         workflowMultiBranchProjectFactory {
>>>           scriptPath('Jenkinsfile')
>>>         }
>>>       }
>>>     }
>>>
>>> 4. or something else?
>>>
>>> Thanks and Regards,
>>> Parichay
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Jenkins Developers" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/jenkinsci-dev/ba6639f7-a735-4e2f-9e69-61f58762d7fa%40googlegroups.com
>>> <https://groups.google.com/d/msgid/jenkinsci-dev/ba6639f7-a735-4e2f-9e69-61f58762d7fa%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> --
> You received this message because you are subscribed to the Google Groups
> "Jenkins Developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/jenkinsci-dev/331dfda5-1c82-45bb-b508-1c3658236444%40googlegroups.com
> <https://groups.google.com/d/msgid/jenkinsci-dev/331dfda5-1c82-45bb-b508-1c3658236444%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-dev/CAKqW32CqQimaZ4v%2BkQ1sMuWWuUeyGU9jzb-5Q4sVUnMevpwRBw%40mail.gmail.com.

Reply via email to