enhance(actions): improve matrix job titles, bump actionslib (#39485)

Bump actionslib to v1.3.0 and format matrix job titles like GitHub.

- Matrix values are listed in declaration order, nested arrays and
objects are flattened, null and empty values are skipped
- Expression-evaluated names are trimmed and fall back to the job ID
when blank
- Matrix `include` and `exclude` match keys case-insensitively and
coerce numbers like GitHub

| Matrix | Before | After |
|---|---|---|
| `v: ["a,b"]` | `job (a,b)` | `job (a,b)` |
| `v: ["a, b"]` | `job (a, b)` | `job (a, b)` |
| `v: [[a, b]]` | `job ([a b])` | `job (a, b)` |
| `os: [x], arch: [y]` | `job (y, x)` | `job (x, y)` |
| `v: [{t: a, p: "b,c"}]` | `job (map[p:b,c t:a])` | `job (a, b,c)` |
| `v: [{t: a, p: [b, c]}]` | `job (map[p:[b c] t:a])` | `job (a, b, c)`
|

---------

Co-authored-by: Zettat123 <zettat123@gmail.com>
Co-authored-by: bircni <bircni@icloud.com>
This commit is contained in:
authored and GitHub committed 2026-10-05 10:29:49 +00:00
1 parent 27d876e311
commit 64f4b5856a
6 files changed
+81 -43

No files matched your search

@@ -59,12 +59,13 @@ const wfTest1Jobs: ActionsJob[] = [
const mockJob = (id: number, jobId: string, name: string, needs?: string[]): ActionsJob =>
({id, link: '', jobId, name, status: 'success', canRerun: false, isReusableCaller: false, parentJobID: 0, duration: '1s', needs});
test('matrix nodes key on job id, not on the display name', () => {
test('matrix nodes key on job id and take the label legs share with or without a suffix', () => {
const legs = createWorkflowGraphModel([mockJob(1, 'explicit', 'leg one'), mockJob(2, 'explicit', 'leg two')]);
expect(legs.nodes).toHaveLength(1);
expect(legs.nodes[0].type).toBe('matrix');
expect(legs.nodes[0].name).toBe('explicit');
expect(legs.nodes[0].jobs.map((j) => j.id)).toEqual([1, 2]);
expect(createWorkflowGraphModel([mockJob(1, 'image', 'Image'), mockJob(2, 'image', 'Image (dind)')]).nodes[0].name).toBe('Image');
const lookalikes = createWorkflowGraphModel([
mockJob(1, 'setup', 'setup'),