notification/http¶
The notification/http task can be used to send an HTTP request either as a form of notification or to trigger an action. For example, this task can be used to trigger a GitHub Action or a Tekton pipeline.
Example¶
The following is an experiment snippet with a notification/http task that triggers a GitHub action that takes two inputs. Here the inputs are set to the name and namespace of the experiment.
...
spec:
strategy:
actions:
finish:
- task: notification/http
with:
url: https://api.github.com/repos/ORG/REPO/actions/workflows/ACTION.yaml/dispatches
body: |
{
"ref":"master",
"inputs":{
"name": "@<.this.metadata.name>@",
"home":"@<.this.metadata.namespace>@"
}
}
secret: default/github-token
authType: Bearer
headers:
- name: Accept
value: application/vnd.github.v3+json
...
Inputs¶
| Field name | Field type | Description | Required |
|---|---|---|---|
| url | string | URL to which request is to be made. May contain placeholders that will be subsituted at runtime. | Yes |
| method | string | HTTP request method to use; either POST or GET. Default value is POST. | No |
| authtype | string | Type of authorization to use. Valid values are Basic, Bearer and APIKey. If not set, no authorization is used. | No |
| secret | string | Name of a secret (in form of namespace/name). Values are used to dynamically substitute placeholders. | No |
| headers | []NamedValue | A list of name-value pairs that are converted into headers as part of the request. Values may contain placeholders that will be subsituted at runtime. | No |
| body | string | The body of the request to be sent. May contain placeholders that will be subsituted at runtime. | No |
| ignoreFailure | bool | A flag indicating whether or not to ignore failures. If failures are not ignored, they cause the experiment to fail. Default is true. | No |
The url, headers and body may all contain placeholders that will be substituted at runtime. A placeholder prefixed by .secret will use value from the secret. A placeholder prefixed by .this will use a value from the experiment. Placeholders in this task use @< and >@ as the left and right delimiters respectively.
If not set, the default body will be of the following form:
{
"summary": {
"winnerFound": true,
"winner": "candidate",
"versionRecommededForPromotion": "candidate",
"lastRecommendedWeights": [
{ "name": "candiate"
"weight": 95},
{ "name": "baseline"
"weight": 5}
]
},
"experiment": <JSON representation of the experiment object>
}
In the default body, the winner will be set only if winnerFound is true. The versionRecommededForPromotion field will be omitted in start actions but will be included thereafter. The weights are the last weights recommended by the analytics engine. Note that this may not match the current weights.
No authoriziation is provided if authtype is not set. If it is set, the behavior is as follows:
Basic: the task expects fields namedusernameandpasswordin thesecret. These will be used to add an appropriateAuthorizationheader to the request.Bearer: the expects a field namedtokenin thesecret. This will be used to construct a suitableAuthorizationheader to the request.APIKey: the task expects theheaderfield to explicitly specify any needed authorization headers. Placeholders can be used to explicitly refer to any required values from thesecret.
By default, a Content-type header with value application/json is included in the request. This can be replaced by specifying a different value. For example to set it by text/plain by:
...
headers:
- name: Content-type
value: text/plain
...
Result¶
The task will create and send an HTTP request.