【发布时间】:2014-08-11 21:00:24
【问题描述】:
Jenkins 似乎构建了未构建的分支,而不是 GitHub 提交后挂钩上指定的分支。如何告诉 Jenkins 构建 GitHub 提交后挂钩中指定的分支——即使它之前构建过?
例如,假设develop分支在feature/coolness后面有20个提交,feature/coolness在git hash 123abc上,现在我合并develop,这样develop和feature/coolness在git hash 123abc上。同时,feature/irrelevant 有新的提交,因此任何分支上的最新提交都是 feature/irrevant。我将开发分支推送到 GitHub,Jenkins 构建功能/无关而不是开发。
GitHub 设置为通过post-commit hook 触发 Jenkins,并且在提交到 GitHub 时,确实触发了 Jenkins。我已将 post-commit 钩子发送到 runscope 并验证了有效负载具有正确的 git 哈希和分支名称。
Jenkins 设置为构建存储库 url git@github.mygithubenterpriseurl.com:user/project.git 和所有分支(分支说明符 = **)所有其他 Jenkins SCM 设置都是它们的默认设置。
在构建中,我看到以下几行:
Fetching upstream changes from git@github.mygithubenterpriseurl.com:user/project.git
getCandidateRevisions(false,null,,,,remoteUrls=[git@github.mygithubenterpriseurl.com:user/project.git],buildsByBranchName={...snip...},lastBuild=Build #742 of Revision bd40a4956b3f1b6a70552b86bfd6df9a7226dca3 (origin/feature/irrelevant)]) considering branches to build
Seen branch in repository origin/develop
Seen branch in repository origin/master
Seen branch in repository origin/feature/coolness
Seen branch in repository origin/feature/irrelevant
Seen branch in repository origin/release/name
Seen 7 remote branches
Starting with all the branches: [...snip...}
After filtering out what's already been built: [Revision e6a90ad3fa4c02864f36647d77db43721b991992 (origin/feature/irrelevant)]
Checking out Revision e6a90ad3fa4c02864f36647d77db43721b991992 (origin/feature/irrelevant)
一旦它进入我的构建脚本,我会回显$GIT_HASH 和$GIT_BRANCH,并得到错误的东西:GIT_HASH=e6a90ad3fa4c02864f36647d77db43721b991992 和GIT_BRANCH=origin/feature/irrelevant
完成后,它会构建最新的提交,而不是 git 哈希上指定的提交。
Jenkins 是 v. 1.551,我的已安装和活动 Jenkins 插件和版本列表:
active-directory: 1.24
analysis-core: 1.56
ansicolor: 0.3.1
ant: 1.2
build-flow-plugin: 0.10
buildgraph-view: 1.1.1
cobertura: 1.9.5
conditional-buildstep: 1.3.3
config-file-provider: 2.7.4
copy-to-slave: 1.4.3
credentials: 1.10
cvs: 2.11
envfile: 1.2
envinject: 1.89
external-monitor-job: 1.2
ezwall: 0.2
findbugs: 4.56
git-client: 1.8.0
git-parameter: 0.2
git: 2.2.1
github-api: 1.44
github-oauth: 0.14
github: 1.8
ivy: 1.23.2
javadoc: 1.1
jobConfigHistory: 2.6
ldap: 1.8
logstash: 0.8.0
mailer: 1.8
matrix-auth: 1.2
maven-plugin: 2.2
monitoring: 1.50.0
notification: 1.5
nunit: 0.15
pam-auth: 1.1
parameterized-trigger: 2.24
postbuildscript: 0.16
publish-over-ssh: 1.11
pwauth: 0.4
role-strategy: 2.1.0
run-condition: 1.0
scm-api: 0.2
scp: 1.8
sonar: 2.1
ssh-credentials: 1.6.1
ssh-slaves: 1.6
ssh: 2.4
subversion: 2.2
testng-plugin: 1.6
token-macro: 1.10
translation: 1.11
vsphere-cloud: 1.1.6
windows-slaves: 1.0
xunit: 1.84
【问题讨论】: