mirror of
https://github.com/vim/vim.git
synced 2025-12-10 18:46:57 -05:00
And include "extra" Linux elements to further disambiguate archive names. The current naming of artifacts is inadequate when it comes to files whose differing name-parts only come from array values, as arrays are not automatically converted to string. For example, both artifacts for failing "socketserver" and "no_x11" CI jobs will claim the same name, and whichever job finishes last is allowed to overwrite another matching name artifact. Reference: https://docs.github.com/en/actions/reference/workflows-and-actions/expressions#functions closes: #18556 Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
56 lines
1.9 KiB
YAML
56 lines
1.9 KiB
YAML
name: 'test_artifacts'
|
|
description: "Upload failed test artifacts"
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
- name: Collect matrix properties for naming
|
|
uses: actions/github-script@v8
|
|
id: matrix-props
|
|
env:
|
|
MATRIX_PROPS: ${{ toJSON(matrix) }}
|
|
with:
|
|
# An array-flattening-to-string JavaScript function.
|
|
script: |
|
|
const f = function (x) { return x.toString().length > 0; }
|
|
const g = function (x) {
|
|
return (Array.isArray(x))
|
|
? x.filter(f)
|
|
.map((function (h) { return function (y) { return h(y); }; })(g))
|
|
.join('-')
|
|
: x;
|
|
}
|
|
return Object.values(JSON.parse(process.env.MATRIX_PROPS))
|
|
.filter(f)
|
|
.map(g)
|
|
.join('-');
|
|
# By default, the JSON-encoded return value of the function is
|
|
# set as the "result".
|
|
result-encoding: string
|
|
- name: Upload failed tests
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
# Name of the artifact to upload.
|
|
name: ${{ format('GH-{0}-{1}-{2}-{3}-{4}-failed-tests',
|
|
github.run_id,
|
|
github.run_attempt,
|
|
github.job,
|
|
strategy.job-index,
|
|
steps.matrix-props.outputs.result) }}
|
|
|
|
# A file, directory or wildcard pattern that describes what
|
|
# to upload.
|
|
path: |
|
|
${{ github.workspace }}/runtime/indent/testdir/*.fail
|
|
${{ github.workspace }}/runtime/syntax/testdir/failed/*
|
|
${{ github.workspace }}/src/testdir/failed/*
|
|
# The desired behavior if no files are found using the
|
|
# provided path.
|
|
if-no-files-found: ignore
|
|
|
|
# Duration after which artifact will expire in days. 0 means
|
|
# using repository settings.
|
|
retention-days: 0
|
|
|
|
# If true, an artifact with a matching name will be deleted
|
|
overwrite: true
|