Add retries and retries_delay options
This commit is contained in:
@@ -57,6 +57,7 @@
|
|||||||
"plugins.errors.fatal":die,
|
"plugins.errors.fatal":die,
|
||||||
"committer.token":_token, "committer.branch":_branch,
|
"committer.token":_token, "committer.branch":_branch,
|
||||||
"use.prebuilt.image":_image,
|
"use.prebuilt.image":_image,
|
||||||
|
retries, "retries.delay":retries_delay,
|
||||||
...config
|
...config
|
||||||
} = metadata.plugins.core.inputs.action({core})
|
} = metadata.plugins.core.inputs.action({core})
|
||||||
const q = {...query, ...(_repo ? {repo:_repo} : null), template}
|
const q = {...query, ...(_repo ? {repo:_repo} : null), template}
|
||||||
@@ -202,7 +203,22 @@
|
|||||||
//Render metrics
|
//Render metrics
|
||||||
info.break()
|
info.break()
|
||||||
info.section("Rendering")
|
info.section("Rendering")
|
||||||
const {rendered} = await metrics({login:user, q}, {graphql, rest, plugins, conf, die, verify, convert}, {Plugins, Templates})
|
let rendered = null, error = null
|
||||||
|
for (let attempt = 0; attempt < retries; attempt++) {
|
||||||
|
try {
|
||||||
|
console.debug(`::group::Attempt ${attempt}/${retries}`)
|
||||||
|
rendered = (await metrics({login:user, q}, {graphql, rest, plugins, conf, die, verify, convert}, {Plugins, Templates})).rendered
|
||||||
|
console.debug("::endgroup::")
|
||||||
|
break
|
||||||
|
}
|
||||||
|
catch (_error) {
|
||||||
|
error = _error
|
||||||
|
console.debug("::endgroup::")
|
||||||
|
console.debug(`::warning::rendering failed (${error.message})`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!rendered)
|
||||||
|
throw error ?? new Error(`Could not render metrics`)
|
||||||
info("Status", "complete")
|
info("Status", "complete")
|
||||||
|
|
||||||
//Commit metrics
|
//Commit metrics
|
||||||
|
|||||||
@@ -102,6 +102,21 @@ Specify a single value to apply it to both height and with, and two values to us
|
|||||||
config_padding: 6%, 10% # 6% width padding, 10% height padding
|
config_padding: 6%, 10% # 6% width padding, 10% height padding
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### ♻️ Retrying automatically failed rendering
|
||||||
|
|
||||||
|
Rendering is subject to external factors and can fail from time to time.
|
||||||
|
It is possible to mitigate this issue using `retries` and `retries_delay` options to automatically retry later metrics rendering and avoid workflow fails.
|
||||||
|
|
||||||
|
#### ℹ️ Examples workflows
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- uses: lowlighter/metrics@latest
|
||||||
|
with:
|
||||||
|
# ... other options
|
||||||
|
retries: 3
|
||||||
|
retries_delay: 300
|
||||||
|
```
|
||||||
|
|
||||||
### 💱 Convert output to PNG/JPEG
|
### 💱 Convert output to PNG/JPEG
|
||||||
|
|
||||||
It is possible to convert output from SVG to PNG or JPEG images by using `config_output` option.
|
It is possible to convert output from SVG to PNG or JPEG images by using `config_output` option.
|
||||||
|
|||||||
@@ -138,6 +138,22 @@ inputs:
|
|||||||
- png # Does not support animations
|
- png # Does not support animations
|
||||||
- jpeg # Does not support animations and transparency
|
- jpeg # Does not support animations and transparency
|
||||||
|
|
||||||
|
# Number of retries in case rendering fail
|
||||||
|
retries:
|
||||||
|
description: Number of retries
|
||||||
|
type: number
|
||||||
|
default: 3
|
||||||
|
min: 1
|
||||||
|
max: 10
|
||||||
|
|
||||||
|
# Time to wait (in seconds) before each retry
|
||||||
|
retries_delay:
|
||||||
|
description: Time to wait (in seconds) before each retry
|
||||||
|
type: number
|
||||||
|
default: 300
|
||||||
|
min: 0
|
||||||
|
max: 3600
|
||||||
|
|
||||||
# ====================================================================================
|
# ====================================================================================
|
||||||
# Options below are mostly used for testing
|
# Options below are mostly used for testing
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user