2016-03-09 13 views
8

से उपयोगकर्ता नाम प्राप्त करें मैं क्लॉल्बीस द्वारा नाम जेनकिंस में पाइपलाइन प्लगइन का उपयोग कर रहा हूं (नाम पहले वर्कफ़्लो प्लगइन था), मैं ग्रोवी लिपि में उपयोगकर्ता नाम प्राप्त करने का प्रयास कर रहा हूं लेकिन मैं सक्षम नहीं हूं इसे हासिल करें।जेनकिंस वर्कफ़्लो (पाइपलाइन) प्लगइन

stage 'checkout svn' 

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

उत्तर

17

क्या आपने Build User Vars plugin स्थापित करने का प्रयास किया था? यदि ऐसा है, तो आप

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

या इसी तरह के चलाने में सक्षम होना चाहिए।

+3

धन्यवाद :) बहुत अच्छा काम करता है मुझे उस प्लगइन के बारे में पता नहीं था, रिलीज नोट्स की जांच करके मुझे पता चला कि आखिरी अपडेट था, वर्कफ़्लो प्लगइन के साथ समर्थन! महान –

+1

मैं इसे पाइपलाइन नौकरी के साथ कोशिश कर रहा हूं। विकी का वर्णन है कि 'सेट जेनकिंस उपयोगकर्ता बिल्ड वैरिएबल' चेकमार्क होना चाहिए, लेकिन ऐसा लगता है कि केवल 'फ्रीस्टाइल प्रोजेक्ट' में उपलब्ध है। क्या मुझे कुछ और याद आ रहा है? – dothebart

+1

चेकबॉक्स केवल फ्रीस्टाइल नौकरियों के लिए है। लेकिन पाइपलाइन नौकरियों के लिए, यह पता लगाने के लिए कि क्या उपलब्ध है। 'स्निपेट जेनरेटर 'चेकबॉक्स, या https://your-jenkins.example.com/workflow-cps-snippetizer/dslReference पृष्ठ में' रैप: सामान्य बिल्ड रैपर 'पर स्क्रॉल करें। – MarkHu

3

यह एक प्लगइन के बिना ऐसा करना संभव है (JOB_BASE_NAME संभालने और BUILD_ID वातावरण में कर रहे हैं):

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() 

वहाँ भी एक getUserName है, जो उपयोगकर्ता का पूरा नाम देता है।

0
//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 
} 
1

यह जेनकींस पाइपलाइन के साथ काम करने के लिए:

pipeline { 
    agent any 

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

मेरे लिए काम किया! धन्यवाद। –

1

यहाँ एक से थोड़ा छोटा संस्करण है कि के उपयोग की आवश्यकता नहीं है:

स्थापित build user vars plugin

तो निम्नलिखित चलाने पर्यावरण चर:

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

rawBuild का उपयोग करने की आवश्यकता है कि यह @NonCPS ब्लॉक में हो।

संबंधित मुद्दे