-
-
Notifications
You must be signed in to change notification settings - Fork 175
/
action.yml
195 lines (188 loc) · 10.2 KB
/
action.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
name: 'Publish Unit Test Results'
author: 'EnricoMi'
description: 'A GitHub Action that publishes test results on GitHub'
inputs:
github_token:
description: 'GitHub API Access Token'
default: ${{ github.token }}
required: false
github_retries:
description: 'Requests to the GitHub API are retried this number of times. The value must be a positive integer or zero.'
default: '10'
required: false
commit:
description: 'Commit SHA to which test results are published. Only needed if the value of GITHUB_SHA does not work for you.'
required: false
check_name:
description: 'Name of the created check run'
default: 'Test Results'
required: false
comment_title:
description: 'An alternative title for the pull request comment. Defaults to value of check_name input'
required: false
comment_mode:
description: 'The action posts comments to pull requests that are associated with the commit. Set to "always" - always comment, "changes" - comment when changes w.r.t. the target branch exist, "changes in failures" - when changes in the number of failures and errors exist, "changes in errors" - when changes in the number of (only) errors exist, "failures" - when failures or errors exist, "errors" - when (only) errors exist, "off" - to not create pull request comments'
default: 'always'
required: false
fail_on:
description: 'The created test result check run has failure state if any test fails or test errors occur. Never fails when set to "nothing", fails only on errors when set to "errors". Default is "test failures".'
default: 'test failures'
required: false
junit_files:
description: 'File patterns of JUnit XML test result files. Supports *, **, ?, and []. Use multiline string for multiple patterns. Patterns starting with ! exclude the matching files. There have to be at least one pattern starting without a `!`.'
required: false
nunit_files:
description: 'File patterns of NUnit XML test result files. Supports *, **, ?, and []. Use multiline string for multiple patterns. Patterns starting with ! exclude the matching files. There have to be at least one pattern starting without a `!`.'
required: false
xunit_files:
description: 'File patterns of XUnit XML test result files. Supports *, **, ?, and []. Use multiline string for multiple patterns. Patterns starting with ! exclude the matching files. There have to be at least one pattern starting without a `!`.'
required: false
trx_files:
description: 'File patterns of TRX test result files. Supports *, **, ?, and []. Use multiline string for multiple patterns. Patterns starting with ! exclude the matching files. There have to be at least one pattern starting without a `!`.'
required: false
time_unit:
description: 'Time values in the test result files have this unit. Supports "seconds" and "milliseconds".'
default: 'seconds'
required: false
report_individual_runs:
description: 'Individual runs of the same test may see different failures. Reports all individual failures when set "true" or the first only otherwise'
required: false
deduplicate_classes_by_file_name:
description: 'De-duplicates classes with same name by their file name when set "true", combines test results for those classes otherwise'
required: false
ignore_runs:
description: 'Does not collect test run information from the test result files, which is useful for very large files. This disables any check run annotations'
default: 'false'
required: false
hide_comments:
description: 'Configures which earlier comments of the action to hide: off - no comments, orphaned commits - comments for commits that are removed from the branch, all but latest - all comments but the latest'
default: 'all but latest'
required: false
comment_on_pr:
description: 'Deprecated, please use comment_mode instead!'
required: false
job_summary:
description: 'Set to "true", the results are published as part of the job summary page of the workflow run'
default: 'true'
required: false
compare_to_earlier_commit:
description: 'Test results are compared to results of earlier commits to highlight changes: "false" - disable comparison, "true" - compare across commits'
default: 'true'
required: false
pull_request_build:
description: 'As part of pull requests, GitHub builds a merge commit, which combines the commit and the target branch. If tests ran on the actual pushed commit, then set this to "commit". Defaults to "merge".'
default: 'merge'
required: false
event_file:
description: 'An alternative event file to use. Useful to replace a "workflow_run" event file with the actual source event file.'
required: false
event_name:
description: 'An alternative event name to use. Useful to replace a "workflow_run" event name with the actual source event name: github.event.workflow_run.event.'
required: false
test_changes_limit:
description: 'Limits the number of removed or skipped tests reported on pull request comments. This report can be disabled with a value of 0. The default is 10.'
required: false
check_run_annotations:
description: 'Adds additional information to the check run. This is a comma-separated list of any of the following values: "all tests" - list all found tests, "skipped tests" - list all skipped tests. Set to "none" to add no extra annotations at all'
default: 'all tests, skipped tests'
required: false
check_run_annotations_branch:
description: 'Adds check run annotations only on given branches. Comma-separated list of branch names allowed, asterisk "*" matches all branches. Defaults to event.repository.default_branch or "main, master".'
required: false
seconds_between_github_reads:
description: 'Sets the number of seconds the action waits between concurrent read requests to the GitHub API. This throttles the API usage to avoid abuse rate limits: https://docs.github.com/en/rest/overview/resources-in-the-rest-api#abuse-rate-limits'
default: '0.25'
required: false
seconds_between_github_writes:
description: 'Sets the number of seconds the action waits between concurrent write requests to the GitHub API. This throttles the API usage to avoid abuse rate limits: https://docs.github.com/en/rest/overview/resources-in-the-rest-api#abuse-rate-limits'
default: '2.0'
required: false
json_file:
description: 'Results are written to this JSON file.'
required: false
json_thousands_separator:
description: 'Formatted numbers in JSON use this character to separate groups of thousands. Common values are "," or ".". Defaults to punctuation space (\u2008).'
default: ' '
required: false
outputs:
json:
description: "Test results as JSON"
value: ${{ steps.test-results.outputs.json }}
runs:
using: 'composite'
steps:
- name: Check for Python3
run: |
echo '##[group]Check for Python3'
# we check version here just to execute `python3` with an argument
# on Windows, there is a `python3.exe` that is a proxy to trigger installation from app store
# command `which python3` finds that, but `python3 -V` does not return the version on stdout
if ! which python3 || [[ $(python3 -V) != *"python 3."* && $(python3 -V) != *"Python 3."* ]]
then
if ! which python || [[ $(python -V) != *"python 3."* && $(python -V) != *"Python 3."* ]]
then
echo "::error::No python3 interpreter found. Please setup python before running this action. You could use https://github.com/actions/setup-python."
exit 1
fi
interpreter="$(which python)"
if [[ ! -e "${interpreter}3" ]]
then
mkdir -p "$RUNNER_TEMP/bin/"
ln -s "$interpreter" "$RUNNER_TEMP/bin/python3"
echo "$RUNNER_TEMP/bin" >> $GITHUB_PATH
fi
fi
echo '##[endgroup]'
shell: bash
- name: Install Python dependencies
run: |
echo '##[group]Install Python dependencies'
python3 -m pip install -r $GITHUB_ACTION_PATH/../python/requirements.txt
echo '##[endgroup]'
shell: bash
- name: Publish Test Results
id: test-results
run: |
echo '##[group]Publish Test Results'
python3 $GITHUB_ACTION_PATH/../python/publish_unit_test_results.py
echo '##[endgroup]'
env:
GITHUB_TOKEN: ${{ inputs.github_token }}
GITHUB_RETRIES: ${{ inputs.github_retries }}
COMMIT: ${{ inputs.commit }}
CHECK_NAME: ${{ inputs.check_name }}
COMMENT_TITLE: ${{ inputs.comment_title }}
COMMENT_MODE: ${{ inputs.comment_mode }}
FAIL_ON: ${{ inputs.fail_on }}
# deprecated
FILES: ${{ inputs.files }}
JUNIT_FILES: ${{ inputs.junit_files }}
NUNIT_FILES: ${{ inputs.nunit_files }}
XUNIT_FILES: ${{ inputs.xunit_files }}
TRX_FILES: ${{ inputs.trx_files }}
TIME_UNIT: ${{ inputs.time_unit }}
REPORT_INDIVIDUAL_RUNS: ${{ inputs.report_individual_runs }}
DEDUPLICATE_CLASSES_BY_FILE_NAME: ${{ inputs.deduplicate_classes_by_file_name }}
IGNORE_RUNS: ${{ inputs.ignore_runs }}
HIDE_COMMENTS: ${{ inputs.hide_comments }}
COMMENT_ON_PR: ${{ inputs.comment_on_pr }}
COMPARE_TO_EARLIER_COMMIT: ${{ inputs.compare_to_earlier_commit }}
PULL_REQUEST_BUILD: ${{ inputs.pull_request_build }}
EVENT_FILE: ${{ inputs.event_file }}
EVENT_NAME: ${{ inputs.event_name }}
TEST_CHANGES_LIMIT: ${{ inputs.test_changes_limit }}
CHECK_RUN_ANNOTATIONS: ${{ inputs.check_run_annotations }}
CHECK_RUN_ANNOTATIONS_BRANCH: ${{ inputs.check_run_annotations_branch }}
SECONDS_BETWEEN_GITHUB_READS: ${{ inputs.seconds_between_github_reads }}
SECONDS_BETWEEN_GITHUB_WRITES: ${{ inputs.seconds_between_github_writes }}
JSON_FILE: ${{ inputs.json_file }}
JSON_THOUSANDS_SEPARATOR: ${{ inputs.json_thousands_separator }}
JOB_SUMMARY: ${{ inputs.job_summary }}
# not documented
ROOT_LOG_LEVEL: ${{ inputs.root_log_level }}
# not documented
LOG_LEVEL: ${{ inputs.log_level }}
shell: bash
branding:
icon: 'check-circle'
color: 'green'