如何在 jenkins 声明式管道中获取会话数据
How to get session data in jenkins delarative piepline
我不想使用 CurrentBuild 或 CurrentUser,因为这 return 构建作业的用户信息,但我想获取登录到 jenkins 的用户信息。
例如,定时器的作业 X 运行 和一个用户将中止这个,我想找到哪个用户中止了这个作业。
您可以使用以下代码。请注意,当您要执行此代码时,您必须通过转到“管理 Jenkins/in 处理脚本批准”来允许 运行 这些方法并批准它们可执行。通过使用此代码,您不仅可以通过手动 运行ning 作业,还可以通过计时器 运行ning 获得谁中止了 Jenkins 管道。
pipeline {
agent any
triggers{cron("*/1 * * * *")}
stages {
stage('Hello') {
steps {
sleep(20000)
echo 'Hello World'
}
}
}
post{
aborted{
script{
def causee = ''
def actions = currentBuild.getRawBuild().getActions(jenkins.model.InterruptedBuildAction)
for (action in actions) {
def causes = action.getCauses()
// on cancellation, report who cancelled the build
for (cause in causes) {
causee = cause.getUser().getDisplayName()
cause = null
}
causes = null
action = null
}
actions = null
echo causee
}
}
}
}
我不想使用 CurrentBuild 或 CurrentUser,因为这 return 构建作业的用户信息,但我想获取登录到 jenkins 的用户信息。 例如,定时器的作业 X 运行 和一个用户将中止这个,我想找到哪个用户中止了这个作业。
您可以使用以下代码。请注意,当您要执行此代码时,您必须通过转到“管理 Jenkins/in 处理脚本批准”来允许 运行 这些方法并批准它们可执行。通过使用此代码,您不仅可以通过手动 运行ning 作业,还可以通过计时器 运行ning 获得谁中止了 Jenkins 管道。
pipeline {
agent any
triggers{cron("*/1 * * * *")}
stages {
stage('Hello') {
steps {
sleep(20000)
echo 'Hello World'
}
}
}
post{
aborted{
script{
def causee = ''
def actions = currentBuild.getRawBuild().getActions(jenkins.model.InterruptedBuildAction)
for (action in actions) {
def causes = action.getCauses()
// on cancellation, report who cancelled the build
for (cause in causes) {
causee = cause.getUser().getDisplayName()
cause = null
}
causes = null
action = null
}
actions = null
echo causee
}
}
}
}