Skip to content

Commit

Permalink
Add retries and retries_delay options
Browse files Browse the repository at this point in the history
  • Loading branch information
lowlighter committed Mar 7, 2021
1 parent dafcd68 commit 61e9bfc
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 1 deletion.
18 changes: 17 additions & 1 deletion source/app/action/index.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -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}
Expand Down Expand Up @@ -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
Expand Down
15 changes: 15 additions & 0 deletions source/plugins/core/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
16 changes: 16 additions & 0 deletions source/plugins/core/metadata.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down

0 comments on commit 61e9bfc

Please sign in to comment.