CI: Include a job index in names of collected artifacts

Commit: 
https://github.com/vim/vim/commit/b32da7de63c81d8880bf5b25835c53bcf363fc26
Author: Aliaksei Budavei <[email protected]>
Date:   Sat Oct 25 14:21:56 2025 +0000

    CI: Include a job index in names of collected artifacts
    
    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 <[email protected]>
    Signed-off-by: Christian Brabandt <[email protected]>

diff --git a/.github/actions/test_artifacts/action.yml 
b/.github/actions/test_artifacts/action.yml
index cbab486c6..e68fec961 100644
--- a/.github/actions/test_artifacts/action.yml
+++ b/.github/actions/test_artifacts/action.yml
@@ -3,11 +3,39 @@ 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: GH-${{ github.run_id }}-${{ github.run_attempt }}-${{ github.job 
}}-${{ join(matrix.*, '-') }}-failed-tests
+        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.

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/vim_dev/E1vCfHY-001fim-Fc%40256bit.org.

Raspunde prin e-mail lui