缺少 SCM 环境变量
SCM environment variables missing
通常,当使用像 Git 插件 这样的 SCM 时,您可以使用一堆环境变量(例如 see these)
但是 Git 步骤 和 通用 SCM 似乎都没有这样做。
有没有办法将这些变量放入 groovy env.*
以便可以使用它们?
这样的东西会有用:
def commitMessage = sh 'git log --max-count=1 --oneline --no-merges | cut -b9-'
我可以考虑将结果写入文件并通过 readFile()
方法读取它们——但是有没有更简单的方法来实现这一点?
参见JENKINS-24141;这些变量在 Workflow 中尚不可用。
同时,您的方向是正确的:运行一个git
命令来记录您需要的任何信息,并使用readFile
加载它(另见JENKINS-26133).
备案:我有以下代码来获取分支名称:
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
作为参数传递(除其他外,如果需要)。
确保允许工作流的并发构建捕获每个更新的分支。
通常,当使用像 Git 插件 这样的 SCM 时,您可以使用一堆环境变量(例如 see these)
但是 Git 步骤 和 通用 SCM 似乎都没有这样做。
有没有办法将这些变量放入 groovy env.*
以便可以使用它们?
这样的东西会有用:
def commitMessage = sh 'git log --max-count=1 --oneline --no-merges | cut -b9-'
我可以考虑将结果写入文件并通过 readFile()
方法读取它们——但是有没有更简单的方法来实现这一点?
参见JENKINS-24141;这些变量在 Workflow 中尚不可用。
同时,您的方向是正确的:运行一个git
命令来记录您需要的任何信息,并使用readFile
加载它(另见JENKINS-26133).
备案:我有以下代码来获取分支名称:
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
作为参数传递(除其他外,如果需要)。
确保允许工作流的并发构建捕获每个更新的分支。