Use repository_dispatch event to have control on when to generate a release by making an HTTP request, e.g.:
Github Workflow:
name: Release
on:
repository_dispatch:
types: [semantic-release]
jobs:
# ...
To trigger a release, call (with a Personal Access Tokens stored in GITHUB_TOKEN environment variable):
$ curl -v -H "Accept: application/vnd.github.everest-preview+json" -H "Authorization: token ${GITHUB_TOKEN}" https://api.github.com/repos/[org-name-or-username]/[repository]/dispatches -d '{ "event_type": "semantic-release" }'