test: add reusable workflow expansion test for outputs (#1322)
In the "reusable workflow expansion" case (that is, when `runs-on` is not provided), this PR adds tests for `on.workflow_call.outputs`, and expands the test case to have two layers of reusable workflows to cover quirky behaviours that were discovered during manual testing. Manual invocation successful:  Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1322 Co-authored-by: Mathieu Fenniak <mathieu@fenniak.net> Co-committed-by: Mathieu Fenniak <mathieu@fenniak.net>
This commit is contained in:
parent
a8a26c9296
commit
cc2a2e85f7
4 changed files with 99 additions and 32 deletions
|
|
@ -0,0 +1,49 @@
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
outputs:
|
||||||
|
output1:
|
||||||
|
value: ${{ jobs.callee-1.outputs.job-output }}
|
||||||
|
output2:
|
||||||
|
value: ${{ jobs.callee-2.outputs.job-output }}
|
||||||
|
output3:
|
||||||
|
value: ${{ jobs.layer-2.outputs.output3 }}
|
||||||
|
output4:
|
||||||
|
value: ${{ jobs.layer-2.outputs.output4 }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
callee-1:
|
||||||
|
runs-on: docker
|
||||||
|
outputs:
|
||||||
|
job-output: callee-1-output
|
||||||
|
container:
|
||||||
|
image: data.forgejo.org/oci/node:22-bookworm
|
||||||
|
volumes:
|
||||||
|
- /srv/example:/srv/example
|
||||||
|
steps:
|
||||||
|
- name: indicate callee-1 hit
|
||||||
|
run: touch /srv/example/callee-1
|
||||||
|
|
||||||
|
layer-2:
|
||||||
|
uses: ./.forgejo/workflows/reusable-layer-2.yml
|
||||||
|
|
||||||
|
callee-2:
|
||||||
|
needs: [callee-1, layer-2]
|
||||||
|
runs-on: docker
|
||||||
|
outputs:
|
||||||
|
job-output: callee-2-output
|
||||||
|
container:
|
||||||
|
image: data.forgejo.org/oci/node:22-bookworm
|
||||||
|
volumes:
|
||||||
|
- /srv/example:/srv/example
|
||||||
|
steps:
|
||||||
|
- name: verify callee-1 completed
|
||||||
|
run: |
|
||||||
|
set -x
|
||||||
|
test -f /srv/example/callee-1
|
||||||
|
- name: verify layer-2 completed
|
||||||
|
run: |
|
||||||
|
set -x
|
||||||
|
test -f /srv/example/callee-3
|
||||||
|
test -f /srv/example/callee-4
|
||||||
|
- name: indicate callee-2 hit
|
||||||
|
run: touch /srv/example/callee-2
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
outputs:
|
||||||
|
output3:
|
||||||
|
value: ${{ jobs.callee-3.outputs.job-output }}
|
||||||
|
output4:
|
||||||
|
value: ${{ jobs.callee-4.outputs.job-output }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
callee-3:
|
||||||
|
runs-on: docker
|
||||||
|
outputs:
|
||||||
|
job-output: callee-3-output
|
||||||
|
container:
|
||||||
|
image: data.forgejo.org/oci/node:22-bookworm
|
||||||
|
volumes:
|
||||||
|
- /srv/example:/srv/example
|
||||||
|
steps:
|
||||||
|
- name: indicate callee-3 hit
|
||||||
|
run: touch /srv/example/callee-3
|
||||||
|
|
||||||
|
callee-4:
|
||||||
|
needs: callee-3
|
||||||
|
runs-on: docker
|
||||||
|
outputs:
|
||||||
|
job-output: callee-4-output
|
||||||
|
container:
|
||||||
|
image: data.forgejo.org/oci/node:22-bookworm
|
||||||
|
volumes:
|
||||||
|
- /srv/example:/srv/example
|
||||||
|
steps:
|
||||||
|
- name: verify callee-3 completed
|
||||||
|
run: |
|
||||||
|
set -x
|
||||||
|
test -f /srv/example/callee-3
|
||||||
|
- name: indicate callee-4 hit
|
||||||
|
run: touch /srv/example/callee-4
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
callee-1:
|
|
||||||
runs-on: docker
|
|
||||||
container:
|
|
||||||
image: data.forgejo.org/oci/node:22-bookworm
|
|
||||||
volumes:
|
|
||||||
- /srv/example:/srv/example
|
|
||||||
steps:
|
|
||||||
- name: indicate callee-1 hit
|
|
||||||
run: touch /srv/example/callee-1
|
|
||||||
|
|
||||||
callee-2:
|
|
||||||
needs: callee-1
|
|
||||||
runs-on: docker
|
|
||||||
container:
|
|
||||||
image: data.forgejo.org/oci/node:22-bookworm
|
|
||||||
volumes:
|
|
||||||
- /srv/example:/srv/example
|
|
||||||
steps:
|
|
||||||
- name: verify callee-1 completed
|
|
||||||
run: |
|
|
||||||
set -x
|
|
||||||
test -f /srv/example/callee-1
|
|
||||||
- name: indicate callee-2 hit
|
|
||||||
run: touch /srv/example/callee-2
|
|
||||||
|
|
@ -2,19 +2,28 @@ on:
|
||||||
push:
|
push:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
caller:
|
layer-1:
|
||||||
uses: ./.forgejo/workflows/reusable.yml
|
uses: ./.forgejo/workflows/reusable-layer-1.yml
|
||||||
|
|
||||||
verify:
|
verify:
|
||||||
needs: [caller]
|
needs: [layer-1]
|
||||||
runs-on: docker
|
runs-on: docker
|
||||||
container:
|
container:
|
||||||
image: data.forgejo.org/oci/node:22-bookworm
|
image: data.forgejo.org/oci/node:22-bookworm
|
||||||
volumes:
|
volumes:
|
||||||
- /srv/example:/srv/example
|
- /srv/example:/srv/example
|
||||||
steps:
|
steps:
|
||||||
- name: verify callee-1 & callee-2 completed
|
- name: verify callee-[0-4] completed
|
||||||
run: |
|
run: |
|
||||||
set -x
|
set -x
|
||||||
test -f /srv/example/callee-1
|
test -f /srv/example/callee-1
|
||||||
test -f /srv/example/callee-2
|
test -f /srv/example/callee-2
|
||||||
|
test -f /srv/example/callee-3
|
||||||
|
test -f /srv/example/callee-4
|
||||||
|
- name: verify workflow outputs
|
||||||
|
run: |
|
||||||
|
set -x
|
||||||
|
test "callee-1-output" = "${{ needs.layer-1.outputs.output1 }}"
|
||||||
|
test "callee-2-output" = "${{ needs.layer-1.outputs.output2 }}"
|
||||||
|
test "callee-3-output" = "${{ needs.layer-1.outputs.output3 }}"
|
||||||
|
test "callee-4-output" = "${{ needs.layer-1.outputs.output4 }}"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue