4141 - if : github.event_name == 'push' # TODO: explicit on push to master
4242 id : release-please
4343 name : Run Release Please
44- uses : googleapis/release-please-action@7987652d64b4581673a76e33ad5e98e3dd56832f # v4
44+ uses : googleapis/release-please-action@a02a34c4d625f9be7cb89156071d8567266a2445 # v4
4545 with :
4646 token : ${{ secrets.GITHUB_TOKEN }}
4747
@@ -82,143 +82,41 @@ jobs:
8282
8383 - id : matrices # TODO: build origin matrices dynamically, consider collapsing this into a .py
8484 name : Construct matrices
85+ env :
86+ PR_COMMENT_BODY : ${{ github.event.pull_request.body }}
8587 run : |
8688 import os
8789 import json
90+ import re
8891
8992 build_matrix = {"include": []}
9093 run_matrix = {"version": []}
9194
92- build_data = [
93- {"dir": "api", "java": "8"},
94- {"dir": "1_21_9", "mc": "1.21.10", "lex": "", "neo": "0-beta", "java": "21"},
95- {"dir": "1_21_9", "mc": "1.21.9", "lex": "", "neo": "1-beta", "java": "21"},
96- {"dir": "1_21_6", "mc": "1.21.8", "lex": "58.1.0", "neo": "40", "java": "21"},
97- {"dir": "1_21_6", "mc": "1.21.7", "lex": "57.0.3", "neo": "25-beta", "java": "21"},
98- {"dir": "1_21_6", "mc": "1.21.6", "lex": "56.0.9", "neo": "20-beta", "java": "21"},
99- {"dir": "1_21_5", "mc": "1.21.5", "lex": "55.0.3", "neo": "76", "java": "21"},
100- {"dir": "1_21", "mc": "1.21.4", "lex": "54.1.0", "neo": "124", "java": "21"},
101- {"dir": "1_21", "mc": "1.21.3", "lex": "53.1.0", "neo": "66", "java": "21"},
102- {"dir": "1_21", "mc": "1.21.1", "lex": "52.1.0", "neo": "143", "java": "21"},
103- {"dir": "1_21", "mc": "1.21", "lex": "51.0.33", "neo": "167", "java": "21"},
104- {"dir": "1_20_6", "mc": "1.20.6", "lex": "50.1.10", "neo": "119", "java": "21"},
105- {"dir": "1_20", "mc": "1.20.4", "lex": "49.0.38", "neo": "219", "java": "17"},
106- {"dir": "1_20", "mc": "1.20.3", "lex": "49.0.2", "neo": "8-beta", "java": "17"},
107- {"dir": "1_20", "mc": "1.20.2", "lex": "48.1.0", "neo": "88", "java": "17"},
108- {"dir": "1_20_1", "mc": "1.20.1", "lex": "47.2.23", "java": "17"},
109- {"dir": "1_19", "mc": "1.19.4", "lex": "45.2.9", "java": "17"},
110- {"dir": "1_19", "mc": "1.19.3", "lex": "44.1.23", "java": "17"},
111- {"dir": "1_19", "mc": "1.19.2", "lex": "43.3.9", "java": "17"},
112- {"dir": "1_19", "mc": "1.19.1", "lex": "42.0.9", "java": "17"},
113- {"dir": "1_19", "mc": "1.19", "lex": "41.1.0", "java": "17"},
114- {"dir": "1_18", "mc": "1.18.2", "lex": "40.2.18", "java": "17"},
115- {"dir": "1_17", "mc": "1.17.1", "lex": "37.1.1", "java": "16"},
116- {"dir": "1_16", "mc": "1.16.5", "lex": "36.2.42", "java": "8"},
117- {"dir": "1_12", "mc": "1.12.2", "lex": "14.23.5.2860", "java": "8"},
118- {"dir": "1_8_9", "mc": "1.8.9", "lex": "11.15.1.2318-1.8.9", "java": "8"},
119- {"dir": "1_7_10", "mc": "1.7.10", "lex": "10.13.4.1614-1.7.10", "java": "8"}
120- ]
121-
122- run_data = [
123- # FIXME: LexForge is once again holding us back
124- # {"mc": "1.21.10", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "21"},
125- {"mc": "1.21.10", "type": "neoforge", "modloader": "neoforge", "regex": ".*neoforge.*", "java": "21"},
126- {"mc": "1.21.10", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "21"},
127-
128- # FIXME: LexForge is once again holding us back
129- # {"mc": "1.21.9", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "21"},
130- {"mc": "1.21.9", "type": "neoforge", "modloader": "neoforge", "regex": ".*neoforge.*", "java": "21"},
131- {"mc": "1.21.9", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "21"},
132-
133- {"mc": "1.21.8", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "21"},
134- {"mc": "1.21.8", "type": "neoforge", "modloader": "neoforge", "regex": ".*neoforge.*", "java": "21"},
135- {"mc": "1.21.8", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "21"},
136-
137- {"mc": "1.21.7", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "21"},
138- {"mc": "1.21.7", "type": "neoforge", "modloader": "neoforge", "regex": ".*neoforge.*", "java": "21"},
139- {"mc": "1.21.7", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "21"},
140-
141- {"mc": "1.21.6", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "21"},
142- {"mc": "1.21.6", "type": "neoforge", "modloader": "neoforge", "regex": ".*neoforge.*", "java": "21"},
143- {"mc": "1.21.6", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "21"},
144-
145- {"mc": "1.21.5", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "21"},
146- {"mc": "1.21.5", "type": "neoforge", "modloader": "neoforge", "regex": ".*neoforge.*", "java": "21"},
147- {"mc": "1.21.5", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "21"},
148-
149- {"mc": "1.21.4", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "21"},
150- {"mc": "1.21.4", "type": "neoforge", "modloader": "neoforge", "regex": ".*neoforge.*", "java": "21"},
151- {"mc": "1.21.4", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "21"},
152-
153- {"mc": "1.21.3", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "21"},
154- {"mc": "1.21.3", "type": "neoforge", "modloader": "neoforge", "regex": ".*neoforge.*", "java": "21"},
155- {"mc": "1.21.3", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "21"},
156-
157- {"mc": "1.21.1", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "21"},
158- {"mc": "1.21.1", "type": "neoforge", "modloader": "neoforge", "regex": ".*neoforge.*", "java": "21"},
159- {"mc": "1.21.1", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "21"},
160-
161- {"mc": "1.21", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "21"},
162- {"mc": "1.21", "type": "neoforge", "modloader": "neoforge", "regex": ".*neoforge.*", "java": "21"},
163- {"mc": "1.21", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "21"},
164-
165- {"mc": "1.20.6", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "21"},
166- {"mc": "1.20.6", "type": "neoforge", "modloader": "neoforge", "regex": ".*neoforge.*", "java": "21"},
167- {"mc": "1.20.6", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "21"},
168-
169- {"mc": "1.20.4", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "17"},
170- {"mc": "1.20.4", "type": "neoforge", "modloader": "neoforge", "regex": ".*neoforge.*", "java": "17"},
171- {"mc": "1.20.4", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "17"},
172-
173- {"mc": "1.20.3", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "17"},
174- {"mc": "1.20.3", "type": "neoforge", "modloader": "neoforge", "regex": ".*neoforge.*", "java": "17"},
175- {"mc": "1.20.3", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "17"},
176-
177- {"mc": "1.20.2", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "17"},
178- {"mc": "1.20.2", "type": "neoforge", "modloader": "neoforge", "regex": ".*neoforge.*", "java": "17"},
179- {"mc": "1.20.2", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "17"},
180-
181- {"mc": "1.20.1", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "17"},
182- {"mc": "1.20.1", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "17"},
183-
184- {"mc": "1.19.4", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "17"},
185- {"mc": "1.19.4", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "17"},
186-
187- {"mc": "1.19.3", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "17"},
188- {"mc": "1.19.3", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "17"},
189-
190- {"mc": "1.19.2", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "17"},
191- {"mc": "1.19.2", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "17"},
192-
193- {"mc": "1.19.1", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "17"},
194- {"mc": "1.19.1", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "17"},
195-
196- {"mc": "1.19", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "17"},
197- {"mc": "1.19", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "17"},
198-
199- {"mc": "1.18.2", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "17"},
200- {"mc": "1.18.2", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "17"},
201-
202- {"mc": "1.17.1", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "16"},
203- {"mc": "1.17.1", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "16"},
204-
205- {"mc": "1.16.5", "type": "fabric", "modloader": "fabric", "regex": ".*fabric.*", "java": "8"},
206- {"mc": "1.16.5", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "8"},
207-
208- {"mc": "1.12.2", "type": "lexforge", "modloader": "forge", "regex": ".*forge.*", "java": "8"},
209-
210- {"mc": "1.8.9", "type": "lexforge", "modloader": "forge", "regex": ".*orge.*", "java": "8"},
211-
212- {"mc": "1.7.10", "type": "lexforge", "modloader": "forge", "regex": ".*orge.*", "java": "8"}
213- ]
95+ with open('ci-data.json') as f:
96+ ci_data = json.load(f)
97+
98+ build_data = ci_data['build_data']
99+ run_data = ci_data['run_data']
214100
215101 dirs_to_filter = []
102+ mc_versions = []
216103
217104 match os.getenv('GITHUB_EVENT_NAME'):
218105 case 'pull_request':
219106 if "${{ steps.filter.outcome }}" == "success":
220107 # Filter matrices based on the detected changes
221108 dirs_to_filter = json.loads('${{ steps.filter.outputs.changes }}')
109+ comment_body = os.getenv('PR_COMMENT_BODY')
110+ print("PR-comment:", comment_body)
111+ if comment_body:
112+ pattern = r'Automatic commit: build and run ([0-9\.]*[0-9]*) in ([0-9_]*[0-9]*)'
113+ match = re.search(pattern, comment_body)
114+ if match:
115+ mc_versions = [ match.group(1) ]
116+ dirs_to_filter = [ match.group(2) ]
117+ print('Matched PR body', mc_versions, dirs_to_filter)
118+ else:
119+ print('PR body did not match')
222120
223121 case 'workflow_dispatch':
224122 input_dirs = '${{ github.event.inputs.dirs }}'
@@ -238,8 +136,8 @@ jobs:
238136 build_matrix['include'], run_matrix['version'] = build_data, run_data
239137
240138 if dirs_to_filter:
241- build_matrix['include'].extend([item for item in build_data if item["dir"] in dirs_to_filter])
242- mc_versions = [item.get("mc") for item in build_matrix["include"] if "mc" in item]
139+ build_matrix['include'].extend([item for item in build_data if item["dir"] in dirs_to_filter and (item["mc"] in mc_versions or not mc_versions) ])
140+ mc_versions = mc_versions if mc_versions else [item.get("mc") for item in build_matrix["include"] if "mc" in item]
243141 run_matrix['version'].extend([item for item in run_data if item["mc"] in mc_versions])
244142
245143 with open(os.environ['GITHUB_OUTPUT'], 'a') as fh:
@@ -303,6 +201,7 @@ jobs:
303201 timeout-minutes : 10
304202 uses : ./
305203 with :
204+ cache-mc : " github"
306205 mc : ${{ matrix.version.mc }}
307206 mc-runtime-test : none
308207 modloader : ${{ matrix.version.modloader }}
0 commit comments