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
|
run actions_verify_example $example
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if dpkg --compare-versions $version ge 8.0 ; then
|
||||||
|
for example in workflow-dispatch ; do
|
||||||
|
run actions_verify_example $example
|
||||||
|
done
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
RUN_MODE = prod
|
RUN_MODE = dev
|
||||||
WORK_PATH = forgejo-work-path
|
WORK_PATH = forgejo-work-path
|
||||||
|
|
||||||
[server]
|
[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