steps scripted plugin node how example create jenkins groovy cloudbees jenkins-workflow

scripted - plugin pipeline jenkins



Obtener nombre de usuario de Jenkins Workflow(Pipeline) Plugin (7)

¿Intentaste instalar el plugin Build User Vars ? Si es así, deberías poder correr

node { wrap([$class: ''BuildUser'']) { def user = env.BUILD_USER_ID } }

o similar.

Estoy usando el plugin Pipeline en Jenkins by Clouldbees (el nombre era Workflow plugin antes), estoy tratando de obtener el nombre de usuario en el script Groovy pero no puedo lograrlo.

stage ''checkout svn'' node(''master'') { // Get the user name logged in Jenkins }


Aquí hay una versión ligeramente más corta que no requiere el uso de variables de entorno:

@NonCPS def getBuildUser() { return currentBuild.rawBuild.getCause(Cause.UserIdCause).getUserId() }

El uso de rawBuild requiere que esté en un bloque @NonCPS .


Es posible hacer esto sin un complemento (suponiendo que JOB_BASE_NAME y BUILD_ID estén en el entorno):

def job = Jenkins.getInstance().getItemByFullName(env.JOB_BASE_NAME, Job.class) def build = job.getBuildByNumber(env.BUILD_ID as int) def userId = build.getCause(Cause.UserIdCause).getUserId()

También hay un getUserName, que devuelve el nombre completo del usuario.


He modificado la respuesta de @shawn derik para que funcione en mi canalización:

stage("preserve build user") { wrap([$class: ''BuildUser'']) { GET_BUILD_USER = sh ( script: ''echo "${BUILD_USER}"'', returnStdout: true).trim() } }

Luego puedo hacer referencia a esa variable más adelante pasándola o en el mismo ámbito que $ {GET_BUILD_USER}. Instalé el mismo complemento referenciado.


Para que funcione con Jenkins Pipeline:

Instalar el plugin vars de compilación del usuario

Luego ejecuta lo siguiente:

pipeline { agent any stages { stage(''build user'') { steps { wrap([$class: ''BuildUser'']) { sh ''echo "${BUILD_USER}"'' } } } } }


//Below is a generic groovy function to get the XML metadata for a Jenkins build. //curl the env.BUILD_URL/api/xml parse it with grep and return the string //I did an or true on curl, but possibly there is a better way //echo -e "some_string /c" will always return some_string without /n char //use the readFile() and return the string def GetUserId(){ sh """ /usr/bin/curl -k -s -u / /$USERNAME:/$PASSWORD -o / /tmp/api.xml / /$BUILD_URL/api/xml || true THE_USERID=`cat /tmp/api.xml | grep -oP ''(?<=<userId>).*?(?=</userId>)''` echo -e "/$THE_USERID //c" > /tmp/user_id.txt """ def some_userid = readFile("/tmp/user_id.txt") some_userid }


def jobUserId, jobUserName //then somewhere wrap([$class: ''BuildUser'']) { jobUserId = "${BUILD_USER_ID}" jobUserName = "${BUILD_USER}" } //then println("Started By: ${jobUserName}")

Estábamos usando este plugin: Build User Vars Plugin . Más variables están disponibles.