Как передать учетные данные Git SSH в плагин релиза Gradle в Jenkins? - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь использовать плагин Gradle release на Jenkins нашего клиента (1.x, так что нет конвейеров Jenkinsfile… ?).Я проверил это на своей коробке, и все хорошо.Однако, когда я вызываю задание на сборку, оно завершается неудачно с таким выводом:

Task :foundation:checkUpdateNeeded FAILED
Running [git, remote, update] produced an error: [Permission denied (publickey).

Я знаю, что у Дженкинса есть набор учетных данных Git SSH, потому что задание начинается с извлечения свежей копии из Git с использованиемони.

Как мы можем заставить плагин релиза использовать учетные данные, которые настроены для работы во время оформления заказа?

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Выпуск Gradle не позволяет настраивать учетные данные git.Даже этот вопрос не нужен, я предоставлю две разные возможности, чтобы разобраться в этом, потому что я боролся с этим весь день.Зачем?Потому что мне больше не разрешают использовать SSH в компании, и мы переходим к докерным контейнерам для распределения наших конвейеров CI:

1.) Поместите ключ SSH под пользователем jenkins ~ / .ssh / id_rsa, как он естьобъяснено здесь

2.) Используйте «Execute shell» перед выпуском gradle для настройки удаленного:

enter image description here

Токен должен быть настроен как переменная среды .Это ответ на первоначальный вопрос.

3.) Более сложные функции могут быть включены с использованием конвейеров.Я поместил ниже Jenkinsfile, чтобы выполнить выпуск Gradle (вы также можете использовать sshagent (credentials: ['credential']), и тогда вам не нужны git вещи):

    // GITLAB_API_TOKEN
    withCredentials([string(credentialsId: 'nexususer', variable: 'nexusUsername'),
        string(credentialsId: 'nexuspassword', variable: 'nexusPassword'),
        string(credentialsId: 'nexussnapshoturl', variable: 'nexusSnapshotUrl'),
        string(credentialsId: 'nexusreleaseurl', variable: 'nexusReleaseUrl'),
        string(credentialsId: 'token', variable: 'GITLAB_API_TOKEN')]) {
        if (env.BRANCH_NAME == "master") {
            stage('Release') {
                gitlabCommitStatus(name: 'Release') {
                    // Run the gradle release
                    sh 'git config user.email "email"'
                    sh 'git config user.name "name"'
                    sh "git remote rm origin"
                    sh "git remote add origin https://username:${GITLAB_API_TOKEN}@yourrepo"
                    sh "gradle clean release -Prelease.useAutomaticVersion=true"
                }
            }
        }
    }
0 голосов
/ 11 июня 2018

Предполагается, что это работа вольным стилем, и вы используете для аутентификации закрытый ключ:

  1. Установите флажок Use secret text(s) or file(s).Выберите учетные данные git и введите имена переменных среды, которые необходимо импортировать.
  2. В части сборки Gradle импортируйте ключевую переменную среды (и другие, если необходимо) в качестве свойства проекта: -Pkeylocation = $ KEY_VARIABLE_NAME
...