CI CD管道-非源代码控制触发器

时间:2020-04-05 03:05:21

标签: amazon-web-services jenkins triggers continuous-integration gitlab

我试图弄清楚如何从非源代码控制触发器中触发CI CD管道。 我的计划是使用Google Web表单来收集脚本中所需的所有变量,以使非技术人员的入职过程变得足够容易。我使用Google Forms API脚本编辑器获取了提交响应JSON,并执行了放置到s3存储桶/对象的操作。

我希望该PUT(写操作)触发CI CD管道。

CI CD工具并不重要,因为似乎所有CI CD工具都只能使用去向的Web挂钩将内容推送到某个东西(例如Slack Channel),而不能讨厌,例如API或POST / PUT / Event。

我的问题: 是否可以使用PUT或POST触发管道? 我理想地希望使用的工具是Gitlab CI,甚至是Jenkins(如果它提供了更多的可能性)。

我已经读了很多书,很难解决。我认为这是人们经常使用的东西,而不是简单地提交或合并到源代码控制分支...

根据我收集到的信息,CI工具的API端点只能处理源代码控制触发器。

如果有人对实现此目标有任何意见,请输入。我愿意弄清楚如何创建API,如果有帮助的话。

我想专注于AWS atm,但目标是也要使用此解决方案,或在Azure中等效的解决方案

2 个答案:

答案 0 :(得分:1)

在作业设置中,滚动到“生成触发器”部分,然后找到一个名为“触发远程生成(例如,从脚本生成)”的复选框。您需要提供一个令牌(因此只有知道令牌的人才能触发您的工作)。完成此操作后,您可以使用curl触发管道:

curl 'myjenkins.mycompany.net/job/MyJobName/build?token=myverysecrettoken&cause=Cause+I+Decided+So'

curl 'myjenkins.mycompany.net/job/MyJobName/buildWithParameters?PARAM1=string1&PARAM2=string2&token=myverysecrettoken'

另请参见Generic Webhook Trigger Plugin

答案 1 :(得分:0)

对于那些像我这样的管道新手,并希望通过Gitlab CI寻找类似的指导: 可以发出相同类型的curl请求来触发管道。

但是对于我的特定问题,我希望通过直接使用HTTPS端点将POST发送到Gitlab CI API来触发管道。卷曲命令不符合我的需求

要实现此目的,可以将Gitlab CI Webhook用于其他项目: 只需填写Ref(分支名称)和Gitlab项目ID

示例:

https://gitlab.com/api/v4/projects/19577683/ref/master/trigger/pipeline?token=4785b192773907c280845066093s93

要使用curl命令,请点击Gitlab项目触发器API,类似于Jenkins: 只需提供Tigger令牌,即可在Gitlab的Project / CI CD / Trigger部分中创建,然后指定Ref(分支名称或标签)

示例:

curl -X POST \
     -F token=4785b192773907c280845066093s93 \
     -F ref=master \
     https://gitlab.com/api/v4/projects/19577683/trigger/pipeline