2

每当出现带有以下示例事件的 EC2 Spot 实例中断警告时,我都会尝试使用 curl 命令通过 webhook 触发 Jenkins 作业。所有这些都将在来自 CloudWatch 事件触发器的 AWS lambda 中完成。

{
  "version": "0",
  "id": "1e5527d7-bb36-4607-3370-4164db56a40e",
  "detail-type": "EC2 Spot Instance Interruption Warning",
  "source": "aws.ec2",
  "account": "123456789012",
  "time": "1970-01-01T00:00:00Z",
  "region": "us-east-1",
  "resources": [
    "arn:aws:ec2:us-east-1b:instance/i-0b662ef9931388ba0"
  ],
  "detail": {
    "instance-id": "i-0b662ef9931388ba0",
    "instance-action": "terminate"
  }
}

我的目标是从事件中获取 instance-id 并将其作为标头传递给 jenkins webhook,在 jenkins 作业被触发的地方,此标头必须作为参数发送到 jenkins 作业中的底层 python 脚本。

我尝试了以下方法,但没有成功。而且我不确定这是否是这样做的。:)

curl -H 'param: instance' https://jenkins.url/generic-webhook-trigger/invoke\?token\=jenkins-job

通用 Jenkins webhook 触发器配置如下。

在此处输入图像描述

作业中的最终 python 脚本配置如下。

python maintenance.py $.param

我正在尝试获得类似于下面的最终脚本。如果您知道任何方法,请告诉我如何完成此操作。TIA

python maintenance.py i-0b662ef9931388ba
4

1 回答 1

1

我通过添加以下内容解决了这个问题。

如下图所示添加string parameterThis project is parameterized

在此处输入图像描述

接下来Generic Webhook Trigger我添加了Header parameters

在此处输入图像描述

现在,我们可以直接在构建命令中使用$param.

curl 命令现在修改为下面。

curl --location --request POST 'https://jenkins.url/generic-webhook-trigger/invoke\?token\=jenkins-job' --header 'Content-Type: application/json' --header "param: $EVENT_DATA" --data-raw ''

我从中学到了什么?我懒得看文档,最后才看完才弄明白。

于 2020-12-17T13:26:02.833 回答