actions: add an example for workflow-dispatch
/repos/{owner}/{repo}/actions/workflows/{workflowname}/dispatches * fails if the required inputs are not provided * sets defaults to inputs that are not provided The type of inputs are only used for building the web UI interface, not for validation. All values are strings.
This commit is contained in:
parent
64489247aa
commit
05a341e201
4 changed files with 126 additions and 0 deletions
|
@ -118,5 +118,11 @@ function test_actions() {
|
|||
run actions_verify_example $example
|
||||
done
|
||||
fi
|
||||
|
||||
if dpkg --compare-versions $version ge 8.0 ; then
|
||||
for example in workflow-dispatch ; do
|
||||
run actions_verify_example $example
|
||||
done
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
logLevel:
|
||||
description: 'Log Level'
|
||||
required: true
|
||||
default: 'warning'
|
||||
type: choice
|
||||
options:
|
||||
- info
|
||||
- warning
|
||||
- debug
|
||||
tags:
|
||||
description: 'Test scenario tags'
|
||||
required: false
|
||||
type: boolean
|
||||
boolean_default_true:
|
||||
description: 'Test scenario tags'
|
||||
required: true
|
||||
type: boolean
|
||||
default: true
|
||||
boolean_default_false:
|
||||
description: 'Test scenario tags'
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
number1_default:
|
||||
description: 'Number w. default'
|
||||
default: '100'
|
||||
type: number
|
||||
number2:
|
||||
description: 'Number w/o. default'
|
||||
type: number
|
||||
string1_default:
|
||||
description: 'String w. default'
|
||||
default: 'Hello world'
|
||||
type: string
|
||||
string2:
|
||||
description: 'String w/o. default'
|
||||
required: true
|
||||
type: string
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: docker
|
||||
container:
|
||||
image: code.forgejo.org/oci/debian:bookworm
|
||||
options: "--volume /srv/example:/srv/example"
|
||||
|
||||
steps:
|
||||
- name: save and display context
|
||||
run: |
|
||||
d=/srv/example/workflow-dispatch/contexts/$GITHUB_EVENT_NAME
|
||||
mkdir -p $d
|
||||
tee $d/github <<'EOF'
|
||||
${{ toJSON(github) }}
|
||||
EOF
|
62
actions/example-workflow-dispatch/run.sh
Executable file
62
actions/example-workflow-dispatch/run.sh
Executable file
|
@ -0,0 +1,62 @@
|
|||
TMPDIR=$(mktemp -d)
|
||||
|
||||
trap "rm -fr $TMPDIR" EXIT
|
||||
|
||||
source $EXAMPLE_DIR/../../lib/lib.sh
|
||||
|
||||
export d=/srv/example/tag
|
||||
context=/srv/example/workflow-dispatch/contexts/workflow_dispatch/github
|
||||
api=$url/api/v1
|
||||
repo=root/example-$example
|
||||
|
||||
function context_wait() {
|
||||
if ! forgejo.sh retry test -f $context ; then
|
||||
cat "$FORGEJO_RUNNER_LOGS"
|
||||
false
|
||||
fi
|
||||
}
|
||||
|
||||
function verify_required() {
|
||||
local actual=$(forgejo-curl.sh api_json -w '%{http_code}' --data '{"ref":"main","inputs":{}}' $api/repos/$repo/actions/workflows/test.yml/dispatches)
|
||||
local expected=400
|
||||
if test "$actual" != $expected ; then
|
||||
log_info "dispatch is expected to fail with status $expected because of string2 is a required value but got status $actual instead"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function verify_inputs() {
|
||||
local inputs='{"string2":"value2"}'
|
||||
forgejo-curl.sh api_json --data '{"ref":"main","inputs":'$inputs'}' $api/repos/$repo/actions/workflows/test.yml/dispatches
|
||||
cat > $TMPDIR/expected <<'EOF'
|
||||
{
|
||||
"boolean_default_false": "false",
|
||||
"boolean_default_true": "true",
|
||||
"logLevel": "warning",
|
||||
"number1_default": "100",
|
||||
"string1_default": "Hello world",
|
||||
"string2": "value2"
|
||||
}
|
||||
EOF
|
||||
}
|
||||
|
||||
function run_tests() {
|
||||
verify_required
|
||||
|
||||
npm --silent install json-diff
|
||||
verify_inputs
|
||||
context_wait
|
||||
node_modules/.bin/json-diff <(jq .event.inputs < $context) $TMPDIR/expected
|
||||
}
|
||||
|
||||
function main() {
|
||||
mkdir -p $d
|
||||
|
||||
forgejo-test-helper.sh push_workflow actions/example-$example $url root example-$example setup-forgejo $token
|
||||
|
||||
run_tests
|
||||
|
||||
test "workflow_dispatch" = "$(jq -r .event_name < $context)"
|
||||
}
|
||||
|
||||
main
|
1
actions/example-workflow-dispatch/setup.sh
Executable file
1
actions/example-workflow-dispatch/setup.sh
Executable file
|
@ -0,0 +1 @@
|
|||
mkdir -p /srv/example/workflow-dispatch
|
Loading…
Add table
Reference in a new issue