Skip to content

chore(release): version 0.45.1 #915

chore(release): version 0.45.1

chore(release): version 0.45.1 #915

Workflow file for this run

name: Build
on:
push:
branches:
- master
paths:
- 'xmcl-runtime/**'
- 'xmcl-runtime-api/**'
- 'xmcl-keystone-ui/**'
- 'xmcl-electron-app/**'
- 'package.json'
- 'pnpm-lock.yaml'
- '.github/**'
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: pnpm/action-setup@v4
with:
version: 9.3.0
- name: Fix node-gyp and Python
if: ${{ runner.os == 'macOS' }}
run: python3 -m pip install --break-system-packages --user packaging setuptools
- name: Use Node.js 20
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install
run: pnpm install
- name: Restore cached Electron
id: cache-electron
uses: actions/cache/restore@v4
with:
path: |
~/.cache/electron
~/.cache/electron-builder
key: ${{ runner.os }}-electron-build-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-electron-build-
- name: Build
run: |
pnpm run --prefix xmcl-keystone-ui build
pnpm run --prefix xmcl-electron-app build:all
env:
BUILD_NUMBER: ${{ github.run_number }}
NODE_OPTIONS: --max-old-space-size=32768
NODE_ENV: production
CURSEFORGE_API_KEY: ${{ secrets.CURSEFORGE_API_TOKEN }}
- name: Upload Source Maps
if: ${{ runner.os == 'Windows' }}
uses: actions/upload-artifact@v4
with:
name: sourcemap
path: |
xmcl-electron-app/dist/*.js.map
- name: Upload Build
uses: actions/upload-artifact@v4
with:
name: build-${{ runner.os }}
path: |
xmcl-electron-app/build/output/
- name: Upload Windows Zip Build
if: ${{ runner.os == 'Windows' }}
uses: actions/upload-artifact@v4
with:
name: win-b${{ github.run_number }}
path: |
xmcl-electron-app/build/output/win-unpacked/
- name: Upload Linux x64 Zip Build
if: ${{ runner.os == 'Linux' }}
uses: actions/upload-artifact@v4
with:
name: linux-b${{ github.run_number }}-x64
path: |
xmcl-electron-app/build/output/linux-unpacked/
- name: Upload Linux arm64 Zip Build
if: ${{ runner.os == 'Linux' }}
uses: actions/upload-artifact@v4
with:
name: linux-b${{ github.run_number }}-arm64
path: |
xmcl-electron-app/build/output/linux-arm64-unpacked/
- name: Upload Mac x64 Zip Build
if: ${{ runner.os == 'macOS' }}
uses: actions/upload-artifact@v4
with:
name: mac-b${{ github.run_number }}-x64
path: |
xmcl-electron-app/build/output/mac/
- name: Upload Mac arm64 Zip Build
if: ${{ runner.os == 'macOS' }}
uses: actions/upload-artifact@v4
with:
name: mac-b${{ github.run_number }}-arm64
path: |
xmcl-electron-app/build/output/mac-arm64/
- name: Save cached Electron
if: steps.cache-electron.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: |
~/.cache/electron
~/.cache/electron-builder
key: ${{ runner.os }}-electron-build-${{ hashFiles('**/pnpm-lock.yaml') }}
prepare-release:
runs-on: ubuntu-latest
needs:
- build
if: ${{ !startsWith(github.event.head_commit.message, 'chore(release)') }}
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- uses: pnpm/action-setup@v4
with:
version: 9.3.0
- name: Use Node.js 20
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install
run: |
pnpm install --filter ./.github/actions
- name: Bump Version
id: version
uses: Voxelum/semantic-version-bump-action@xmcl
with:
packages: |
./xmcl-keystone-ui
./xmcl-runtime
./xmcl-runtime-api
root: '.'
stage: 'prepare'
# - name: Update Sponsor
# uses: Voxelum/afdian-sponsor-action@master
# with:
# user-id: ${{ secrets.AFDIAN_USER_ID }}
# token: ${{ secrets.AFDIAN_TOKEN }}
# markdown: |
# README.md
# README.zh.md
- name: Update Lock File
if: ${{ steps.version.outputs.release == 'true' }}
run: pnpm i --lockfile-only
- name: Create Pull Request
if: ${{ steps.version.outputs.release == 'true' }}
uses: peter-evans/create-pull-request@v3
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: "chore(release): version ${{ steps.version.outputs.version }}"
title: Prepare Release ${{ steps.version.outputs.version }}
body: ${{ steps.version.outputs.changelog }}
reviewers: ci010
assignees: ci010
branch: prepare-release
upload-sourcemap:
runs-on: ubuntu-latest
needs:
- build
steps:
- name: Download Source Map
uses: actions/download-artifact@v4
with:
name: sourcemap
path: sourcemap/${{github.run_number}}
- name: Upload Source Map to Azure
uses: ci010/upload-blob-to-azure@master
env:
AZURE_ACCOUNT_KEY: ${{ secrets.AZURE_ACCOUNT_KEY }}
with:
account: xmcl
container: sourcemap
directory: ./sourcemap
release:
if: startsWith(github.event.head_commit.message, 'chore(release)')
runs-on: ubuntu-latest
needs:
- build
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
- uses: pnpm/action-setup@v4
with:
version: 9.3.0
- name: Use Node.js 20
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install
run: |
pnpm install --filter action-*
- name: Download Build
uses: actions/download-artifact@v4
with:
pattern: build-*
merge-multiple: true
path: build
- name: Prepare Release
id: prepare_release
uses: Voxelum/semantic-version-bump-action@xmcl
with:
packages: |
./xmcl-keystone-ui
./xmcl-runtime
./xmcl-runtime-api
root: '.'
stage: 'release'
- name: Create Tag
run: |
git remote set-url origin "https://x-access-token:${GITHUB_TOKEN}@github.com/voxelum/x-minecraft-launcher.git"
git config user.name ci010
git config user.email [email protected]
git tag -f ${{ steps.prepare_release.outputs.tag }}
git push origin tag ${{ steps.prepare_release.outputs.tag }} -f
- name: Emit Version File
run: |
echo ${{ steps.prepare_release.outputs.version }}.${{ github.run_number }} > ./build/version
- name: Patch download links
uses: ./.github/actions/patch-release-note
id: release_note
with:
body: ${{ steps.prepare_release.outputs.changelog }}
version: ${{ steps.prepare_release.outputs.version }}
- name: Draft Release
id: create_release
uses: voxelum/create-release@xmcl
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.prepare_release.outputs.tag }}
release_name: ${{ steps.prepare_release.outputs.tag }}
draft: true
prerelease: false
body: ${{ steps.release_note.outputs.body }}
asset_dir_path: ./build
- name: Checkout Website
uses: actions/checkout@v4
with:
repository: Voxelum/xmcl-page
path: xmcl-page
- name: Create Release Note
uses: ./.github/actions/generate-release-note
with:
body: ${{ steps.prepare_release.outputs.changelog }}
version: ${{ steps.prepare_release.outputs.version }}
env:
DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }}
- name: Create Release Note PR
uses: peter-evans/create-pull-request@v3
with:
token: ${{ secrets.PAT_GITHUB_TOKEN }}
path: xmcl-page
commit-message: "docs: Update ${{ steps.prepare_release.outputs.version }} release note"
title: Update ${{ steps.prepare_release.outputs.version }} release note
body: Update ${{ steps.prepare_release.outputs.version }} release note
reviewers: ci010
assignees: ci010
branch: release-note-${{ steps.prepare_release.outputs.version }}