缺少 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 作为参数传递(除其他外,如果需要)。

确保允许工作流的并发构建捕获每个更新的分支。