Merge pull request 'actions: add an example for workflow-dispatch' (#220) from earl-warren/end-to-end:wip-workflow-dispatch into main
Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/220
This commit is contained in:
commit
631262b3b9
5 changed files with 127 additions and 1 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
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
RUN_MODE = prod
|
||||
RUN_MODE = dev
|
||||
WORK_PATH = forgejo-work-path
|
||||
|
||||
[server]
|
||||
|
|
|
@ -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