当您的回购活动有活动时,Github会将收件后挂钩发送到您选择的URL.我想写一个小的 Python命令行/后台(即没有GUI或webapp)应用程序在我的计算机上运行(后来在NAS上),它不断地监听那些传入的POST请求,一旦从Github 收到一个POST ,它就会处理其中包含的JSON信息.我尽快处理json是没问题的.POST可以来自github提供的少量IP; 我计划/希望在我的计算机上指定一个应该发送的端口.
问题是,我不太了解Web技术来处理搜索时发现的大量选项..我使用Django,请求,套接字,Flask,微框架......?我不知道所涉及的大多数术语是什么意思,而且大多数听起来都是因为它们提供的太多/太大而无法解决我的问题 - 我只是不堪重负而且不知道从哪里开始.
我发现的大多数关于POST/GET的教程似乎都关注发送或直接从网站请求数据,而不是继续听取它.
我觉得问题并不是一个非常困难的问题,一旦我知道去哪里/怎么做就会归结为几行.任何人都可以提供指针/教程/示例/示例代码吗?
我有一个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?