Adds pullRequestLabels output
diff --git a/README.md b/README.md
index 1af4d6f..601c99e 100644
--- a/README.md
+++ b/README.md
@@ -13,6 +13,9 @@
- [Inputs and outputs](#inputs-and-outputs)
- [Inputs](#inputs)
- [Outputs](#outputs)
+- [Examples](#examples)
+ - [Workflow Run event](#workflow-run-event)
+ - [Workflow Run event](#workflow-run-event-1)
- [Development environment](#development-environment)
- [License](#license)
@@ -20,13 +23,20 @@
# Context and motivation
-Get Workflow Origin is an action that provides missing information for `workflow_run` events
-Often in the `workflow_run` event you want to get more information about the source run than the
-one provided directly via GitHub context. For example you would like to know what is the merge
-commit generated by pull request in case the workflow was triggered by a pull request.
+Get Workflow Origin is an action that provides information about the pull requests that triggered the
+workflow for the `workflow_run` and `pull_request` events.
-This action provides outputs that give the missing information. You should add this action as first
-one in the "workflow_run" event and then you will be able to use those outputs.
+Often in those events you want to get more information about the source run than the
+one provided directly via GitHub context.
+
+For example, you would like to know what is the merge commit generated by pull request in case
+the workflow is triggered by a pull request, or labels associated with the Pull Request.
+
+This action provides outputs that give that information. You should add this action as first
+one in your workflow and then you will be able to use those outputs using 'needs' dependency.
+
+The `sourceRunId` input should not be specified in case of the `pull_request` event, but it should
+be set to `${{ github.event.workflow_run.id }}` in case of the `workflow_run` event.
# Inputs and outputs
@@ -35,19 +45,85 @@
| Input | Required | Default | Comment |
|-------------------------|----------|--------------|-----------------------------------------------------------------------------------------------------|
| `token` | yes | | The github token passed from `${{ secrets.GITHUB_TOKEN }}` |
-| `sourceRunId` | yes | | It should be set to the id of the workflow triggering the run `${{ github.event.workflow_run.id }}` |
+| `sourceRunId` | no | | In case of 'workflow_run' event it should be set to `${{ github.event.workflow_run.id }}` |
## Outputs
-| Output | No `sourceRunId` specified | The `sourceRunId` set to `${{ github.event.workflow_run.id }}` |
-|---------------------|---------------------------------------------------------|------------------------------------------------------------------------------------------------------|
-| `sourceHeadRepo` | Current repository. Format: `owner/repo` | Repository of the run that triggered this `workflow_run`. Format: `owner/repo` |
-| `sourceHeadBranch` | Current branch. | Branch of the run that triggered this `workflow_run`. Might be forked repo, if it is a pull_request. |
-| `sourceHeadSha` | Current commit SHA: `{{ github.sha }}` | Commit sha of the run that triggered this `workflow_run`. |
-| `mergeCommitSha` | Merge commit SHA if PR-triggered event. | Merge commit SHA if PR-triggered event. |
-| `targetCommitSha` | Target commit SHA (merge if present, otherwise source). | Target commit SHA (merge if present, otherwise source). |
-| `pullRequestNumber` | Number of the associated Pull Request (if PR triggered) | Number of the associated Pull Request (if PR triggered) |
-| `sourceEvent` | Current event: ``${{ github.event }}`` | Event of the run that triggered this `workflow_run` |
+| Output | No `sourceRunId` specified | The `sourceRunId` set to `${{ github.event.workflow_run.id }}` |
+|---------------------|-----------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|
+| `sourceHeadRepo` | Current repository. Format: `owner/repo` | Repository of the run that triggered this `workflow_run`. Format: `owner/repo` |
+| `sourceHeadBranch` | Current branch. | Branch of the run that triggered this `workflow_run`. Might be forked repo, if it is a pull_request. |
+| `sourceHeadSha` | Current commit SHA: `{{ github.sha }}` | Commit sha of the run that triggered this `workflow_run`. |
+| `mergeCommitSha` | Merge commit SHA if PR-triggered event. | Merge commit SHA if PR-triggered event. |
+| `targetCommitSha` | Target commit SHA (merge if present, otherwise source). | Target commit SHA (merge if present, otherwise source). |
+| `pullRequestNumber` | Number of the associated Pull Request (if PR triggered) | Number of the associated Pull Request (if PR triggered) |
+| `pullRequestLabels` | Stringified JSON array of Labels of the associated Pull Request (if PR triggered) | Stringified JSON array of Labels of the associated Pull Request (if PR triggered) |
+| `sourceEvent` | Current event: ``${{ github.event }}`` | Event of the run that triggered this `workflow_run` |
+
+# Examples
+
+### Workflow Run event
+
+```yaml
+name: Get information
+on:
+ pull_request:
+ branches: ['main']
+
+jobs:
+ get-info:
+ name: "Get information about the source run"
+ runs-on: ubuntu-latest
+ outputs:
+ sourceHeadRepo: ${{ steps.workflow-run-info.outputs.sourceHeadRepo }}
+ sourceHeadBranch: ${{ steps.workflow-run-info.outputs.sourceHeadBranch }}
+ sourceHeadSha: ${{ steps.workflow-run-info.outputs.sourceHeadSha }}
+ mergeCommitSha: ${{ steps.workflow-run-info.outputs.mergeCommitSha }}
+ targetCommitSha: ${{ steps.workflow-run-info.outputs.targetCommitSha }}
+ pullRequestNumber: ${{ steps.workflow-run-info.outputs.pullRequestNumber }}
+ pullRequestLabels: ${{ steps.workflow-run-info.outputs.pullRequestLabels }}
+ sourceEvent: ${{ steps.workflow-run-info.outputs.sourceEvent }}
+ steps:
+ - name: "Get information about the current run"
+ uses: potiuk/get-workflow-origin@v1_1
+ id: workflow-run-info
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+```
+
+
+### Workflow Run event
+
+```yaml
+name: Build
+on:
+ workflow_run:
+ workflows: ['CI']
+ types: ['requested']
+
+jobs:
+ get-info:
+ name: "Get information about the source run"
+ runs-on: ubuntu-latest
+ outputs:
+ sourceHeadRepo: ${{ steps.source-run-info.outputs.sourceHeadRepo }}
+ sourceHeadBranch: ${{ steps.source-run-info.outputs.sourceHeadBranch }}
+ sourceHeadSha: ${{ steps.source-run-info.outputs.sourceHeadSha }}
+ mergeCommitSha: ${{ steps.source-run-info.outputs.mergeCommitSha }}
+ targetCommitSha: ${{ steps.source-run-info.outputs.targetCommitSha }}
+ pullRequestNumber: ${{ steps.source-run-info.outputs.pullRequestNumber }}
+ pullRequestLabels: ${{ steps.source-run-info.outputs.pullRequestLabels }}
+ sourceEvent: ${{ steps.source-run-info.outputs.sourceEvent }}
+
+ steps:
+ - name: "Get information about the origin 'CI' run"
+ uses: potiuk/get-workflow-origin@v1_1
+ id: source-run-info
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ sourceRunId: ${{ github.event.workflow_run.id }}```
+```
+
## Development environment
diff --git a/dist/index.js b/dist/index.js
index a8818f2..f67f8c6 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -1546,15 +1546,14 @@
core.info(`Repository: ${repository}, Owner: ${owner}, Repo: ${repo}, ` +
`Event name: ${eventName},` +
`sourceWorkflowId: ${sourceWorkflowId}, sourceRunId: ${sourceRunId}, selfRunId: ${selfRunId}, `);
- if (eventName !== 'workflow_run') {
- throw Error(`This action is only useful in "workflow_run" triggered runs and you used it in ${eventName}`);
- }
const [headRepo, headBranch, sourceEventName, headSha, mergeCommitSha, pullRequest] = yield getOrigin(octokit, sourceRunId, owner, repo);
verboseOutput('sourceHeadRepo', headRepo);
verboseOutput('sourceHeadBranch', headBranch);
verboseOutput('sourceHeadSha', headSha);
verboseOutput('sourceEvent', sourceEventName);
verboseOutput('pullRequestNumber', pullRequest ? pullRequest.number.toString() : '');
+ const labelNames = pullRequest ? pullRequest.labels.map(x => x.name) : [];
+ verboseOutput('pullRequestLabels', JSON.stringify(labelNames));
verboseOutput('mergeCommitSha', mergeCommitSha);
verboseOutput('targetCommitSha', pullRequest ? mergeCommitSha : headSha);
});
diff --git a/src/main.ts b/src/main.ts
index b516883..63d0c23 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -132,11 +132,6 @@
`sourceWorkflowId: ${sourceWorkflowId}, sourceRunId: ${sourceRunId}, selfRunId: ${selfRunId}, `
)
- if (eventName !== 'workflow_run') {
- throw Error(
- `This action is only useful in "workflow_run" triggered runs and you used it in ${eventName}`
- )
- }
const [
headRepo,
headBranch,
@@ -154,6 +149,8 @@
'pullRequestNumber',
pullRequest ? pullRequest.number.toString() : ''
)
+ const labelNames = pullRequest ? pullRequest.labels.map(x => x.name) : []
+ verboseOutput('pullRequestLabels', JSON.stringify(labelNames))
verboseOutput('mergeCommitSha', mergeCommitSha)
verboseOutput('targetCommitSha', pullRequest ? mergeCommitSha : headSha)
}