It's possible to use jobDSL from Pipeline. (Im using multibranch pipeline as it allows to configure pipelineTriggers)
You can configure your seed job to be a pipeline like this:
def gitCredentialsId = 'github-jenkins'
def jobsRepoName = 'https://github.com/my-jobs-repo.git'
def sharedLibraryRepoName = 'https://github.com/shared-library-repo.git'
properties([
pipelineTriggers([githubPush()])
])
pipeline {
agent any
stages{
stage('Seed Job') {
agent any
steps {
checkout([
$class: 'GitSCM',
branches: [[name: '*/main']],
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'shared-library']],
submoduleCfg: [],
userRemoteConfigs: [[credentialsId: gitCredentialsId, url: sharedLibraryRepoName ]]
])
git url: jobsRepoName, changelog: false, credentialsId: gitCredentialsId, poll: false, branch: 'main'
jobDsl targets: 'jobs/**/*_job.groovy', additionalClasspath: 'shared-library/src'
}
}
}
}
This way we can configure our seed job to checkout shared libraries repo into workspace subdirectory shared-library and specify additionalClasspath for jobDSL groovy scripts
So in your groovy scripts you can simply use import without @Library annotation