Created
February 7, 2018 10:32
-
-
Save samuelstein/bc2dc10d32b533bccdb4646ebc4b4e1d to your computer and use it in GitHub Desktop.
Jenkins Seed job for Gitlab projects
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
// jenkins job dsl plugin is required! | |
// This job will be run through the gitlab projects (except user owned ones) and generate jenkins jobs with maven goal. if there should be no job generated, then the label 'nojob' must be set in repository config. | |
// reads projects from gitlab and creates jobs | |
def gitUrl = '$URL' | |
def privateToken = '$TOKEN' | |
def allowedNamespaces = ['product', 'innovation'] | |
def reposToIgnoreTag = 'nojob' | |
def jobNames = [] | |
// Reading projects from GitLab REST API | |
def projectList = new URL("${gitUrl}/api/v4/projects?page=1&per_page=500&private_token=${privateToken}") | |
def projects = new groovy.json.JsonSlurper().parse(projectList.newReader()) | |
projects.each { | |
try { | |
def id = it.id | |
def projectName = it.name | |
def projectNameWithNamespace = it.path_with_namespace | |
def repoUrl = it.http_url_to_repo | |
def description = it.description | |
//only create job if project is allowed | |
if (allowedNamespaces.contains(projectNameWithNamespace.split('/')[0])) { | |
if (!it.tag_list.contains(reposToIgnoreTag)) { | |
println "Creating job for project: ${projectName}" | |
job(projectName) { | |
//description(description) | |
wrappers { | |
configFiles { | |
globalMavenSettings('0cd0fe22-09da-4d9e-bfcf-45cdbcbf5ba5') { | |
targetLocation('settings.xml') | |
variable('GLOBAL_CONFIG_FILE') | |
} | |
} | |
} | |
scm { | |
git { | |
remote { | |
url(repoUrl) | |
branch('master') | |
credentials('dbcd9493-5363-442d-b55d-1d1ac96734d8') | |
} | |
} | |
} | |
triggers { | |
gitlabPush { | |
buildOnPushEvents(true) | |
buildOnMergeRequestEvents(true) | |
} | |
} | |
steps { | |
maven('-e -B -s $GLOBAL_CONFIG_FILE clean deploy') | |
// dsl { | |
//external('jobs/*.groovy') | |
//} | |
} | |
jobNames.add(projectName) | |
} | |
} | |
} | |
} catch (Exception ex) { | |
println("job creation failed for project: ${projectName}") | |
} | |
} | |
listView('JOBVIEW') { | |
jobs { | |
jobNames.each { | |
name(it) | |
} | |
} | |
columns { | |
status() | |
weather() | |
name() | |
lastSuccess() | |
lastFailure() | |
lastDuration() | |
buildButton() | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment