-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add check-dependent-jobs action (#16)
* Add check-dependent-jobs action * fix * fix * test * fix * Add debug * test * ok * fix paths * fix paths * modify test * fix * Add test case * test * add debug step * add path to no-test * remove debug step; not needed * Add expected result in name * Update check-dependent-jobs/README.md Co-authored-by: Victor Martinez <victormartinezrubio@gmail.com> * Rename 'needs' input to 'jobs' * Fix name * Use github-script * Update README.md --------- Co-authored-by: Victor Martinez <victormartinezrubio@gmail.com>
- Loading branch information
Showing
4 changed files
with
119 additions
and
0 deletions.
There are no files selected for viewing
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
name: test-check-dependent-jobs | ||
|
||
on: | ||
pull_request: | ||
branches: | ||
- main | ||
paths: | ||
- '.github/workflows/test-check-dependent-jobs.yml' | ||
- 'check-dependent-jobs/**' | ||
push: | ||
branches: | ||
- main | ||
paths: | ||
- '.github/workflows/test-check-dependent-jobs.yml' | ||
- 'check-dependent-jobs/**' | ||
|
||
permissions: | ||
contents: read | ||
|
||
jobs: | ||
test: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: ./check-dependent-jobs | ||
id: check | ||
with: | ||
jobs: '{ "job-a": { "result": "success" }, "job-b": { "result": "success" } }' | ||
- name: assert outputs.is-success==true | ||
run: test "${{ steps.check.outputs.is-success }}" = "true" | ||
- uses: ./check-dependent-jobs | ||
id: check-2 | ||
with: | ||
jobs: '{ "job-a": { "result": "success" }, "job-b": { "result": "failure" } }' | ||
- name: assert outputs.is-success==false | ||
run: test "${{ steps.check-2.outputs.is-success }}" = "false" | ||
- uses: ./check-dependent-jobs | ||
id: check-3 | ||
with: | ||
jobs: '{ "job-a": { "result": "failure" }, "job-b": { "result": "failure" } }' | ||
- name: assert outputs.is-success==false | ||
run: test "${{ steps.check-3.outputs.is-success }}" = "false" |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
# <!--name-->check-dependent-jobs<!--/name--> | ||
|
||
<!--description--> | ||
Evaluates the combined the status results of the provided needs context. | ||
<!--/description--> | ||
|
||
## Inputs | ||
<!--inputs--> | ||
| Name | Description | Required | Default | | ||
|--------|------------------------------|----------|---------| | ||
| `jobs` | needs context as JSON string | `true` | ` ` | | ||
<!--/inputs--> | ||
|
||
## Outputs | ||
|
||
<!--outputs--> | ||
| Name | Description | | ||
|--------------|-----------------------------------------------------------------| | ||
| `is-success` | The evaluated result of all provided jobs in the needs context. | | ||
| `status` | One of success or failure. | | ||
<!--/outputs--> | ||
|
||
## Usage | ||
|
||
<!--usage action="elastic/oblt-actions/check-dependent-jobs" version="env:VERSION"--> | ||
```yaml | ||
jobs: | ||
job-a: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- run: exit 1; | ||
job-b: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- run: exit 0; | ||
job-c: | ||
if: always() | ||
runs-on: ubuntu-latest | ||
needs: | ||
- job-a | ||
- job-b | ||
steps: | ||
- id: check | ||
uses: elastic/oblt-actions/check-dependent-jobs@v1 | ||
with: | ||
jobs: ${{ toJSON(needs) }} | ||
- run: ${{ steps.check.outputs.is-success }} # should exit with 1 or 0. | ||
``` | ||
<!--/usage--> |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
name: check-dependent-jobs | ||
description: | | ||
Evaluates the combined the status results of the provided needs context. | ||
inputs: | ||
jobs: | ||
required: true | ||
description: needs context as JSON string | ||
outputs: | ||
is-success: | ||
description: The evaluated result of all provided jobs in the needs context. | ||
value: ${{ steps.test.outputs.is-success }} | ||
status: | ||
description: One of success or failure. | ||
value: ${{ steps.test.outputs.status }} | ||
runs: | ||
using: composite | ||
steps: | ||
- id: test | ||
uses: actions/github-script@v7 | ||
with: | ||
script: | | ||
const jobs = JSON.parse(process.env.JOBS) | ||
const isSuccess = Object.values(jobs).every(job => job.result === 'success') | ||
core.setOutput('is-success', isSuccess) | ||
core.setOutput('status', isSuccess ? 'success' : 'failure') | ||
env: | ||
JOBS: ${{ inputs.jobs }} |