【问题标题】:Jenkins building latest commit, not GitHub post-commit hook specified commitJenkins 构建最新提交,而不是 GitHub 提交后挂钩指定提交
【发布时间】: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=e6a90ad3fa4c02864f36647d77db43721b991992GIT_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

【问题讨论】:

    标签: git github jenkins


    【解决方案1】:

    此功能似乎不存在。 https://issues.jenkins-ci.org/browse/JENKINS-24291 是一个建议添加它的问题。 https://github.com/jenkinsci/github-plugin/blob/master/src/main/java/com/cloudbees/jenkins/GitHubWebHook.java#L175 专门从 webhook 中仅提取存储库 url 和提交者名称,并丢弃其余数据......包括 git 哈希。

    【讨论】:

      【解决方案2】:

      拉取请求不会做你想做的事吗?如果构建成功,测试拉取请求/合并并实际提交并推送它

      【讨论】:

        猜你喜欢
        • 2019-10-02
        • 2021-10-22
        • 2015-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-18
        相关资源
        最近更新 更多