Add retries and retries_delay options

This commit is contained in:
lowlighter
2021-03-07 10:29:37 +01:00
parent dafcd68bd5
commit 61e9bfc505
3 changed files with 48 additions and 1 deletions

View File

@@ -57,6 +57,7 @@
"plugins.errors.fatal":die,
"committer.token":_token, "committer.branch":_branch,
"use.prebuilt.image":_image,
retries, "retries.delay":retries_delay,
...config
} = metadata.plugins.core.inputs.action({core})
const q = {...query, ...(_repo ? {repo:_repo} : null), template}
@@ -202,7 +203,22 @@
//Render metrics
info.break()
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")
//Commit metrics

View File

@@ -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
```
### ♻️ 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
It is possible to convert output from SVG to PNG or JPEG images by using `config_output` option.

View File

@@ -138,6 +138,22 @@ inputs:
- png # Does not support animations
- 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