Dispatcher #4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
# This action is centrally managed in https://github.com/<organization>/.github/ | |
# Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in | |
# the above-mentioned repo. | |
# This action receives a dispatch event and passes it through to another repo. This is a workaround to avoid issues | |
# where fork PRs do not have access to secrets. | |
name: Dispatcher | |
on: | |
workflow_dispatch: | |
inputs: | |
dispatch_repository: | |
description: 'Repository to dispatch to' | |
required: true | |
dispatch_workflow: | |
description: 'Workflow to dispatch to' | |
required: true | |
dispatch_ref: | |
description: 'Ref/branch to dispatch to' | |
required: true | |
dispatch_inputs: | |
description: 'Inputs to send' | |
required: true | |
jobs: | |
dispatcher: | |
name: Repository Dispatch | |
runs-on: ubuntu-latest | |
steps: | |
- name: Unescape JSON control characters | |
id: inputs | |
run: | | |
# get the inputs | |
dispatch_inputs=${{ github.event.inputs.dispatch_inputs }} | |
echo "$dispatch_inputs" | |
# temporarily replace newlines with a placeholder | |
dispatch_inputs=$(echo ${dispatch_inputs} | sed 's/\\\\n/_!new_line!_/g') | |
# remove newline characters | |
dispatch_inputs=$(echo ${dispatch_inputs} | sed 's/\\n//g') | |
# replace placeholder with newline | |
dispatch_inputs=$(echo ${dispatch_inputs} | sed 's/_!new_line!_/\\n/g') | |
# replace escaped quotes with unescaped quotes | |
dispatch_inputs=$(echo ${dispatch_inputs} | sed 's/\\"//g') | |
# debug echo | |
echo "$dispatch_inputs" | |
# parse as JSON | |
dispatch_inputs=$(echo "$dispatch_inputs" | jq -c .) | |
# debug echo | |
echo "$dispatch_inputs" | |
echo "dispatch_inputs=$dispatch_inputs" >> $GITHUB_OUTPUT | |
- name: Workflow Dispatch | |
uses: benc-uk/[email protected] | |
with: | |
repo: ${{ github.event.inputs.dispatch_repository }} | |
ref: ${{ github.event.inputs.dispatch_ref || 'master' }} # default to master if not specified | |
workflow: ${{ github.event.inputs.dispatch_workflow }} | |
inputs: ${{ steps.inputs.outputs.dispatch_inputs }} | |
token: ${{ secrets.GH_BOT_TOKEN || github.token }} # fallback to default token if not specified |