通常,在使用像 Git插件这样的SCM时,可以使用一堆环境变量(例如see these)
但 Git Step 和 Generic SCM 似乎都没有。
有没有办法让这些变量进入groovy env.*
以便可以使用它们?
这样的东西会很有用:
def commitMessage = sh 'git log --max-count=1 --oneline --no-merges | cut -b9-'
我可以考虑将结果写入文件并通过readFile()
mehtod读取它们 - 但有没有更简单的方法来实现这一目标?
答案 0 :(得分:3)
对于记录:我有以下代码来获取分支名称:
stage 'preparation'
node {
// checkout branch
git branch: 'origin/master', url: 'git@example.net:project.git'
// write current branch-name to file
sh 'git branch -a --contains `git rev-parse HEAD` | grep origin | sed \'s!\\s*remotes/origin/\\(.*\\)!\\1!\' > git-branch.txt'
// read data from file into environment-variable
env.gitBranch = readFile('git-branch.txt').trim()
// let people know what's up
echo "testing branch ${env.gitBranch}"
}
流程脚本的其余部分由几个参数化作业组成,这些作业将env.gitBranch
作为参数传递(如果需要,还可以)。
确保允许工作流的并发构建捕获每个更新的分支。
答案 1 :(得分:2)
见JENKINS-24141;这些变量尚未在Workflow中提供。
与此同时,您走在正确的轨道上:运行git
命令记录您需要的任何信息,并使用readFile
加载它(另请参阅JENKINS-26133)。< / p>