我设置了localhost jenkins,使用ngrok将我的jenkins暴露给github.我没有设置任何凭据.当我从webhook测试传递时,它显示302未找到.响应:
Content-Length: 0
Date: Mon, 16 Apr 2018 02:09:22 GMT
Location: http://056b05cb.ngrok.io/github-webhook/
Server: Jetty(9.4.z-SNAPSHOT)
X-Content-Type-Options: nosniff
Run Code Online (Sandbox Code Playgroud)
请求:
Headers
Request URL: http://056b05cb.ngrok.io/github-webhook
Request method: POST
content-type: application/json
Expect:
User-Agent: GitHub-Hookshot/d5b13bc
X-GitHub-Delivery: bdc31e52-4115-11e8-9e6b-c7d083151290
X-GitHub-Event: push
Payload
{
"ref": "refs/heads/master",
"before": "14e1265dc10ef64c93ee7791db7fa9ccef63279f",
"after": "1f51b991d10af7c2b8fb4bc4c44417a57cf7bb56",
"created": false,
"deleted": false,
"forced": false,
"base_ref": null,
.....
}
Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的 Jenkins 构建,它是几个存储库所需要的。所有这些存储库都具有相同的组织、相同的分支等。除了存储库名称之外没有区别。
每个单个存储库都应该能够仅触发此特定存储库的构建。我想像将参数化构建与包含存储库名称的查询参数的 WebHook URL相结合。
任何想法或指示?
我有一个PROJECT_A通过 webhook 触发的项目 ( ),并希望设置变量$PRODUCT。它的值用于触发构建中的某个路径。.gitlab-ci.yml文件中的作业如下所示:
deploy:
stage: publish
script:
- ./generate_doc.sh $PRODUCT
Run Code Online (Sandbox Code Playgroud)
一个 webhook 调用如下所示:
http://<GITLAB_URL>/api/v4/projects/710/ref/master/trigger/pipeline?token=<TOKEN>&variables[PRODUCT]=<PRODUCT>
Run Code Online (Sandbox Code Playgroud)
我通过来自其他项目的 webhook 调用此触发器,包括PROJECT_B. 所以我在各自的 webhooks 中手动填写了所需的值,例如PROJECT_B:
http://<GITLAB_URL>/api/v4/projects/710/ref/master/trigger/pipeline?token=<TOKEN>&variables[PRODUCT]=PROJECT_B
Run Code Online (Sandbox Code Playgroud)
当管道输入PROJECT_A被触发时,如预期的那样$PRODUCT具有值PROJECT_B。
我想进一步参数化管道并考虑提交消息等。我需要的所有信息显然都在webhook 负载中提供。
是否有内置方法可以在管道中读取此有效负载?或者,将有效负载的内容放入 webhook 中的变量中,如下所示:
http://<GITLAB_URL>/api/v4/projects/710/ref/master/trigger/pipeline?token=<TOKEN>&variables[COMMIT_REF]=???
Run Code Online (Sandbox Code Playgroud)
我发现了有关使用 webhook 负载进行参数化 Jenkins 构建的讨论,包括此相关问题。Gitlab论坛里也有类似的问题,没有任何答案。
有没有办法在 Gitlab CI 管道中访问该有效负载?我可能可以通过jq调用来提取提供的值,但是首先如何获得 Json?
我正在尝试让 Github Webhook 启动我拥有的 AWS Lambda。我能弄清楚如何做到这一点的最好方法是使用 AWS API Gateway,问题是安全性。
Github Webhooks 只会通过 POST 调用发送一个秘密。
我找不到任何方法让 AWS API Gateway 验证此签名。或者我可以在哪里添加此功能。
我假设我可以编写一个AWS Lambda Authorizer。但这是很多不同地方的代码,开始看到需要serverless框架。
我不知道在 AWS 中有更简单的设置吗?