-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaction.yml
101 lines (98 loc) · 3.76 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
name: 'Parallel Test Dynamic Matrix'
description: 'Calculate a list of test runner groups for use with parallel_test'
inputs:
numberOfTestNodes:
description: 'Number of test nodes (4 if blank)'
required: false
type: number
testRunnersPerNode:
description: 'Test runners per node (if blank 4 for public repos, 2 for private repos)'
required: false
type: number
outputs:
numberOfTestNodes:
description: Number of test nodes
value: ${{ steps.calculate-number-of-test-nodes.outputs.result }}
testRunnersPerNode:
description: Test runners per node
value: ${{ steps.calculate-test-runners-per-node.outputs.result }}
totalRunners:
description: The total number of runners
value: ${{ steps.calculate-total-runners.outputs.result }}
matrix:
description: The matrix
value: ${{ steps.calculate-matrix.outputs.result }}
runs:
using: "composite"
steps:
- uses: actions/github-script@v7
id: calculate-number-of-test-nodes
name: Calculate Number Of Test Nodes
env:
NUMBER_OF_TEST_NODES: ${{ inputs.numberOfTestNodes }}
with:
script: |
var numberOfTestNodes = Number(process.env.NUMBER_OF_TEST_NODES) || 4
console.log("numberOfTestNodes =====")
console.log(numberOfTestNodes)
return numberOfTestNodes
- uses: actions/github-script@v7
id: calculate-test-runners-per-node
name: Calculate Test Runners Per Node
env:
REPO_VISIBILITY: ${{ github.event.repository.visibility }}
TEST_RUNNERS_PER_NODE: ${{ inputs.testRunnersPerNode }}
with:
script: |
var testRunnersPerNode = Number(process.env.TEST_RUNNERS_PER_NODE)
if(!testRunnersPerNode){
if(process.env.REPO_VISIBILITY == "public"){
testRunnersPerNode = 4
}else{
testRunnersPerNode = 2
}
}
console.log("testRunnersPerNode =====")
console.log(testRunnersPerNode)
return testRunnersPerNode
- uses: actions/github-script@v7
id: calculate-total-runners
name: Calculate Total Runners
env:
NUMBER_OF_TEST_NODES: ${{ steps.calculate-number-of-test-nodes.outputs.result }}
TEST_RUNNERS_PER_NODE: ${{ steps.calculate-test-runners-per-node.outputs.result }}
with:
script: |
var numberOfTestNodes = Number(process.env.NUMBER_OF_TEST_NODES)
var testRunnersPerNode = Number(process.env.TEST_RUNNERS_PER_NODE)
console.log("total runners =====")
console.log(testRunnersPerNode * numberOfTestNodes)
return testRunnersPerNode * numberOfTestNodes
- uses: actions/github-script@v7
id: calculate-matrix
name: Calculate Matrix
env:
NUMBER_OF_TEST_NODES: ${{ steps.calculate-number-of-test-nodes.outputs.result }}
TEST_RUNNERS_PER_NODE: ${{ steps.calculate-test-runners-per-node.outputs.result }}
with:
script: |
var numberOfTestNodes = Number(process.env.NUMBER_OF_TEST_NODES)
var testRunnersPerNode = Number(process.env.TEST_RUNNERS_PER_NODE)
try {
var matrix = []
for(var i = 1; i <= numberOfTestNodes; i++){
var runners = []
for(var j = 1; j <= testRunnersPerNode; j++){
runners.push( (i - 1) * testRunnersPerNode + j );
}
matrix.push(runners.join(`,`))
}
console.log("matrix ====")
console.log(matrix)
return matrix
} catch(err) {
core.summary.addRaw("Error while calculating matrix", true)
core.summary.addRaw(err.toString(), true)
core.error("Error while calculating matrix")
core.setFailed(err)
}