Experiment with job-context
action
#19
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: Integration Tests | |
on: | |
pull_request: | |
paths: | |
- "action.yaml" | |
- ".github/workflows/integration-tests.yaml" | |
jobs: | |
setup-simple: | |
name: Setup Simple | |
runs-on: ubuntu-latest | |
permissions: | |
actions: read | |
contents: read | |
strategy: | |
fail-fast: false | |
matrix: | |
index: | |
- 1 | |
- 2 | |
outputs: | |
results-json: ${{ steps.matrix-output.outputs.json }} | |
steps: | |
- uses: actions/checkout@v4 | |
# Slow down on job to ensure that this is the last run | |
- if: ${{ strategy.job-index == 0 }} | |
run: sleep 5 | |
# Keep `id` the same between `setup-simple` and `setup-complex` | |
# to ensure we can separate output per job. | |
- uses: ./ | |
id: matrix-output | |
with: | |
yaml: | | |
index: ${{ matrix.index }} | |
test-simple: | |
name: Test Simple | |
needs: setup-simple | |
runs-on: ubuntu-latest | |
steps: | |
- name: Output JSON | |
run: | | |
if [[ "${output_json}" != "${expected_json}" ]]; then | |
cat <<<"${output_json}" >"output" | |
cat <<<"${expected_json}" >"expected" | |
diff output expected | cat -te | |
exit 1 | |
fi | |
env: | |
output_json: ${{ needs.setup-simple.outputs.results-json }} | |
expected_json: |- | |
[ | |
{ | |
"index": 1 | |
}, | |
{ | |
"index": 2 | |
} | |
] | |
setup-complex: | |
name: Setup Complex | |
runs-on: ubuntu-latest | |
permissions: | |
actions: read | |
contents: read | |
strategy: | |
fail-fast: false | |
matrix: | |
build: | |
- name: App One | |
repo: user/app1 | |
- name: App Two | |
repo: user/app2 | |
version: | |
- "1.0" | |
- "2.0" | |
outputs: | |
results-json: ${{ steps.matrix-output.outputs.json }} | |
steps: | |
- uses: actions/checkout@v4 | |
# Keep `id` the same between `setup-simple` and `setup-complex` | |
# to ensure we can separate output per job. | |
- uses: ./ | |
id: matrix-output | |
with: | |
yaml: | | |
name: ${{ matrix.build.name }} | |
repo: ${{ matrix.build.repo }} | |
version_string: "${{ matrix.version }}" | |
version_number: ${{ matrix.version }} | |
test-complex: | |
name: Test Complext | |
needs: setup-complex | |
runs-on: ubuntu-latest | |
steps: | |
- name: Output JSON | |
run: | | |
if [[ "${output_json}" != "${expected_json}" ]]; then | |
cat <<<"${output_json}" >"output" | |
cat <<<"${expected_json}" >"expected" | |
diff output expected | cat -te | |
exit 1 | |
fi | |
env: | |
output_json: ${{ needs.setup-complex.outputs.results-json }} | |
expected_json: |- | |
[ | |
{ | |
"name": "App One", | |
"repo": "user/app1", | |
"version_string": "1.0", | |
"version_number": 1 | |
}, | |
{ | |
"name": "App One", | |
"repo": "user/app1", | |
"version_string": "2.0", | |
"version_number": 2 | |
}, | |
{ | |
"name": "App Two", | |
"repo": "user/app2", | |
"version_string": "1.0", | |
"version_number": 1 | |
}, | |
{ | |
"name": "App Two", | |
"repo": "user/app2", | |
"version_string": "2.0", | |
"version_number": 2 | |
} | |
] | |
test-empty: | |
name: Test Empty | |
runs-on: ubuntu-latest | |
permissions: | |
actions: read | |
contents: read | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./ | |
id: matrix-output | |
continue-on-error: true | |
with: | |
yaml: "" | |
- name: Action failed | |
if: ${{ steps.matrix-output.outcome == 'success' }} | |
run: exit 1 | |
test-job-name: | |
name: Job Name | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./job-name/ | |
id: job-name | |
- run: | | |
if [[ "${output}" != "${expected}" ]]; then | |
exit 1 | |
fi | |
env: | |
output: ${{ steps.job-name.outputs.job-name }} | |
expected: "Job Name" | |
test-job-name-matrix: | |
name: Job Name | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
strategy: | |
fail-fast: false | |
matrix: | |
build: | |
- name: App One | |
repo: user/app1 | |
- name: App Two | |
repo: user/app2 | |
version: | |
- "1.0" | |
- "2.0" | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./job-name/ | |
id: job-name | |
- run: | | |
if [[ "${output}" != "${expected}" ]]; then | |
exit 1 | |
fi | |
env: | |
output: ${{ steps.job-name.outputs.job-name }} | |
expected: "Job Name (${{ matrix.build.name }}, ${{ matrix.build.repo }}, ${{ matrix.version }})" | |
test-job-name-matrix-expr: | |
name: ${{ github.job }} - ${{ matrix.index }} - ${{ strategy.job-index }} | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
strategy: | |
fail-fast: false | |
matrix: | |
index: | |
- 1 | |
- 2 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./job-name/ | |
id: job-name | |
- run: | | |
if [[ "${output}" != "${expected}" ]]; then | |
exit 1 | |
fi | |
env: | |
output: ${{ steps.job-name.outputs.job-name }} | |
expected: ${{ github.job }} - ${{ matrix.index }} - ${{ strategy.job-index }} |