1919 type : string
2020 required : false
2121 default : " "
22- add-dimensions :
23- type : string
24- required : false
25- default : " {}"
26- include :
27- type : string
28- required : false
29- default : " []"
30- exclude :
31- type : string
32- required : false
33- default : " []"
3422 cmd :
3523 type : string
3624 required : true
6856 default : " "
6957
7058jobs :
71- prepare-matrix :
72- name : Prepare Matrix
73- if : >-
74- github.event.repository.fork == false ||
75- github.event_name != 'schedule' ||
76- (github.event_name == 'schedule' && github.event.repository.fork == true && inputs.run-scheduled-in-forks == true)
77- runs-on : ubuntu-24.04
78- outputs :
79- matrix : ${{ steps.prepare-matrix.outputs.matrix }}
80- steps :
81- - id : prepare-matrix
82- run : |
83- add_dimensions=$(echo -n '${{ inputs.add-dimensions }}' | sed 's/^.*{//;s/}.*$//') # Remove leading { and trailing }
84- # input java/scala | replace whitespaces/commas/quotes by newline | drop empty | quotation | join by comma
85- java=$(echo -n '${{inputs.java}}' | sed 's/[[:blank:],"]\+/\n/g' | awk NF | sed 's/^..*$/"&"/' | sed ':a; N; $!ba; s/\n/,/g')
86- scala=$(echo -n '${{inputs.scala}}' | sed 's/[[:blank:],"]\+/\n/g' | awk NF | sed 's/^..*$/"&"/' | sed ':a; N; $!ba; s/\n/,/g')
87- matrix="{"
88- matrix+="\"java\": [$java],"
89- [[ ! -z "$scala" ]] && matrix+="\"scala\": [$scala],"
90- matrix+="$(echo ${add_dimensions:+$add_dimensions,})"
91- matrix+="\"include\":$(echo -n '${{ inputs.include }}'),"
92- matrix+="\"exclude\":$(echo -n '${{ inputs.exclude }}')"
93- matrix+="}"
94- # Cleanup JSON (no unnecessary whitespaces, etc.)
95- matrix=$(jq -n -c "$matrix")
96- echo $matrix
97- echo "matrix=$matrix" >> $GITHUB_OUTPUT
9859 cmd :
99- name : ${{ toJSON(matrix) }}
10060 if : ${{ github.event.repository.fork == false || github.event_name != 'schedule' || (github.event_name == 'schedule' && github.event.repository.fork == true && inputs.run-scheduled-in-forks == true) }}
101- needs : prepare-matrix
10261 runs-on : ubuntu-24.04
103- strategy :
104- # WA: https://github.community/t/reusable-workflow-with-strategy-matrix/205676/6
105- matrix : ${{fromJson(needs.prepare-matrix.outputs.matrix)}}
10662 steps :
10763 - name : Block deprecated repos in /etc/hosts
10864 run : |
@@ -140,21 +96,20 @@ jobs:
14096 uses : actions/cache@v4
14197 if : ${{ inputs.cache-key != '' && inputs.cache-path != '' }}
14298 with :
143- key : ${{ format(inputs.cache-key, matrix .java) }}
99+ key : ${{ format(inputs.cache-key, inputs .java) }}
144100 path : ${{ inputs.cache-path }}
145101
146102 - name : Install Adoptium Temurin OpenJDK
147103 uses : coursier/setup-action@v1
148104 with :
149- jvm : adoptium:${{ matrix .java }}
105+ jvm : adoptium:${{ inputs .java }}
150106 jvm-index : ${{ inputs.java-index }}
151107
152108 - name : Install sbt
153109 uses : sbt/setup-sbt@v1
154110
155111 - name : Print helpful configs and files and show environment
156112 run : |
157- echo "Matrix: ${{ toJSON(matrix) }}"
158113 echo "$ cat /etc/sbt/jvmopts"
159114 cat /etc/sbt/jvmopts || true
160115 echo ""
@@ -168,10 +123,6 @@ jobs:
168123 echo "ls -alFhR ~/.cache/coursier | grep play | grep jar"
169124 ls -alFhR ~/.cache/coursier | grep play | grep jar || true
170125
171- - name : Convert matrix elements to environment variables
172- run : |
173- jq -n -r '$in | to_entries|map("MATRIX_\(.key|ascii_upcase)=\(.value|tostring)")|.[]' --argjson in '${{ toJSON(matrix) }}' >> $GITHUB_ENV
174-
175126 - name : Run command
176127 run : ${{ inputs.cmd }}
177128 env :
0 commit comments