Skip to content

[FIX] for Windows build error #59

[FIX] for Windows build error

[FIX] for Windows build error #59

on:
push:
tags:
- "v*"
name: Release Multi Platform
permissions:
contents: write
jobs:
create-release:
name: Create Release
runs-on: ubuntu-latest
outputs:
is_alpha: ${{ steps.release_type.outputs.is_alpha }}
is_beta: ${{ steps.release_type.outputs.is_beta }}
suffix: ${{ steps.release_type.outputs.suffix }}
app_name: ${{ steps.app_info.outputs.app_name }}
version: ${{ steps.app_info.outputs.version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Determine Release Type
id: release_type
run: |
TAG="${GITHUB_REF##*/}"
if [[ "$TAG" == *alpha* || "$TAG" == *Alpha* || "$TAG" == *ALPHA* ]]; then
echo "is_alpha=true" >> $GITHUB_OUTPUT
echo "is_beta=false" >> $GITHUB_OUTPUT
echo "suffix= Beta" >> $GITHUB_OUTPUT
elif [[ "$TAG" == *beta* || "$TAG" == *Beta* || "$TAG" == *BETA* ]]; then
echo "is_alpha=false" >> $GITHUB_OUTPUT
echo "is_beta=true" >> $GITHUB_OUTPUT
echo "suffix= Beta" >> $GITHUB_OUTPUT
else
echo "is_alpha=false" >> $GITHUB_OUTPUT
echo "is_beta=false" >> $GITHUB_OUTPUT
echo "suffix=" >> $GITHUB_OUTPUT
fi
- name: Install jq
run: sudo apt-get update && sudo apt-get install -y jq
- name: Extract App Info from base.json
id: app_info
run: |
APP_NAME=$(jq -r '.app_name' src/build/settings/base.json)
VERSION=$(jq -r '.version' src/build/settings/base.json)
echo "app_name=$APP_NAME" >> $GITHUB_OUTPUT
echo "version=$VERSION" >> $GITHUB_OUTPUT
- name: Create Release
id: create_release
uses: ncipollo/release-action@v1
with:
tag: ${{ github.ref }}
name: Release ${{ github.ref_name }}
bodyFile: release_text.md
draft: false
prerelease: ${{ steps.release_type.outputs.is_alpha == 'true' || steps.release_type.outputs.is_beta == 'true' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build-linux:
name: Build Ubuntu
needs: create-release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Cache pip dependencies
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements/base.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y ruby ruby-dev rubygems build-essential
sudo gem install --no-document --minimal-deps fpm
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install Python dependencies
run: pip install -r requirements/base.txt
- name: Run ppg
run: |
ppg freeze
ppg installer
- name: Debug - List target contents
run: ls -R target || true
- name: Upload to Release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: target/${{ needs.create-release.outputs.app_name }}${{ needs.create-release.outputs.suffix }}.deb
asset_name: ${{ needs.create-release.outputs.app_name }}${{ needs.create-release.outputs.suffix }}-${{ needs.create-release.outputs.version }}.deb
tag: ${{ github.ref }}
overwrite: true
build-macos:
name: Build macOS
needs: create-release
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Cache pip dependencies
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements/base.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install Python dependencies
run: pip install -r requirements/base.txt
- name: Run ppg
run: |
ppg freeze
ppg installer
- name: Debug - List target contents
run: ls -R target || true
- name: Upload to Release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: target/${{ needs.create-release.outputs.app_name }}${{ needs.create-release.outputs.suffix }}.dmg
asset_name: ${{ needs.create-release.outputs.app_name }}${{ needs.create-release.outputs.suffix }}-${{ needs.create-release.outputs.version }}.dmg
tag: ${{ github.ref }}
overwrite: true
build-windows:
name: Build Windows
needs: create-release
runs-on: windows-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Cache pip dependencies
uses: actions/cache@v4
with:
path: ~\AppData\Local\pip\Cache
key: ${{ runner.os }}-pip-${{ hashFiles('requirements/base.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install Visual C++ 2010 Redistributable
run: choco install vcredist2010 --yes
- name: Install NSIS
run: choco install nsis --yes
- name: Add NSIS to PATH
run: echo "C:\Program Files (x86)\NSIS" >> $env:GITHUB_PATH
- name: Verify makensis
run: makensis /VERSION
- name: Install Python dependencies
run: pip install -r requirements/base.txt
- name: Run ppg
run: |
ppg freeze
ppg installer
- name: Debug - List target contents
run: dir target /s || exit 0
- name: Upload to Release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: target/${{ needs.create-release.outputs.app_name }}${{ needs.create-release.outputs.suffix }}Setup.exe
asset_name: ${{ needs.create-release.outputs.app_name }}${{ needs.create-release.outputs.suffix }}-${{ needs.create-release.outputs.version }}.exe
tag: ${{ github.ref }}
overwrite: true
rollback-release:
name: Rollback on Failure
if: ${{ failure() }}
needs: [build-linux, build-macos, build-windows]
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Rollback Release
uses: author/action-rollback@1.0.4
with:
tag: ${{ github.ref }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}