2016-03-09 21 views

答えて

17

Build User Vars pluginをインストールしましたか?そうであれば、実行できるはずです

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

またはそれに類するものです。

+3

ありがとう:)私は最後の更新であることが判明したリリースノートをチェックして、そのプラグインについて知りませんでしたワークフロープラグインで素晴らしい!素晴らしい –

+1

私はパイプラインの仕事でこれを試しています。 wikiには、 'Set Jenkinsユーザーのビルド変数'チェックマークがあるはずだが、 'Freestyle project'でしか利用できないようだ。私は行方不明のものが他にありますか? – dothebart

+1

このチェックボックスは、フリースタイルジョブのみに使用されます。しかし、パイプラインの仕事のために、利用可能なものを見つける方法はここにあります。 'Snippet Generator'チェックボックスまたはhttps://your-jenkins.example.com/workflow-cps-snippetizer/dslReferenceページの' wrap:General Build Wrapper'までスクロールしてください。 – MarkHu

3

JOB_BASE_NAMEBUILD_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

それはジェンキンスパイプラインで動作するように:

次のことを実行しbuild user vars plugin

をインストールします。

pipeline { 
    agent any 

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

私のために働いた!ありがとうございました。 –

1

ここでの使用を必要としないやや短いバージョンです環境変数:

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

rawBuildの使用には、ブロック@NonCPSが必要です。