【问题标题】:Subversion post commit hook for JenkinsJenkins 的 Subversion 提交后挂钩
【发布时间】:2019-10-02 23:10:05
【问题描述】:
我刚刚花了一天时间浏览了十年的 SO questions、论坛帖子和 Jenkins Subversion 插件 wiki 和 documentation。
我试图回答的问题:
- 目前通过 Subversion 提交触发作业所需的最低设置是什么?
我无法回答的问题:
- 使用
wget 与curl 的优缺点是什么?
- 传递
REV参数有什么作用?
使用 Jenkins 2.164.3 和 Subversion 1.9.7,每个都设置在自己的 Ubuntu Server 18.04 上,并且每个都在自己的 Apache HTTP 服务器后面,带有用于 HTTPS 的 LetsEncrypt SSL 证书。
【问题讨论】:
标签:
jenkins
svn
post-commit-hook
jenkins-api
【解决方案1】:
这是对我有用的最小的 svn post-commit 钩子:
#!/bin/sh
REPO="$1"
REV="$2"
UUID="$(/usr/bin/svnlook uuid ${REPO})"
CHANGED="$(/usr/bin/svnlook changed -r ${REV} ${REPO})"
SERVER_URL="https://<redacted>/jenkins"
USER="<redacted>"
API_TOKEN="<redacted>" # not the password
/usr/bin/curl -X POST -s -u "${USER}:${API_TOKEN}" -d "${CHANGED}" ${SERVER_URL}/subversion/${UUID}/notifyCommit
注意事项:
- CSRF 已启用,但
USER:API_TOKEN seems to be enough(不需要碎屑)。
- 不指定任何
Content-Type 标头似乎就可以了
- 不发送
?rev=${REV} 似乎还好(有什么区别?)
- 无需配置特殊的构建触发器令牌(见屏幕截图)
带有 (8,706) 和不带 (-1) rev 参数的 Jenkins 日志输出:
May 15, 2019 8:04:28 PM INFO jenkins.scm.impl.subversion.SubversionSCMSource$ListenerImpl onNotify
Received post-commit hook from f9.... for revision [8,706 vs -1] on paths [project1/pom.xml, ...]
May 15, 2019 8:04:28 PM INFO jenkins.scm.impl.subversion.SubversionSCMSource$ListenerImpl onNotify
No subversion consumers for UUID f9....
May 15, 2019 8:04:28 PM INFO hudson.triggers.SCMTrigger$Runner run
SCM changes detected in project1. Triggering #20
工作配置: