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:
|
||||
|
||||
jobs:
|
||||
caller:
|
||||
uses: ./.forgejo/workflows/reusable.yml
|
||||
layer-1:
|
||||
uses: ./.forgejo/workflows/reusable-layer-1.yml
|
||||
|
||||
verify:
|
||||
needs: [caller]
|
||||
needs: [layer-1]
|
||||
runs-on: docker
|
||||
container:
|
||||
image: data.forgejo.org/oci/node:22-bookworm
|
||||
volumes:
|
||||
- /srv/example:/srv/example
|
||||
steps:
|
||||
- name: verify callee-1 & callee-2 completed
|
||||
- name: verify callee-[0-4] completed
|
||||
run: |
|
||||
set -x
|
||||
test -f /srv/example/callee-1
|
||||
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