diff --git a/bootstrap/Workspace_Management/Generate_Workspace.groovy b/bootstrap/Workspace_Management/Generate_Workspace.groovy index 5fca393..44fe3d8 100644 --- a/bootstrap/Workspace_Management/Generate_Workspace.groovy +++ b/bootstrap/Workspace_Management/Generate_Workspace.groovy @@ -6,7 +6,15 @@ def workspaceManagementFolder = folder(workspaceManagementFolderName) { displayN // Jobs def generateWorkspaceJob = freeStyleJob(workspaceManagementFolderName + "/Generate_Workspace") - + +def adopLdapEnabled = ''; + +try{ + adopLdapEnabled = "${ADOP_LDAP_ENABLED}".toBoolean(); +}catch(MissingPropertyException ex){ + adopLdapEnabled = true; +} + // Setup generateWorkspaceJob generateWorkspaceJob.with{ parameters{ @@ -20,26 +28,52 @@ generateWorkspaceJob.with{ preBuildCleanup() injectPasswords() maskPasswords() - environmentVariables { - env('DC',"${LDAP_ROOTDN}") - env('OU_GROUPS','ou=groups') - env('OU_PEOPLE','ou=people') - env('OUTPUT_FILE','output.ldif') - } - credentialsBinding { - usernamePassword("LDAP_ADMIN_USER", "LDAP_ADMIN_PASSWORD", "adop-ldap-admin") - } + if(adopLdapEnabled == true) + { + environmentVariables + { + env('DC', "${LDAP_ROOTDN}") + env('OU_GROUPS','ou=groups') + env('OU_PEOPLE','ou=people') + env('OUTPUT_FILE','output.ldif') + } + credentialsBinding + { + usernamePassword("LDAP_ADMIN_USER", "LDAP_ADMIN_PASSWORD", "adop-ldap-admin") + } + } + sshAgent("adop-jenkins-master") } steps { shell('''#!/bin/bash - # Validate Variables pattern=" |'" if [[ "${WORKSPACE_NAME}" =~ ${pattern} ]]; then echo "WORKSPACE_NAME contains a space, please replace with an underscore - exiting..." exit 1 fi''') - shell('''# LDAP + conditionalSteps + { + condition + { + shell(''' +if [ "${ADOP_ACL_ENABLED}" == "false" ] +then + exit 1 +fi +exit 0 + ''') + } + runner('DontRun') + steps { + systemGroovyScriptFile('${WORKSPACE}/workspaces/groovy/acl_admin.groovy') + systemGroovyScriptFile('${WORKSPACE}/workspaces/groovy/acl_developer.groovy') + systemGroovyScriptFile('${WORKSPACE}/workspaces/groovy/acl_viewer.groovy') + } + } + if(adopLdapEnabled == true) { + shell(''' +# LDAP ${WORKSPACE}/common/ldap/generate_role.sh -r "admin" -n "${WORKSPACE_NAME}" -d "${DC}" -g "${OU_GROUPS}" -p "${OU_PEOPLE}" -u "${ADMIN_USERS}" -f "${OUTPUT_FILE}" -w "${WORKSPACE}" ${WORKSPACE}/common/ldap/generate_role.sh -r "developer" -n "${WORKSPACE_NAME}" -d "${DC}" -g "${OU_GROUPS}" -p "${OU_PEOPLE}" -u "${DEVELOPER_USERS}" -f "${OUTPUT_FILE}" -w "${WORKSPACE}" ${WORKSPACE}/common/ldap/generate_role.sh -r "viewer" -n "${WORKSPACE_NAME}" -d "${DC}" -g "${OU_GROUPS}" -p "${OU_PEOPLE}" -u "${VIEWER_USERS}" -f "${OUTPUT_FILE}" -w "${WORKSPACE}" @@ -55,15 +89,14 @@ VIEWER_USERS=$(echo ${VIEWER_USERS} | tr ',' ' ') # Gerrit for user in $ADMIN_USERS $DEVELOPER_USERS $VIEWER_USERS do - username=$(echo ${user} | cut -d'@' -f1) - ${WORKSPACE}/common/gerrit/create_user.sh -g http://gerrit:8080/gerrit -u "${username}" -p "${username}" -done''') + username=$(echo ${user} | cut -d'@' -f1) + ${WORKSPACE}/common/gerrit/create_user.sh -g http://gerrit:8080/gerrit -u "${username}" -p "${username}" +done + ''') + } dsl { - external("workspaces/jobs/**/*.groovy") + external("workspaces/jobs/**/*.groovy") } - systemGroovyScriptFile('${WORKSPACE}/workspaces/groovy/acl_admin.groovy') - systemGroovyScriptFile('${WORKSPACE}/workspaces/groovy/acl_developer.groovy') - systemGroovyScriptFile('${WORKSPACE}/workspaces/groovy/acl_viewer.groovy') } scm { git { @@ -75,4 +108,4 @@ done''') branch("*/master") } } -} +} diff --git a/workspaces/jobs/jobs.groovy b/workspaces/jobs/jobs.groovy index 5cbfd07..4310b22 100644 --- a/workspaces/jobs/jobs.groovy +++ b/workspaces/jobs/jobs.groovy @@ -11,6 +11,14 @@ def projectManagementFolder = folder(projectManagementFolderName) { displayName( // Jobs def generateProjectJob = freeStyleJob(projectManagementFolderName + "/Generate_Project") +def adopLdapEnabled = ''; + +try{ + adopLdapEnabled = "${ADOP_LDAP_ENABLED}".toBoolean(); +}catch(MissingPropertyException ex){ + adopLdapEnabled = true; +} + // Setup Generate_Project generateProjectJob.with{ parameters{ @@ -27,57 +35,76 @@ generateProjectJob.with{ preBuildCleanup() injectPasswords() maskPasswords() - environmentVariables { - env('DC',"${DC}") - env('OU_GROUPS','ou=groups') - env('OU_PEOPLE','ou=people') - env('OUTPUT_FILE','output.ldif') - } - credentialsBinding { - usernamePassword("LDAP_ADMIN_USER", "LDAP_ADMIN_PASSWORD", "adop-ldap-admin") + if(adopLdapEnabled == true) + { + environmentVariables + { + env('DC', "${LDAP_ROOTDN}") + env('OU_GROUPS','ou=groups') + env('OU_PEOPLE','ou=people') + env('OUTPUT_FILE','output.ldif') + } + credentialsBinding + { + usernamePassword("LDAP_ADMIN_USER", "LDAP_ADMIN_PASSWORD", "adop-ldap-admin") + } } sshAgent("adop-jenkins-master") } - steps { - shell('''#!/bin/bash -e - + steps + { + shell('''#!/bin/bash # Validate Variables pattern=" |'" -if [[ "${PROJECT_NAME}" =~ ${pattern} ]]; then - echo "PROJECT_NAME contains a space, please replace with an underscore - exiting..." - exit 1 +if [[ "${WORKSPACE_NAME}" =~ ${pattern} ]]; then + echo "WORKSPACE_NAME contains a space, please replace with an underscore - exiting..." + exit 1 fi''') - shell('''set -e -# LDAP -${WORKSPACE}/common/ldap/generate_role.sh -r "admin" -n "${WORKSPACE_NAME}.${PROJECT_NAME}" -d "${DC}" -g "${OU_GROUPS}" -p "${OU_PEOPLE}" -u "${ADMIN_USERS}" -f "${OUTPUT_FILE}" -w "${WORKSPACE}" -${WORKSPACE}/common/ldap/generate_role.sh -r "developer" -n "${WORKSPACE_NAME}.${PROJECT_NAME}" -d "${DC}" -g "${OU_GROUPS}" -p "${OU_PEOPLE}" -u "${DEVELOPER_USERS}" -f "${OUTPUT_FILE}" -w "${WORKSPACE}" -${WORKSPACE}/common/ldap/generate_role.sh -r "viewer" -n "${WORKSPACE_NAME}.${PROJECT_NAME}" -d "${DC}" -g "${OU_GROUPS}" -p "${OU_PEOPLE}" -u "${VIEWER_USERS}" -f "${OUTPUT_FILE}" -w "${WORKSPACE}" + conditionalSteps + { + condition + { + shell(''' +if [ "${ADOP_ACL_ENABLED}" == "false" ] + then +exit 1 + fi +exit 0 + ''') + } + runner('DontRun') + steps { + systemGroovyScriptFile('${WORKSPACE}/workspaces/groovy/acl_admin.groovy') + systemGroovyScriptFile('${WORKSPACE}/workspaces/groovy/acl_developer.groovy') + systemGroovyScriptFile('${WORKSPACE}/workspaces/groovy/acl_viewer.groovy') + } + } + if(adopLdapEnabled == true){ + shell(''' + # LDAP + ${WORKSPACE}/common/ldap/generate_role.sh -r "admin" -n "${WORKSPACE_NAME}" -d "${DC}" -g "${OU_GROUPS}" -p "${OU_PEOPLE}" -u "${ADMIN_USERS}" -f "${OUTPUT_FILE}" -w "${WORKSPACE}" + ${WORKSPACE}/common/ldap/generate_role.sh -r "developer" -n "${WORKSPACE_NAME}" -d "${DC}" -g "${OU_GROUPS}" -p "${OU_PEOPLE}" -u "${DEVELOPER_USERS}" -f "${OUTPUT_FILE}" -w "${WORKSPACE}" + ${WORKSPACE}/common/ldap/generate_role.sh -r "viewer" -n "${WORKSPACE_NAME}" -d "${DC}" -g "${OU_GROUPS}" -p "${OU_PEOPLE}" -u "${VIEWER_USERS}" -f "${OUTPUT_FILE}" -w "${WORKSPACE}" -set +e -${WORKSPACE}/common/ldap/load_ldif.sh -h ldap -u "${LDAP_ADMIN_USER}" -p "${LDAP_ADMIN_PASSWORD}" -b "${DC}" -f "${OUTPUT_FILE}" -set -e + set +e + ${WORKSPACE}/common/ldap/load_ldif.sh -h ldap -u "${LDAP_ADMIN_USER}" -p "${LDAP_ADMIN_PASSWORD}" -b "${DC}" -f "${OUTPUT_FILE}" + set -e -ADMIN_USERS=$(echo ${ADMIN_USERS} | tr ',' ' ') -DEVELOPER_USERS=$(echo ${DEVELOPER_USERS} | tr ',' ' ') -VIEWER_USERS=$(echo ${VIEWER_USERS} | tr ',' ' ') + ADMIN_USERS=$(echo ${ADMIN_USERS} | tr ',' ' ') + DEVELOPER_USERS=$(echo ${DEVELOPER_USERS} | tr ',' ' ') + VIEWER_USERS=$(echo ${VIEWER_USERS} | tr ',' ' ') -# Gerrit -for user in $ADMIN_USERS $DEVELOPER_USERS $VIEWER_USERS -do - username=$(echo ${user} | cut -d'@' -f1) - ${WORKSPACE}/common/gerrit/create_user.sh -g http://gerrit:8080/gerrit -u "${username}" -p "${username}" -done''') - shell('''#!/bin/bash -ex -# Gerrit -source ${WORKSPACE}/projects/gerrit/configure.sh -# Generate second permission repo with enabled code-review -source ${WORKSPACE}/projects/gerrit/configure.sh -r permissions-with-review''') + # Gerrit + for user in $ADMIN_USERS $DEVELOPER_USERS $VIEWER_USERS + do + username=$(echo ${user} | cut -d'@' -f1) + ${WORKSPACE}/common/gerrit/create_user.sh -g http://gerrit:8080/gerrit -u "${username}" -p "${username}" + done + ''') + } dsl { - external("projects/jobs/**/*.groovy") + external("projects/jobs/**/*.groovy") } - systemGroovyScriptFile('${WORKSPACE}/projects/groovy/acl_admin.groovy') - systemGroovyScriptFile('${WORKSPACE}/projects/groovy/acl_developer.groovy') - systemGroovyScriptFile('${WORKSPACE}/projects/groovy/acl_viewer.groovy') } scm { git {