Files
hytale-f2p-mirror/.github/workflows/release.yml
2026-01-25 16:46:26 +08:00

197 lines
5.6 KiB
YAML

name: Build and Release
on:
push:
branches:
- main
tags:
- 'v*'
workflow_dispatch:
jobs:
build:
strategy:
matrix:
include:
- os: ubuntu-latest
platform: linux
- os: windows-latest
platform: win
- os: macos-latest
platform: mac
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
cache: 'npm'
- run: npm ci
- name: Build for ${{ matrix.os }}
run: npm run build:${{ matrix.platform }}
- name: Upload Artifacts for ${{ matrix.os }}
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.os }}-builds
path: |
dist/*.exe
dist/*.exe.blockmap
dist/*.dmg
dist/*.zip
dist/*.AppImage
dist/*.AppImage.blockmap
dist/*.deb
dist/*.rpm
dist/*.pkg.tar.zst
dist/latest*.yml
release:
needs: build
runs-on: ubuntu-latest
if: |
startsWith(github.ref, 'refs/tags/v')
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
merge-multiple: true
- name: Display structure of downloaded files
run: ls -R artifacts
- name: Get version from package.json
id: pkg_version
run: echo "VERSION=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT
- name: Create Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.ref_type == 'tag' && github.ref_name || format('v{0}.r{1}', steps.pkg_version.outputs.VERSION, github.run_number) }}
files: |
artifacts/ubuntu-latest-builds/**/*
artifacts/windows-latest-builds/**/*
artifacts/macos-latest-builds/**/*
generate_release_notes: true
draft: true
prerelease: false
# BACKUP
# build-linux:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# # Not needed anymore due to the removal of Pacman builds
# # - name: Install build dependencies
# # run: |
# # sudo apt-get update
# # sudo apt-get install -y libarchive-tools
# - uses: actions/setup-node@v4
# with:
# node-version: '22'
# cache: 'npm'
# - run: npm ci
# - name: Build Linux Packages
# run: |
# npx electron-builder --linux --x64 --arm64 --publish never
# - uses: actions/upload-artifact@v4
# with:
# name: linux-builds
# path: |
# dist/*.AppImage
# dist/*.AppImage.blockmap
# dist/*.deb
# dist/*.rpm
# dist/*.pkg.tar.zst
# dist/latest-linux.yml
# build-windows:
# runs-on: windows-latest
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-node@v4
# with:
# node-version: '22'
# cache: 'npm'
# - run: npm ci
# - name: Build Windows Packages
# run: npx electron-builder --win --publish never
# - uses: actions/upload-artifact@v4
# with:
# name: windows-builds
# path: |
# dist/*.exe
# dist/*.exe.blockmap
# dist/latest.yml
# build-macos:
# runs-on: macos-latest
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-node@v4
# with:
# node-version: '22'
# cache: 'npm'
# - run: npm ci
# - name: Build macOS Packages
# run: npx electron-builder --mac --publish never
# - uses: actions/upload-artifact@v4
# with:
# name: macos-builds
# path: |
# dist/*.dmg
# dist/*.zip
# dist/latest-mac.yml
# release:
# needs: [build-linux, build-windows, build-macos]
# runs-on: ubuntu-latest
# if: |
# startsWith(github.ref, 'refs/tags/v') ||
# github.ref == 'refs/heads/release' ||
# github.event_name == 'workflow_dispatch'
# permissions:
# contents: write
# steps:
# # FIX: './package.json' Module Not Found in `Get version` step
# - name: Checkout code
# uses: actions/checkout@v4
# - name: Download all artifacts
# uses: actions/download-artifact@v4
# with:
# path: artifacts
# - name: Display structure of downloaded files
# run: ls -R artifacts
# - name: Get version from package.json
# id: pkg_version
# run: echo "VERSION=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT
# - name: Create Release
# uses: softprops/action-gh-release@v2
# with:
# # If it's a tag, use the tag.
# tag_name: ${{ github.ref_type == 'tag' && github.ref_name || format('v{0}.r{1}', steps.pkg_version.outputs.VERSION, github.run_number) }}
# # If it's the 'release' branch, use 'v2.0.2-beta.r42'
# name: ${{ github.ref_type == 'tag' && github.ref_name || format('v{0}-beta.r{1}', steps.pkg_version.outputs.VERSION, github.run_number) }}
# files: |
# artifacts/linux-builds/**/*
# artifacts/windows-builds/**/*
# artifacts/macos-builds/**/*
# generate_release_notes: true
# draft: true
# # DYNAMIC FLAGS: Mark as pre-release ONLY IF it's NOT a tag (meaning it's a branch push)
# prerelease: ${{ github.ref_type != 'tag' }}