Конвейер выпуска Jenkins для Github

У меня есть конвейерная работа Jenkins, чтобы сделать выпуск. Он использует плагин Jenkin's Github для проверки проекта и создания сборки.

Мой упрощенный DSL:

multibranchPipelineJob('Release') {
    ...
    branchSources {
        branchSource {
            source {
                github {
                    id('AAA')
                    repoOwner('BBB')
                    repository('CCC')
                    credentialsId('github-credentials')
                    repositoryUrl('https://github.com/BBB/CCC')
                    configuredByUrl(false)
                }
            }
          ...
        }
    }
    ...
}

и мой упрощенный «Jenkinsfile» выглядит так:

pipeline {
    agent any
    stages {
        stage('Build & Release') {
            steps {
                sh "./gradlew clean build release"
            }
        }
    }
}

Но когда он пытается выполнить задачу release, он терпит неудачу со следующим исключением.

Caused by: org.eclipse.jgit.errors.TransportException: https://github.com/BBB/CCC.git: Authentication is required but no CredentialsProvider has been registered
    at org.eclipse.jgit.transport.TransportHttp.connect(TransportHttp.java:531)
    at org.eclipse.jgit.transport.TransportHttp.openPush(TransportHttp.java:434)
    at org.eclipse.jgit.transport.PushProcess.execute(PushProcess.java:127)
    at org.eclipse.jgit.transport.Transport.push(Transport.java:1335)
    at org.eclipse.jgit.api.PushCommand.call(PushCommand.java:137)

Насколько я понимаю, когда задача release запущена, она пытается подключиться с помощью SSH к Github, но я не настроил его, поскольку мы не хотим поддерживать «пользователя» для Jenkins на Github. Как я могу решить эту проблему, не настраивая ключи SSH на Github?

Редкие достижения на Github ✨
Редкие достижения на Github ✨
Редкая коллекция доступна в профиле на GitHub ✨
1
0
127
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам нужно убедиться, что у вас есть правильные учетные данные на странице конфигурации системы Jenkins.

Как видно из документации , зарегистрируйте PAT (персональный токен доступа), хранящийся в Jenkins, через плагин Jenkins Credentials.
Затем преобразуйте его в имя пользователя/пароль с помощью плагина GitHub:

Перейдите к глобальной конфигурации и добавьте GitHub Server Config.

Перейдите в раздел «Дополнительно» -> «Управление дополнительными действиями GitHub» -> «Преобразовать логин и пароль в токен».

Ответ принят как подходящий

Доступ к учетным данным для приложения Github можно получить в Jenkinsfile следующим образом:

steps {
  withCredentials([usernamePassword(credentialsId: 'github-app-id',
                   usernameVariable: 'GITHUB_APP',
                   passwordVariable: 'GITHUB_ACCESS_TOKEN')]) {
    sh 'export GRGIT_USER=$GITHUB_APP && export GRGIT_PASS=$GITHUB_ACCESS_TOKEN && ./gradlew final'
  }
}

Другие вопросы по теме