Получить ревизию ветви запроса на вытягивание для триггера pr-merge Декларативный многоотраслевой конвейер Jenkins

В многоотраслевом конвейере есть возможность построить PR, объединенный с базовой веткой. Когда этот параметр включен, переменная среды GIT_COMMIT содержит хэш объединенного коммита, а не хеш последнего хеша ветки изменения. Другой переменной среды, заданной с помощью хэша редакции ветки, не существует.

Но я хочу, чтобы хэш ревизии ветки запускал анализ Sonar PR и для некоторых других задач отчетности. Как я могу этого добиться?

https://issues.jenkins-ci.org/browse/JENKINS-39496 описывает про PullRequestSCMRevision. Но я понятия не имею, как вызвать функцию PullRequestSCMRevision.getPullHash () внутри файла Jenkins в декларативном конвейере.


person Dulaj Atapattu    schedule 10.03.2020    source источник
comment
Если возможно, я предлагаю вам вызывать анализ Sonar PR и другие задачи отчетности из сценария оболочки, который вызывается файлом Jenkins, а не делать это непосредственно внутри ограниченного синтаксиса файла Jenkins. Затем вы можете git rev-parse PRBRANCHNAMEHERE получить фактическую фиксацию ветви PR, а не временную фиксацию слияния.   -  person Omer Tuchfeld    schedule 10.03.2020
comment
git rev-parse PRBRANCHNAMEHERE работал у меня. Большое спасибо за замечание.   -  person Dulaj Atapattu    schedule 11.03.2020


Ответы (1)


Я не вижу, что мое требование поддерживается Дженкинсом. Но, как было предложено @Omer в приведенном выше комментарии, мы можем выполнить нашу работу, вызвав git rev-parse remotes/origin/$BRANCH_NAME в файле Jenkins. Вы можете ввести новую переменную среды в среду сборки декларативного конвейера, вызвав ее в переменной среды со сценарием, как показано ниже.

REVISION = """${
        sh(
                returnStdout: true,
                script: '''
                            if [ ${CHANGE_ID+x} ]; then
                                 git rev-parse remotes/origin/$BRANCH_NAME
                            else 
                                echo "$GIT_COMMIT"
                            fi
                        '''
        ).trim()
    }"""

Затем вы можете использовать переменную среды REVISION для ссылки на ревизию git для любого типа сборки (ветка, ревизия запроса на вытягивание, ревизия слияния запроса на вытягивание).

Примечание. git rev-parse $BRANCH_NAME могут не работать конвейеры ревизий слияния запросов на вытягивание, поскольку эта команда возвращает ревизию вашей локальной ветки, которая отличается от удаленной ветки из-за фиксации автоматического слияния, выполненной Jenkins.

person Dulaj Atapattu    schedule 29.03.2020