github¶
Trigger GitHub workflows via a repository_dispatch.
A repository_dispatch will trigger workflows in the default branch of the GitHub repository. By default, the experiment report will also be sent.
Usage Example¶
iter8 k launch \
--set "tasks={http,assess,github}" \
--set http.url=http://httpbin.default/get \
--set assess.SLOs.upper.http/latency-mean=50 \
--set assess.SLOs.upper.http/error-count=0 \
--set github.owner=<GitHub owner> \
--set github.repo=<GitHub repository> \
--set github.token=<GitHub token> \
--set runner=job
See here for a more in-depth tutorial.
Parameters¶
| Name | Type | Required | Default value | Description |
|---|---|---|---|---|
| owner | string | Yes | N/A | Owner of the GitHub repository |
| repo | string | Yes | N/A | GitHub repository |
| token | string | Yes | N/A | Authorization token |
| payloadTemplateURL | string | No | https://raw.githubusercontent.com/iter8-tools/iter8/v0.14.5/templates/notify/_payload-github.tpl | URL to a payload template |
| softFailure | bool | No | true | Indicates the task and experiment should not fail if the task cannot successfully send the request |
| if | string | No | N/A | An if condition that can be control when the task is run in a multi-looped experiment. To learn more, see here. |
Default payload¶
A repository_dispatch requires a payload that contains the type of the event.
The default payload template will set the event_type to iter8. In addition, it will also provide the experiment report in the client_payload, which means that this data will be accessible in the GitHub workflow via ${{ toJson(github.event.client_payload) }}.
However, if you would like to use a different payload template, simply set a payloadTemplateURL and Iter8 will not use the default.
if parameter¶
The if parameter is used to control when the task is run in a multi-looped experiment. For example, if you would like for the github task to only run at the 10th loop instead of every loop, you can do the following:
iter8 k launch \
--set "tasks={http,assess,github}" \
--set http.url=http://httpbin.default/get \
--set assess.SLOs.upper.http/latency-mean=50 \
--set assess.SLOs.upper.http/error-count=0 \
--set github.owner=<GitHub owner> \
--set github.repo=<GitHub repository> \
--set github.token=<GitHub token> \
--set github.if="Result.NumLoops == 10"
--set runner=job
You may use any field in the Result object for your logic.