JenkinsのPluginプラグインをClouldbeesで使用しています(以前の名前はWorkflowプラグインでした)、Groovyスクリプトでユーザー名を取得しようとしていますが、それを達成する。Jenkins Workflow(Pipeline)Pluginからユーザー名を取得
stage 'checkout svn'
node('master') {
// Get the user name logged in Jenkins
}
JenkinsのPluginプラグインをClouldbeesで使用しています(以前の名前はWorkflowプラグインでした)、Groovyスクリプトでユーザー名を取得しようとしていますが、それを達成する。Jenkins Workflow(Pipeline)Pluginからユーザー名を取得
stage 'checkout svn'
node('master') {
// Get the user name logged in Jenkins
}
Build User Vars pluginをインストールしましたか?そうであれば、実行できるはずです
node {
wrap([$class: 'BuildUser']) {
def user = env.BUILD_USER_ID
}
}
またはそれに類するものです。
(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は、もあります。
//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
}
それはジェンキンスパイプラインで動作するように:
次のことを実行しbuild user vars plugin
をインストールします。
pipeline {
agent any
stages {
stage('build user') {
steps {
wrap([$class: 'BuildUser']) {
sh 'echo "${BUILD_USER}"'
}
}
}
}
}
私のために働いた!ありがとうございました。 –
ここでの使用を必要としないやや短いバージョンです環境変数:
@NonCPS
def getBuildUser() {
return currentBuild.rawBuild.getCause(Cause.UserIdCause).getUserId()
}
rawBuild
の使用には、ブロック@NonCPS
が必要です。
ありがとう:)私は最後の更新であることが判明したリリースノートをチェックして、そのプラグインについて知りませんでしたワークフロープラグインで素晴らしい!素晴らしい –
私はパイプラインの仕事でこれを試しています。 wikiには、 'Set Jenkinsユーザーのビルド変数'チェックマークがあるはずだが、 'Freestyle project'でしか利用できないようだ。私は行方不明のものが他にありますか? – dothebart
このチェックボックスは、フリースタイルジョブのみに使用されます。しかし、パイプラインの仕事のために、利用可能なものを見つける方法はここにあります。 'Snippet Generator'チェックボックスまたはhttps://your-jenkins.example.com/workflow-cps-snippetizer/dslReferenceページの' wrap:General Build Wrapper'までスクロールしてください。 – MarkHu