Получение полезной нагрузки github в jenkinsfile

Нужна помощь по загрузке полезной нагрузки GitHub в файл Jenkins без установки какого-либо плагина.

Если кто-нибудь может предоставить фрагмент кода файла Jenkins для доступа к полезной нагрузке GitHub из веб-перехватчика. это было бы большим подспорьем.

Я могу вызвать задание Дженкинса из веб-перехватчика GitHub. но для дальнейшей обработки нужна и полезная нагрузка.

Любая помощь будет оценена по достоинству. Спасибо.

"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
В этой статье блога мы проведем вас через процесс установки Gradle на Ubuntu 22.04, интеграции его с Jenkins и создания задания Gradle. Мы...
0
0
716
1

Ответы 1

Пожалуйста, найдите приведенный ниже отличный сценарий:

            stage('Pull Request Info') {
            agent {
                docker {
                    image 'maven'
                    args '-v $HOME/.m2:/home/jenkins/.m2 -ti -u 496 -e MAVEN_CONFIG=/home/jenkins/.m2 -e MAVEN_OPTS=-Xmx2048m'
                }
            }

            steps {
                script {
                    withCredentials([usernameColonPassword(credentialsId: "${env.STASH_CREDENTIAL_ID}",
                            variable: 'USERPASS')]) {
                        def hasChanges = maven.updateDependencies()
                        if (hasChanges != '') {
                            def pr1 = sh(
                                    script: "curl -s -u ${"$USERPASS" } -H 'Content-Type: application/json' https://xx.example/rest/some/endpoint",
                                    returnStdout: true
                            )
                            def pr = readJSON(text: pr1)
                            println pr.fromRef
                        }
                    }
                }
            }
        }

Вышеупомянутый скрипт использует curl для получения сведений о запросе на извлечение. Я сохранил учетные данные в jenkins и создал переменную среды для credentialId.

Вы можете заменить URL-адрес своей конечной точкой. Вы также можете изменить сценарий для использования jq, если на вашем компьютере установлен jq.

В этом случае я использую readJSON для анализа JSON, который является частью плагина служебных программ конвейера. Мой вопрос: почему бы не использовать плагин, поскольку он предоставляет необходимые функции?

Если вы все еще не хотите использовать плагин, взгляните на парсинг json с помощью groovy.

Большое спасибо за ответ. Я использовал тот же метод. Проблема с этим подходом заключается в том, что когда одновременно выполняется 2-3 пул-реквеста, то только последний из них будет рассматриваться, предыдущие будут исключены. В моем случае, как только вызывается веб-перехватчик, jenkinsfile должен распечатать полезную нагрузку независимо от какого-либо события (например, пул реквест, push, слияние и т. д.). Не могли бы вы помочь с этим.

Praveen Gunasekar 24.08.2018 11:49

Я бы посоветовал вам использовать организацию Github, где она разделяет запросы на вытягивание и ветки. И для каждого PR будет создано отдельное задание, где вы сможете распечатать полезную нагрузку для каждого события из Github.

Thiru 24.08.2018 11:52

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