Skip to content

Pollution of the Realms 翻译更新 (#4627) #5515

Pollution of the Realms 翻译更新 (#4627)

Pollution of the Realms 翻译更新 (#4627) #5515

Workflow file for this run

name: Packer
on:
workflow_dispatch:
push:
branches: [ main ]
paths:
- 'src/**'
- 'config/packer/**'
- 'projects/**'
jobs:
build-packer:
if: github.repository == 'CFPAOrg/Minecraft-Mod-Language-Package'
name: Build / Cache Packer
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
sparse-checkout: src
# 缓存程序。一方面,在不同job之间需要这么做;另一方面,大约可以改善运行时间?
# actions/cache的逻辑会在job末尾缓存打包程序;如果不命中,就自行构造程序。
- name: Cache Packer
id: cache-packer
uses: actions/cache@v3
with:
key: ${{ runner.os }}-Packer-${{ hashFiles('src/Packer/**') }}
path: |
Packer.exe
git2-*.dll
lookup-only: true
# 构造程序
- name: Build Packer if not cached
if: steps.cache-packer.outputs.cache-hit != 'true'
run: dotnet publish .\src\Packer\Packer.csproj -o ./ -r win-x64 -p:PublishSingleFile=true
# build-uploader:
# if: github.repository == 'CFPAOrg/Minecraft-Mod-Language-Package'
# name: Build / Cache Uploader
# runs-on: windows-latest
# steps:
# - uses: actions/checkout@v4
# with:
# fetch-depth: 1
# sparse-checkout: src
# # 缓存程序。一方面,在不同job之间需要这么做;另一方面,大约可以改善运行时间?
# # actions/cache的逻辑会在job末尾缓存打包程序;如果不命中,就自行构造程序。
# - name: Cache Uploader
# id: cache-uploader
# uses: actions/cache@v3
# with:
# key: ${{ runner.os }}-Uploader-${{ hashFiles('src/Uploader/**') }}
# path: Uploader.exe
# lookup-only: true
# # 构造程序
# - name: Build Uploader if not cached
# if: steps.cache-uploader.outputs.cache-hit != 'true'
# run: dotnet publish .\src\Uploader\Uploader.csproj -o ./ -r win-x64 -p:PublishSingeFile=true
initialize-release:
if: github.repository == 'CFPAOrg/Minecraft-Mod-Language-Package'
name: Initialize Release
runs-on: windows-latest
steps:
- name: Create timestamp
id: create_timestamp
run: echo "::set-output name=timestamp::$(date '+%Y%m%d%H%M%s')"
shell: bash
# Create the release: https://github.com/actions/create-release
- name: Create release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: Snapshot-${{ steps.create_timestamp.outputs.timestamp }}
release_name: 汉化资源包-Snapshot-${{ steps.create_timestamp.outputs.timestamp }}
draft: false
prerelease: false
outputs:
upload-url: ${{ steps.create_release.outputs.upload_url }}
pack:
if: github.repository == 'CFPAOrg/Minecraft-Mod-Language-Package'
name: Pack Resources and Upload Artifacts/Releases
needs: [ build-packer, initialize-release ] # 显然,需要存在打包程序,才能打包。
strategy:
fail-fast: false # 把正常的文件先打包了,避免一处错误阻塞整个仓库。
matrix:
# 版本列表。将对这里的每个版本判断,按需打包。
# 如需添加新版本,在这里添加即可。
version: [ "1.12.2", "1.16", "1.16-fabric", "1.18", "1.18-fabric", "1.19", "1.20", "1.20-fabric", "1.21", "1.21-fabric" ]
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 20 # 显然,需要有提交历史才能比较提交。20这个数是任意的。
# 由于Github的限制,这里需要重新拉取打包程序。
- name: Restore Packer
id: cache-restore
# https://github.com/actions/cache/issues/1265#issuecomment-1819612829 `fail-on-cache-miss` for restore action not failing the workflow
uses: actions/cache/[email protected]
with:
key: ${{ runner.os }}-Packer-${{ hashFiles('source/Packer/**') }}
path: |
Packer.exe
git2-*.dll
fail-on-cache-miss: true # 前一步理应构造过的。如果不命中,肯定有问题,不如直接挂掉。
- name: Check changed path on ${{ matrix.version }}
uses: MarceloPrado/[email protected]
id: check-changes
with:
# 判断位置:该版本文件、该版本配置、代码
paths: >
projects/${{ matrix.version }}
config/packer/${{ matrix.version }}.json
src/**
- name: Run Packer for ${{ matrix.version }}
# 分发包中应当包含全部内容
run: ./Packer --version="${{ matrix.version }}"
# 运行逻辑:内容有更改 或 手动运行
if: steps.check-changes.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'
# Artifact 上传内容:每个版本一个压缩包,包含了资源包和md5校验文件
- name: Upload Artifact for ${{ matrix.version }}
uses: actions/upload-artifact@v4
with:
name: Minecraft-Mod-Language-Package-${{ matrix.version }}
path: |
Minecraft-Mod-Language-Package-${{ matrix.version }}.zip
${{ matrix.version }}.md5
if: steps.check-changes.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'
# Upload release asset: https://github.com/actions/upload-release-asset
- name: Update release asset for ${{ matrix.version }}
id: upload-release-asset
if: steps.check-changes.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.initialize-release.outputs.upload-url }}
asset_path: Minecraft-Mod-Language-Package-${{ matrix.version }}.zip
asset_name: Minecraft-Mod-Language-Package-${{ matrix.version }}.zip
asset_content_type: application/zip
upload:
if: github.repository == 'CFPAOrg/Minecraft-Mod-Language-Package'
name: Upload Resource Packs to Remote Server
needs: [ pack ] # 显然,需要打包完成,并且存在上传程序,才可以上传给分发服务器
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
sparse-checkout: src
# 构造程序
- name: Build Uploader
run: dotnet publish .\src\Uploader\Uploader.csproj -o ./ -r win-x64 -p:PublishSingeFile=true
# 还原artifact(资源包)
- name: Restore Artifacts
uses: actions/download-artifact@v4
with:
path: artifacts/
- name: Run Uploader
run: .\Uploader --host="${{ secrets.SSH_IP }}" --name="${{ secrets.SSH_USER }}" --password="${{ secrets.SSH_PWD }}"