Skip to content

Commit 3fc14cc

Browse files
Packer更新 / 1.20版本支持 (#3875)
* Initialize 1.20 * Fix paths * Miscellaneous Updates * Synchronize README format * Initial commit * 2 * Finalize Packer code (ish) * Migration phase I * Migration Phase II * Post-work support 支持部分文件打包 (把测试的那一堆commit合进来了) * Modify behaviors on merging files * hotfix1 * test1 * test2 * fix policies * Misc1 * patch fail-on-cache-miss * Update Matrix Logic 现在,(如果我没写错的话)一个版本崩溃不会炸掉所有版本了。 此外,根据反馈,恢复了chinjufu里的大括号;不过打包文件里的括号可能留不下来了。 * Fix Policies * Fix 2-EM Hyphen 天,我怎么写成2e3f的... * Update projects/1.20/assets/more-crossbows-cj/morecrossbows/lang/zh_cn.json Co-authored-by: Cactus_student <[email protected]> * Update projects/1.20/assets/more-crossbows-cj/morecrossbows/lang/zh_cn.json Co-authored-by: Cactus_student <[email protected]> --------- Co-authored-by: Cactus_student <[email protected]>
1 parent c53e35a commit 3fc14cc

File tree

119 files changed

+2731
-2348
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

119 files changed

+2731
-2348
lines changed

.github/workflows/packer.yml

Lines changed: 137 additions & 154 deletions
Original file line numberDiff line numberDiff line change
@@ -3,100 +3,79 @@ name: Packer
33
on:
44
workflow_dispatch:
55
push:
6-
branches: [main]
6+
branches: [ main ]
77
paths:
8-
- 'config/packer.json'
9-
- 'config/fontmap.txt'
8+
- 'src/**'
9+
- 'config/packer/**'
1010
- 'projects/**'
1111

12+
13+
1214
jobs:
13-
build:
15+
build-packer:
16+
if: github.repository == 'CFPAOrg/Minecraft-Mod-Language-Package'
17+
name: Build / Cache Packer
1418
runs-on: windows-latest
1519
steps:
16-
- uses: actions/checkout@v2
17-
with:
18-
fetch-depth: 20
19-
ref: main
20-
21-
- name: Check changed path on 1.12
22-
uses: MarceloPrado/[email protected]
23-
id: changed-1122
24-
with:
25-
paths: projects/1.12.2
26-
27-
- name: Check changed path on 1.16
28-
uses: MarceloPrado/[email protected]
29-
id: changed-116
20+
- uses: actions/checkout@v4
21+
with:
22+
fetch-depth: 1
23+
sparse-checkout: src
24+
25+
# 缓存程序。一方面,在不同job之间需要这么做;另一方面,大约可以改善运行时间?
26+
# actions/cache的逻辑会在job末尾缓存打包程序;如果不命中,就自行构造程序。
27+
- name: Cache Packer
28+
id: cache-packer
29+
uses: actions/cache@v3
3030
with:
31-
paths: projects/1.16
32-
33-
- name: Check changed path on 1.16 fabric
34-
uses: MarceloPrado/[email protected]
35-
id: changed-116-fabric
36-
with:
37-
paths: projects/1.16-fabric
38-
39-
- name: Check changed path on 1.18
40-
uses: MarceloPrado/[email protected]
41-
id: changed-118
42-
with:
43-
paths: projects/1.18
31+
key: ${{ runner.os }}-Packer-${{ hashFiles('src/Packer/**') }}
32+
path: |
33+
Packer.exe
34+
git2-*.dll
35+
lookup-only: true
36+
37+
# 构造程序
38+
- name: Build Packer if not cached
39+
if: steps.cache-packer.outputs.cache-hit != 'true'
40+
run: dotnet publish .\src\Packer\Packer.csproj -o ./ -r win-x64 -p:PublishSingleFile=true
4441

45-
- name: Check changed path on 1.18 fabric
46-
uses: MarceloPrado/[email protected]
47-
id: changed-118-fabric
42+
build-uploader:
43+
if: github.repository == 'CFPAOrg/Minecraft-Mod-Language-Package'
44+
name: Build / Cache Uploader
45+
runs-on: windows-latest
46+
steps:
47+
- uses: actions/checkout@v4
48+
with:
49+
fetch-depth: 1
50+
sparse-checkout: src
51+
52+
# 缓存程序。一方面,在不同job之间需要这么做;另一方面,大约可以改善运行时间?
53+
# actions/cache的逻辑会在job末尾缓存打包程序;如果不命中,就自行构造程序。
54+
- name: Cache Uploader
55+
id: cache-uploader
56+
uses: actions/cache@v3
4857
with:
49-
paths: projects/1.18-fabric
58+
key: ${{ runner.os }}-Uploader-${{ hashFiles('src/Uploader/**') }}
59+
path: Uploader.exe
60+
lookup-only: true
5061

51-
- name: Check changed path on 1.19
52-
uses: MarceloPrado/[email protected]
53-
id: changed-119
54-
with:
55-
paths: projects/1.19
56-
57-
# - name: Check changed path on 1.19 fabric
58-
# uses: MarceloPrado/[email protected]
59-
# id: changed-119-fabric
60-
# with:
61-
# paths: projects/1.19-fabric
62-
63-
- name: Build Packer
64-
run: dotnet publish .\src\Packer\Packer.csproj -o ./ -r win-x64 -p:PublishSingleFile=true
62+
# 构造程序
63+
- name: Build Uploader if not cached
64+
if: steps.cache-uploader.outputs.cache-hit != 'true'
65+
run: dotnet publish .\src\Uploader\Uploader.csproj -o ./ -r win-x64 -p:PublishSingeFile=true
6566

66-
- name: Run Packer for 1.12.2
67-
run: ./Packer --version="1.12.2"
68-
if: steps.changed-1122.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'
69-
70-
- name: Run Packer for 1.16
71-
run: ./Packer --version="1.16"
72-
if: steps.changed-116.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'
73-
74-
- name: Run Packer for 1.16-fabric
75-
run: ./Packer --version="1.16-fabric"
76-
if: steps.changed-116-fabric.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'
77-
78-
- name: Run Packer for 1.18
79-
run: ./Packer --version="1.18"
80-
if: steps.changed-118.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'
81-
82-
- name: Run Packer for 1.18-fabric
83-
run: ./Packer --version="1.18-fabric"
84-
if: steps.changed-118-fabric.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'
85-
86-
- name: Run Packer for 1.19
87-
run: ./Packer --version="1.19"
88-
if: steps.changed-119.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'
89-
90-
# - name: Run Packer for 1.19-fabric
91-
# run: ./Packer --version="1.19-fabric"
92-
# if: steps.changed-119-fabric.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'
67+
initialize-release:
68+
if: github.repository == 'CFPAOrg/Minecraft-Mod-Language-Package'
69+
name: Initialize Release
70+
runs-on: windows-latest
71+
steps:
9372

9473
- name: Create timestamp
9574
id: create_timestamp
9675
run: echo "::set-output name=timestamp::$(date '+%Y%m%d%H%M%s')"
9776
shell: bash
98-
99-
# Create the release: https://github.com/actions/create-release
77+
78+
# Create the release: https://github.com/actions/create-release
10079
- name: Create release
10180
id: create_release
10281
uses: actions/create-release@v1
@@ -107,95 +86,99 @@ jobs:
10786
release_name: 汉化资源包-Snapshot-${{ steps.create_timestamp.outputs.timestamp }}
10887
draft: false
10988
prerelease: false
110-
111-
# Upload release asset: https://github.com/actions/upload-release-asset
112-
- name: Update release asset for 1.12
113-
id: upload-release-asset1
114-
if: steps.changed-1122.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'
115-
uses: actions/upload-release-asset@v1
116-
env:
117-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
89+
outputs:
90+
upload-url: ${{ steps.create_release.outputs.upload_url }}
91+
92+
93+
pack:
94+
if: github.repository == 'CFPAOrg/Minecraft-Mod-Language-Package'
95+
name: Pack Resources and Upload Artifacts/Releases
96+
needs: [ build-packer, initialize-release ] # 显然,需要存在打包程序,才能打包。
97+
strategy:
98+
fail-fast: false # 把正常的文件先打包了,避免一处错误阻塞整个仓库。
99+
matrix:
100+
# 版本列表。将对这里的每个版本判断,按需打包。
101+
# 如需添加新版本,在这里添加即可。
102+
version: [ "1.12.2", "1.16", "1.16-fabric", "1.18", "1.18-fabric", "1.19", "1.20", "1.20-fabric" ]
103+
runs-on: windows-latest
104+
steps:
105+
- uses: actions/checkout@v2
118106
with:
119-
upload_url: ${{ steps.create_release.outputs.upload_url }}
120-
asset_path: Minecraft-Mod-Language-Package-1.12.2.zip
121-
asset_name: Minecraft-Mod-Language-Package-1.12.2.zip
122-
asset_content_type: application/zip
123-
124-
- name: Update release asset for 1.16
125-
id: upload-release-asset2
126-
if: steps.changed-116.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'
127-
uses: actions/upload-release-asset@v1
128-
env:
129-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
107+
fetch-depth: 20 # 显然,需要有提交历史才能比较提交。20这个数是任意的。
108+
109+
# 由于Github的限制,这里需要重新拉取打包程序。
110+
- name: Restore Packer
111+
id: cache-restore
112+
# https://github.com/actions/cache/issues/1265#issuecomment-1819612829 `fail-on-cache-miss` for restore action not failing the workflow
113+
uses: actions/cache/[email protected]
130114
with:
131-
upload_url: ${{ steps.create_release.outputs.upload_url }}
132-
asset_path: Minecraft-Mod-Language-Package-1.16.zip
133-
asset_name: Minecraft-Mod-Language-Package-1.16.zip
134-
asset_content_type: application/zip
115+
key: ${{ runner.os }}-Packer-${{ hashFiles('source/Packer/**') }}
116+
path: |
117+
Packer.exe
118+
git2-*.dll
119+
fail-on-cache-miss: true # 前一步理应构造过的。如果不命中,肯定有问题,不如直接挂掉。
135120

136-
137-
- name: Update release asset for 1.16-fabric
138-
id: upload-release-asset3
139-
if: steps.changed-116-fabric.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'
140-
uses: actions/upload-release-asset@v1
141-
env:
142-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
121+
- name: Check changed path on ${{ matrix.version }}
122+
uses: MarceloPrado/[email protected]
123+
id: check-changes
143124
with:
144-
upload_url: ${{ steps.create_release.outputs.upload_url }}
145-
asset_path: Minecraft-Mod-Language-Package-1.16-fabric.zip
146-
asset_name: Minecraft-Mod-Language-Package-1.16-fabric.zip
147-
asset_content_type: application/zip
148-
149-
- name: Update release asset for 1.18
150-
id: upload-release-asset4
151-
if: steps.changed-118.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'
152-
uses: actions/upload-release-asset@v1
153-
env:
154-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
125+
# 判断位置:该版本文件、该版本配置、代码
126+
paths: >
127+
projects/${{ matrix.version }}
128+
config/packer/${{ matrix.version }}.json
129+
src/**
130+
131+
- name: Run Packer for ${{ matrix.version }}
132+
# 分发包中应当包含全部内容
133+
run: ./Packer --version="${{ matrix.version }}"
134+
# 运行逻辑:内容有更改 或 手动运行
135+
if: steps.check-changes.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'
136+
137+
# Artifact 上传内容:每个版本一个压缩包,包含了资源包和md5校验文件
138+
- name: Upload Artifact for ${{ matrix.version }}
139+
uses: actions/[email protected]
155140
with:
156-
upload_url: ${{ steps.create_release.outputs.upload_url }}
157-
asset_path: Minecraft-Mod-Language-Package-1.18.zip
158-
asset_name: Minecraft-Mod-Language-Package-1.18.zip
159-
asset_content_type: application/zip
141+
name: Minecraft-Mod-Language-Package-${{ matrix.version }}
142+
path: |
143+
Minecraft-Mod-Language-Package-${{ matrix.version }}.zip
144+
${{ matrix.version }}.md5
145+
if: steps.check-changes.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'
160146

161-
- name: Update release asset for 1.18-fabric
162-
id: upload-release-asset5
163-
if: steps.changed-118-fabric.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'
147+
# Upload release asset: https://github.com/actions/upload-release-asset
148+
- name: Update release asset for ${{ matrix.version }}
149+
id: upload-release-asset
150+
if: steps.check-changes.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'
164151
uses: actions/upload-release-asset@v1
165152
env:
166153
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
167154
with:
168-
upload_url: ${{ steps.create_release.outputs.upload_url }}
169-
asset_path: Minecraft-Mod-Language-Package-1.18-fabric.zip
170-
asset_name: Minecraft-Mod-Language-Package-1.18-fabric.zip
155+
upload_url: ${{ needs.initialize-release.outputs.upload-url }}
156+
asset_path: Minecraft-Mod-Language-Package-${{ matrix.version }}.zip
157+
asset_name: Minecraft-Mod-Language-Package-${{ matrix.version }}.zip
171158
asset_content_type: application/zip
159+
172160

173-
- name: Update release asset for 1.19
174-
id: upload-release-asset6
175-
if: steps.changed-119.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'
176-
uses: actions/upload-release-asset@v1
177-
env:
178-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
179-
with:
180-
upload_url: ${{ steps.create_release.outputs.upload_url }}
181-
asset_path: Minecraft-Mod-Language-Package-1.19.zip
182-
asset_name: Minecraft-Mod-Language-Package-1.19.zip
183-
asset_content_type: application/zip
161+
upload:
162+
if: github.repository == 'CFPAOrg/Minecraft-Mod-Language-Package'
163+
name: Upload Resource Packs to Remote Server
164+
needs: [ pack, build-uploader ] # 显然,需要打包完成,并且存在上传程序,才可以上传给分发服务器
165+
runs-on: windows-latest
166+
steps:
184167

185-
# - name: Update release asset for 1.18-fabric
186-
# id: upload-release-asset7
187-
# if: steps.changed-119-fabric.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'
188-
# uses: actions/upload-release-asset@v1
189-
# env:
190-
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
191-
# with:
192-
# upload_url: ${{ steps.create_release.outputs.upload_url }}
193-
# asset_path: Minecraft-Mod-Language-Package-1.19-fabric.zip
194-
# asset_name: Minecraft-Mod-Language-Package-1.19-fabric.zip
195-
# asset_content_type: application/zip
196-
197-
- name: Build Uploader
198-
run: dotnet publish .\src\Uploader\Uploader.csproj -o ./ -r win-x64 -p:PublishSingeFile=true
168+
# 由于Github的限制,这里需要重新拉取上传程序。
169+
- name: Restore Uploader
170+
id: cache-restore
171+
uses: actions/cache/restore@v3
172+
with:
173+
key: ${{ runner.os }}-Uploader-${{ hashFiles('source/Uploader/**') }}
174+
path: Uploader.exe
175+
fail-on-cache-miss: true # 前一步理应构造过的。如果不命中,肯定有问题,不如直接挂掉。
176+
177+
# 还原artifact(资源包)
178+
- name: Restore Artifacts
179+
uses: actions/download-artifact@v3
180+
with:
181+
path: artifacts/
199182

200183
- name: Run Uploader
201184
run: .\Uploader --host="${{ secrets.SSH_IP }}" --name="${{ secrets.SSH_USER }}" --password="${{ secrets.SSH_PWD }}"

0 commit comments

Comments
 (0)