Задать вопрос
@Billy_Pluto

Как исправить ошибку «caught: BUG! exception in phase 'semantic analysis' in source unit version 65»?

Привет всем!

Я столкнулся с ошибкой в Jenkins, и мне нужна ваша помощь. При запуске моего скрипта появляется следующая ошибка:
"caught: BUG! exception in phase 'semantic analysis' in source unit version 65 jenkins"

Хотел создать билд в дженкинсе который будет при указании OU в AD показывать пользователей из этого OU, и чтобы данный параметр применялся в скрипте PowerShell.
Сам скрипт Powershell сбрасывает пароль пользователя, и с ним все хорошо. Но вот Jenkins выдает ошибку:(
Пробовал добавлять путь к Java в System Environment Variables, но все еще получаю такую ошибку.
JDK стоит 21-й версии,в инете загуглил и предлагают 11-ю поставить, буду пробовать этот метод также.
Сам скрипт:
1. Для поиска OU
import javax.naming.Context
import javax.naming.directory.InitialDirContext
import javax.naming.directory.SearchControls
import groovy.json.JsonOutput

def ldapUrl = 'ldap://domain.com:389'
def ldapBase = 'DC=domain,DC=com'
def ldapUser = 'CN=admin,DC=domain,DC=com' 
def ldapPassword = 'Password' 

Hashtable<String, String> ldapEnv = new Hashtable<String, String>()
ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory")
ldapEnv.put(Context.PROVIDER_URL, ldapUrl)
ldapEnv.put(Context.SECURITY_AUTHENTICATION, "simple")
ldapEnv.put(Context.SECURITY_PRINCIPAL, ldapUser)
ldapEnv.put(Context.SECURITY_CREDENTIALS, ldapPassword)

def ctx = new InitialDirContext(ldapEnv)
def searchControls = new SearchControls()
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE)
def results = ctx.search(ldapBase, "(objectClass=organizationalUnit)", searchControls)

def ouList = []
while (results.hasMore()) {
    def result = results.next()
    def dn = result.getNameInNamespace()
    ouList.add(dn)
}

return JsonOutput.toJson(ouList)

2. Для поиска пользователей из этого OU:
import javax.naming.Context
import javax.naming.directory.InitialDirContext
import javax.naming.directory.SearchControls
import groovy.json.JsonOutput

def ldapUrl = 'ldap://domain.com:389'
def ldapBase = params['OU_Selection']
def ldapUser = 'CN=admin,DC=domain,DC=com'
def ldapPassword = 'your-password'

Hashtable<String, String> ldapEnv = new Hashtable<String, String>()
ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory")
ldapEnv.put(Context.PROVIDER_URL, ldapUrl)
ldapEnv.put(Context.SECURITY_AUTHENTICATION, "simple")
ldapEnv.put(Context.SECURITY_PRINCIPAL, ldapUser)
ldapEnv.put(Context.SECURITY_CREDENTIALS, ldapPassword)

def ctx = new InitialDirContext(ldapEnv)
def searchControls = new SearchControls()
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE)
def results = ctx.search(ldapBase, "(objectClass=user)", searchControls)

def userList = []
while (results.hasMore()) {
    def result = results.next()
    def cn = result.attributes.get("cn").get()
    userList.add(cn)
}

return JsonOutput.toJson(userList)


Понимаю, что Jenkins не совсем предназначен для таких целей, но большая часть задач нашей HelpDesk команды уже реализована через него, и они просят улучшить параметры билдов под такой формат.
  • Вопрос задан
  • 49 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы