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/CAKqW32BGcjAZFF4fQA%3DDjM%2B9N%2Bf7VCn6pZ6%2Bh%3Di0TH3-za-DTA%40mail.gmail.com.