Skip to content

Build All Platforms #63

Build All Platforms

Build All Platforms #63

Workflow file for this run

name: Build All Platforms
on:
workflow_dispatch:
jobs:
build-windows:
runs-on: windows-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '9.0.x'
- name: Restore dependencies
run: dotnet restore YALCY.sln
- name: Build
run: dotnet build --configuration Release YALCY.sln
- name: Publish GUI
run: dotnet publish -c Release -r win-x64 --self-contained=true --output ./publish YALCY/YALCY.csproj
- name: Publish CLI
run: dotnet publish -c Release -r win-x64 --self-contained=true --output ./publish YALCY.CLI/YALCY.CLI.csproj
- name: Upload Windows Binaries
uses: actions/upload-artifact@v4
with:
name: windows-binaries
path: ./publish
build-linux:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '9.0.x'
- name: Restore dependencies
run: dotnet restore YALCY.sln
- name: Build
run: dotnet build --configuration Release YALCY.sln
- name: Publish GUI
run: dotnet publish -c Release -r linux-x64 --self-contained=true --output ./publish YALCY/YALCY.csproj
- name: Publish CLI
run: dotnet publish -c Release -r linux-x64 --self-contained=true --output ./publish YALCY.CLI/YALCY.CLI.csproj
- name: Upload Linux Binaries
uses: actions/upload-artifact@v4
with:
name: linux-binaries
path: ./publish
build-macos:
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '9.0.x'
- name: Restore dependencies
run: dotnet restore YALCY.sln
- name: Build
run: dotnet build --configuration Release YALCY.sln
- name: Publish GUI
run: dotnet publish -c Release -r osx-x64 --self-contained=true --output ./publish YALCY/YALCY.csproj
- name: Publish CLI
run: dotnet publish -c Release -r osx-x64 --self-contained=true --output ./publish YALCY.CLI/YALCY.CLI.csproj
- name: Upload macOS Binaries
uses: actions/upload-artifact@v4
with:
name: macos-binaries
path: ./publish
release:
runs-on: ubuntu-latest
needs: [build-windows, build-linux, build-macos]
outputs:
next_version: ${{ steps.next_version.outputs.next_version }}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Fetch all tags
run: git fetch --tags
- name: Determine next version
id: next_version
run: |
latest_tag=$(git describe --tags --abbrev=0 || echo "v0.0.0")
IFS='.' read -r major minor patch <<<"${latest_tag//v/}"
new_patch=$((patch + 1))
next_version="v$major.$minor.$new_patch"
echo "next_version=$next_version" >> $GITHUB_ENV
echo "next_version=$next_version" >> $GITHUB_OUTPUT
- name: Download Windows Binaries
uses: actions/download-artifact@v4
with:
name: windows-binaries
path: ./windows
- name: Download Linux Binaries
uses: actions/download-artifact@v4
with:
name: linux-binaries
path: ./linux
- name: Zip Windows Binaries
run: |
cd ./windows
zip -r ../windows-x64-binaries.zip .
- name: Create Tarball for Linux Binaries
run: |
cd ./linux
tar -czvf ../linux-x64-binaries.tar.gz .
- name: Create Release and Upload Assets
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.next_version }}
name: "YALCY ${{ env.next_version }}"
body: |
Automatically generated release.
Includes:
- **YALCY** (GUI) - Full graphical interface
- **YALCY-cli** (CLI) - Headless command-line version
Platforms:
- Windows x64 binaries
- Linux x64 binaries
- macOS x64 binaries
draft: false
prerelease: false
files: |
./windows-x64-binaries.zip
./linux-x64-binaries.tar.gz
env:
GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
create-dmg:
runs-on: macos-latest
needs: release
steps:
- name: Download macOS Binaries
uses: actions/download-artifact@v4
with:
name: macos-binaries
path: ./macos
- name: Create DMG for macOS Binaries
run: |
hdiutil create -volname YALCY -srcfolder ./macos -ov -format UDZO ./macos-x64-binaries.dmg
- name: Upload macOS DMG to Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ needs.release.outputs.next_version }}
files: ./macos-x64-binaries.dmg
env:
GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}