在EC2上使用Jenkins设置GitHub webhook

时间:2013-06-07 18:24:19

标签: github amazon-ec2 jenkins jenkins-plugins webhooks

到目前为止,我已经阅读了几乎所有关于如何使用GitHub设置Jenkins的指南,但它们似乎都没有解决我的问题。我目前的工作很好,但我希望每次推送到GitHub时都要构建它。我还想手动设置我的钩子URL(不要让Jenkins自动管理它们)。目前,我的Jenkins服务器在端口8080(http://ec2-XX-XXX-XXX-XXX.compute-1.amazonaws.com:8080/)上的EC2上运行。系统管理员说服务器设置为侦听该端口上的所有传入请求。

在“配置系统”区域的GitHub Web Hook区域下,我已Manually manage hook URLs已选中。

在我的项目配置中,我有以下设置:

GitHub Project: https://github.com/username/projectname/
Source Code Management > Git
    Repository URL: git@github.com:username/projectname.git
    Branches to Build - Branch Specifier (blank for default): master
Build Triggers > Build when a change is pushed to GitHub

在GitHub Hook Log中显示消息:

Last GitHub Push
Polling has not run yet.

我还创建了一个GitHub可以连接的用户。用户具有以下全局权限的角色:     总体而言:阅读     工作:阅读     工作:发现     工作:建立

在GitHub上,Settings > Service Hooks我添加了https://USERNAME:PASSWORD@ec2-XX-XXX-XXX-XXX.compute-1.amazonaws.com:8080/github-webhook/,其中USERNAME和PASSWORD是GitHub帐户的用户名和密码。我添加了指向WebHook URLs区域和Jenkins (GitHub plugin)区域的链接。当我点击以前区域下的Test Hook时,GitHub页面上没有显示确认消息,但是当我点击后者下面的Test Hook时,它表示Payload Deployed。但是,两者都在我的系统日志文件中注册,并且它们产生类似的错误:

winstone.WinstoneException: Error URI Line: <Garbled Text Here>

at winstone.HttpListener.parseURILine(HttpListener.java:349)
at winstone.HttpListener.parseURI(HttpListener.java:258)
at winstone.RequestHandlerThread.run(RequestHandlerThread.java:83)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:679)
Jun 7, 2013 6:16:31 PM winstone.Logger logInternal
SEVERE: Error within request handler thread

关于可能导致这种情况的任何想法?

1 个答案:

答案 0 :(得分:1)

如果Winstone的访问日志中没有显示,并且问题在没有SSL的情况下仍然存在,请尝试nc -l -p 8080查看从GitHub发送的实际请求是什么。 (或者尝试使用不同的servlet容器。)