2015-05-12 5 views
0

Обычно при использовании SCM как Git плагин, есть куча переменных окружения, которые вы можете использовать (например, see these)SCM переменные среды отсутствуют

Но ни Гит Шаг ни Generic SCM, похоже, делают это.

Есть ли способ получить эти переменные в groovy env.*, чтобы их можно было использовать?

Нечто подобное было бы полезно:

def commitMessage = sh 'git log --max-count=1 --oneline --no-merges | cut -b9-' 

Я могу думать о записи результатов в файл и читать их через readFile() mehtod - но есть более простой способ достижения этой цели?

ответ

2

См. JENKINS-24141; эти переменные еще недоступны из Workflow.

А пока вы на правильном пути: запустите команду git, чтобы записать любую необходимую информацию, и используйте readFile, чтобы загрузить ее (см. Также JENKINS-26133).

3

Для записи: У меня есть следующий код, чтобы получить имя-ветви:

stage 'preparation' 
node { 
// checkout branch 
    git branch: 'origin/master', url: '[email protected]: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}" 
} 

Остальная часть потока-скрипта состоит из Serveral параметризованных рабочих мест, которые попадают в env.gitBranch, переданного в качестве параметра (в том числе , если нужно).

Обязательно разрешите параллельные сборки для рабочего процесса поймать каждую обновленную ветвь.

Смежные вопросы