Skip to content

Commit 115eb34

Browse files
committed
update from mod template
1 parent cb9edd1 commit 115eb34

File tree

7 files changed

+83
-28
lines changed

7 files changed

+83
-28
lines changed

.github/workflows/build.yml

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ jobs:
1818
runs-on: ubuntu-latest
1919

2020
steps:
21-
- uses: actions/checkout@v4
21+
- uses: actions/checkout@v6
2222
- name: Set up JDK 25
23-
uses: actions/setup-java@v4
23+
uses: actions/setup-java@v5
2424
with:
2525
distribution: 'temurin'
2626
java-version: 25
@@ -46,7 +46,7 @@ jobs:
4646
BUILD_RELEASE: ${{ inputs.release }}
4747

4848
- name: Upload artifacts
49-
uses: actions/upload-artifact@v4
49+
uses: actions/upload-artifact@v6
5050
with:
5151
name: build-artifacts
5252
path: versions/*/build/libs/
@@ -62,14 +62,18 @@ jobs:
6262
6363
# This is the artifact recommended for users to download
6464
- name: Upload mod jars
65-
uses: actions/upload-artifact@v4
65+
uses: actions/upload-artifact@v6
6666
with:
6767
name: mod-jars
6868
path: mod-jars/*.jar
6969

7070
- name: Publish with gradle
71-
if: inputs.release || github.ref == 'refs/heads/dev'
71+
if: ${{ inputs.release || github.ref == 'refs/heads/dev' }}
7272
run: |
73+
if [ -z "$FALLENS_MAVEN_TOKEN" ]; then
74+
echo "No token found, skipping publish"
75+
exit 0
76+
fi
7377
if [ -z "${{ inputs.target_subproject }}" ]; then
7478
echo "Publishing all subprojects"
7579
./gradlew publish
@@ -89,13 +93,25 @@ jobs:
8993
- build
9094

9195
steps:
92-
- uses: actions/checkout@v4
93-
- uses: actions/setup-python@v5
96+
- uses: actions/checkout@v6
97+
- uses: actions/setup-python@v6
98+
with:
99+
python-version: 3.14
100+
101+
- name: List artifacts
102+
uses: actions/github-script@v8
103+
id: artifacts
94104
with:
95-
python-version: 3.12
105+
script: |
106+
const result = await github.rest.actions.listWorkflowRunArtifacts({
107+
owner: context.repo.owner,
108+
repo: context.repo.repo,
109+
run_id: context.runId,
110+
})
111+
return result.data
96112
97113
- name: Download build artifacts
98-
uses: actions/download-artifact@v4
114+
uses: actions/download-artifact@v7
99115
with:
100116
name: build-artifacts
101117
path: build-artifacts
@@ -106,3 +122,4 @@ jobs:
106122
python .github/workflows/scripts/summary.py
107123
env:
108124
TARGET_SUBPROJECT: ${{ inputs.target_subproject }}
125+
WORKFLOW_ARTIFACTS: ${{ steps.artifacts.outputs.result }}

.github/workflows/matrix_prep.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ jobs:
1818
matrix_prep:
1919
runs-on: ubuntu-latest
2020
steps:
21-
- uses: actions/checkout@v4
22-
- uses: actions/setup-python@v5
21+
- uses: actions/checkout@v6
22+
- uses: actions/setup-python@v6
2323
with:
24-
python-version: 3.12
24+
python-version: 3.14
2525

2626
- id: setmatrix
2727
run: python .github/workflows/scripts/matrix.py

.github/workflows/release.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,11 @@ jobs:
7070

7171
strategy:
7272
matrix: ${{ fromJson(needs.matrix_prep.outputs.matrix) }}
73+
fail-fast: false
74+
max-parallel: 4
7375

7476
steps:
75-
- uses: actions/checkout@v4
77+
- uses: actions/checkout@v6
7678

7779
- name: Display context
7880
run: |
@@ -81,7 +83,7 @@ jobs:
8183
echo target_release_tag = ${{ github.event.inputs.target_release_tag }}
8284
8385
- name: Download build artifacts
84-
uses: actions/download-artifact@v4
86+
uses: actions/download-artifact@v7
8587
with:
8688
name: build-artifacts
8789
path: build-artifacts
@@ -143,7 +145,7 @@ jobs:
143145
cat $GITHUB_OUTPUT
144146
145147
- name: Prepare changelog
146-
uses: actions/github-script@v7
148+
uses: actions/github-script@v8
147149
id: changelog
148150
with:
149151
script: return process.env.CHANGELOG

.github/workflows/scripts/matrix.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
def main():
1313
target_subproject_env = os.environ.get('TARGET_SUBPROJECT', '')
14-
target_subprojects = list(filter(None, target_subproject_env.split(',') if target_subproject_env != '' else []))
14+
target_subprojects = [x for x in target_subproject_env.split(',') if x]
1515
print('target_subprojects: {}'.format(target_subprojects))
1616

1717
with open('settings.json') as f:

.github/workflows/scripts/summary.py

Lines changed: 45 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,27 +31,36 @@ def get_sha256_hash(file_path: str) -> str:
3131

3232

3333
def main():
34-
target_subproject_env = os.environ.get('TARGET_SUBPROJECT', '')
35-
target_subprojects = list(filter(None, target_subproject_env.split(',') if target_subproject_env != '' else []))
34+
warnings: list[str] = []
35+
36+
target_subproject_env: str = os.environ.get('TARGET_SUBPROJECT', '')
37+
target_subprojects: list[str] = [x for x in target_subproject_env.split(',') if x]
3638
print('target_subprojects: {}'.format(target_subprojects))
3739

40+
workflow_artifacts_json_str = os.environ.get('WORKFLOW_ARTIFACTS', '{"artifacts":[]}')
41+
artifacts: dict[str, dict] = {}
42+
try:
43+
artifacts = {artifact['name']: artifact for artifact in json.loads(workflow_artifacts_json_str)['artifacts']}
44+
print({artifact['name']: artifact['id'] for artifact in artifacts.values()})
45+
except Exception as e:
46+
warnings.append(f'Failed to parse workflow artifacts JSON: {e}, {workflow_artifacts_json_str!r}')
47+
3848
with open('settings.json') as f:
3949
settings: dict = json.load(f)
4050

4151
with open(os.environ['GITHUB_STEP_SUMMARY'], 'w') as f:
4252
f.write('## Build Artifacts Summary\n\n')
43-
f.write('| Subproject | for Minecraft | File | Size | SHA-256 |\n')
53+
f.write('| Subproject | For Minecraft | File | Size | SHA-256 |\n')
4454
f.write('| --- | --- | --- | --- | --- |\n')
4555

46-
warnings = []
4756
for subproject in settings['versions']:
4857
if len(target_subprojects) > 0 and subproject not in target_subprojects:
4958
print('skipping {}'.format(subproject))
5059
continue
51-
game_versions = read_prop('versions/{}/gradle.properties'.format(subproject), 'game_versions')
60+
game_versions = read_prop(f'versions/{subproject}/gradle.properties', 'game_versions')
5261
game_versions = game_versions.strip().replace('\r', '').replace('\n', ', ')
53-
file_paths = glob.glob('build-artifacts/{}/build/libs/*.jar'.format(subproject))
54-
file_paths = list(filter(lambda fp: not fp.endswith('-sources.jar') and not fp.endswith('-dev.jar') and not fp.endswith('-shadow.jar'), file_paths))
62+
file_paths = glob.glob(f'build-artifacts/{subproject}/build/libs/*.jar')
63+
file_paths = [fp for fp in sorted(file_paths) if all(not fp.endswith(f'-{classifier}.jar') for classifier in ['sources', 'dev', 'shadow'])]
5564
if len(file_paths) == 0:
5665
file_name = '*not found*'
5766
sha256 = '*N/A*'
@@ -62,12 +71,39 @@ def main():
6271
if len(file_paths) > 1:
6372
warnings.append('Found too many build files in subproject {}: {}'.format(subproject, ', '.join(file_paths)))
6473

65-
f.write('| {} | {} | {} | {} | {} |\n'.format(subproject, game_versions, file_name, file_size, sha256))
74+
f.write(f'| {subproject} | {game_versions} | {file_name} | {file_size} | {sha256} |\n')
75+
f.write('\n')
76+
77+
f.write('## Artifact Files\n\n')
78+
all_digests_are_sha256 = all(artifact['digest'].startswith('sha256:') for artifact in artifacts.values())
79+
f.write('| Artifact | For | Size | {} | \n'.format('SHA-256' if all_digests_are_sha256 else 'Digest'))
80+
f.write('| --- | --- | --- | --- |\n')
81+
for artifact_name, artifact_usage in [
82+
('mod-jars', 'Players who want to grab and install the mod jar into their Minecraft clients'),
83+
('build-artifacts', 'Mod developers who want to inspect the complete build artifacts'),
84+
]:
85+
artifact_display_name = f'`{artifact_name}`'
86+
artifact_size = 'unknown'
87+
artifact_digest = 'unknown'
88+
if artifact_name in artifacts:
89+
# https://docs.github.com/en/rest/actions/artifacts?apiVersion=2022-11-28#list-workflow-run-artifacts
90+
artifact: dict = artifacts[artifact_name]
91+
try:
92+
download_url = f'{os.environ["GITHUB_SERVER_URL"]}/{os.environ["GITHUB_REPOSITORY"]}/actions/runs/{os.environ["GITHUB_RUN_ID"]}/artifacts/{artifact["id"]}'
93+
artifact_display_name = f'[`{artifact_name}`]({download_url})'
94+
artifact_size = f'{artifact["size_in_bytes"]} B'
95+
artifact_digest = '`{}`'.format(artifact["digest"].split(':', 1)[-1] if all_digests_are_sha256 else artifact["digest"])
96+
except Exception as e:
97+
warnings.append(f'Failed to collect artifact info for {artifact_name}: {e} -- {artifact}')
98+
99+
f.write(f'| {artifact_display_name} | {artifact_usage} | {artifact_size} | {artifact_digest} |\n')
100+
f.write('\n')
66101

67102
if len(warnings) > 0:
68-
f.write('\n### Warnings\n\n')
103+
f.write('## Warnings\n\n')
69104
for warning in warnings:
70105
f.write('- {}\n'.format(warning))
106+
f.write('\n')
71107

72108

73109
if __name__ == '__main__':

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
plugins {
22
id 'maven-publish'
33
id 'com.github.hierynomus.license' version '0.16.1' apply false
4-
id 'net.fabricmc.fabric-loom' version '1.14-SNAPSHOT' apply false
5-
id 'net.fabricmc.fabric-loom-remap' version '1.14-SNAPSHOT' apply false
4+
id 'net.fabricmc.fabric-loom' version '1.15-SNAPSHOT' apply false
5+
id 'net.fabricmc.fabric-loom-remap' version '1.15-SNAPSHOT' apply false
66

77
// https://github.com/ReplayMod/preprocessor
88
// https://github.com/Fallen-Breath/preprocessor

versions/1.21.11/gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
game_versions = 1.21.11
1515

1616
# Dependencies
17-
fabric_api_version = 0.140.2+1.21.11
17+
fabric_api_version = 0.141.1+1.21.11
1818

1919
# https://masa.dy.fi/maven/fi/dy/masa/malilib/
2020
# https://jitpack.io/#sakura-ryoko/malilib

0 commit comments

Comments
 (0)