jenkinsci / jenkinsci/github-checks-plugin
[JENKINS-66852] Using GitHub instead of plain Git makes builds noticeably slower
- Dominant language
- Java
- Stars
- 89
- Forks
- 50
- Avg merge
- 13h 55m
- Merged PRs (30d)
- 7
Description
Building a Multibranch Pipeline project with this pipeline
pipeline {
agent {
label 'my_label'
}
options {
skipDefaultCheckout()
disableConcurrentBuilds()
durabilityHint('PERFORMANCE_OPTIMIZED')
}
stages {
stage('Build') {
matrix {
axes {
axis {
name 'PLATFORM'
values 'A',
'B',
'C',
'D',
'E',
'F',
'G',
'H',
'I',
'J',
'K',
'L',
'M',
'N',
'O'
}
}
stages {
stage('Build A') {
steps {
sh label: 'Configure',
script: "echo 1"
sh label: 'Build',
script: "echo 2"
}
}
stage('Build B') {
steps {
sh label: 'Configure',
script: "echo 3"
sh label: 'Build',
script: "echo 4"
}
}
stage('Install') {
steps {
sh label: 'Install A',
script: "echo 4"
sh label: 'Install B',
script: "echo 5"
}
}
}
}
}
}
}
takes 3 minutes if I use "GitHub" as "Branch Sources", but 3 seconds if I use "Git".
I guess this happens because when using the GitHub Branch Source Jenkins continuously updates GitHub with the state of the build. But it's a crazy amount of time.
I don't think it's the case, but if this is causes because of some intrinsic limitation in GitHub I would like to have an option to disable all the intermediate status updates. I basically just want to know it has started and when it has finished.
I use the GitHub app as "Credentials" in both cases, so I have the big (12,500?) rate limit.
Jenkins 2.303.2 with the latest versions of "GitHub API", "GitHub Authentication", "GitHub Branch Source", "GitHub Checks", "GitHub Pipeline for Blue Ocean" and "GitHub" plugins installed.
I'm assigning this to the "github-plugin" component, but I'm not really sure if it should go into github-api, github-checks or something else.
---
Originally reported by reddwarf94, imported from: Using GitHub instead of plain Git makes builds noticeably slower
xiongkezhi
Raw content of original issue
Building a Multibranch Pipeline project with this pipeline
pipeline {
agent {
label 'my_label'
}options {
skipDefaultCheckout()
disableConcurrentBuilds()
durabilityHint('PERFORMANCE_OPTIMIZED')
}stages {
stage('Build') {
matrix {
axes {
axis {
name 'PLATFORM'
values 'A',
'B',
'C',
'D',
'E',
'F',
'G',
'H',
'I',
'J',
'K',
'L',
'M',
'N',
'O'
}
}stages {
stage('Build A') {
steps {
sh label: 'Configure',
script: "echo 1"
sh label: 'Build',
script: "echo 2"
}
}stage('Build B') {
steps {
sh label: 'Configure',
script: "echo 3"
sh label: 'Build',
script: "echo 4"
}
}stage('Install') {
steps {
sh label: 'Install A',
script: "echo 4"
sh label: 'Install B',
script: "echo 5"
}
}
}
}
}
}
}takes 3 minutes if I use "GitHub" as "Branch Sources", but 3 seconds if I use "Git".
I guess this happens because when using the GitHub Branch Source Jenkins continuously updates GitHub with the state of the build. But it's a crazy amount of time.
I don't think it's the case, but if this is causes because of some intrinsic limitation in GitHub I would like to have an option to disable all the intermediate status updates. I basically just want to know it has started and when it has finished.
I use the GitHub app as "Credentials" in both cases, so I have the big (12,500?) rate limit.
Jenkins 2.303.2 with the latest versions of "GitHub API", "GitHub Authentication", "GitHub Branch Source", "GitHub Checks", "GitHub Pipeline for Blue Ocean" and "GitHub" plugins installed.
I'm assigning this to the "github-plugin" component, but I'm not really sure if it should go into github-api, github-checks or something else.
Contributor guide
Assessment
This issue has not been assessed yet.