Skip to content

Build and Release EXE and APK #14

Build and Release EXE and APK

Build and Release EXE and APK #14

name: Build and Release EXE and APK
on:
workflow_dispatch:
jobs:
build:
runs-on: windows-latest
steps:
# Checkout the repository code
- name: Checkout code
uses: actions/checkout@v3
# Set up .NET SDK
- name: Set up .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '8.0.x'
- name: Clear NuGet Cache
run: dotnet nuget locals all --clear
- name: Download Keystore
run: |
[System.IO.File]::WriteAllBytes("gene.keystore", [Convert]::FromBase64String("${{ secrets.ANDROID_KEYSTORE }}"))
- name: Build Model
run: dotnet publish ModelA/ModelA.csproj -c Release -r win-x86 --self-contained -o ./Release
- name: Build Gene dll
run: dotnet publish GeneA/GeneA.csproj -c Release -r win-x86 --self-contained -o ./Release
# Build the EXE in Release mode
- name: Build EXE
run: dotnet publish GeneA.Desktop/GeneA.Desktop.csproj -c Release -r win-x86 --self-contained -o ./Desktop/Release
- name: Download dotnet runtime
run: |
Invoke-WebRequest -Uri "https://download.visualstudio.microsoft.com/download/pr/3980ab0a-379f-44a0-9be6-eaf74c07a3b3/bd1cc6107ff3d8fe0104d30f01339b74/dotnet-runtime-8.0.7-win-x64.exe" -OutFile "./DesktopInstall/dotnet-runtime-8.0.7-win-x64.exe"
# Install NSIS
- name: Install NSIS
run: choco install nsis
# Create the EXE installer using NSIS
- name: Create EXE Installer
run: makensis DesktopInstall/GeneInstallerScript.nsi
- name: Set up Java
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: '11'
- name: Install Android SDK
run: |
choco install android-sdk
choco install android-ndk
echo "export ANDROID_HOME=C:/Program Files (x86)/Android/android-sdk" >> $GITHUB_ENV
echo "export PATH=$ANDROID_HOME/emulator:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools/30.0.3:$PATH" >> $GITHUB_ENV
- name: Install Android Workloads
run: dotnet workload install android
# Build the APK in Release mode
- name: Build APK
run: dotnet publish GeneA.Android/GeneA.Android.csproj -c Release -o ./Android/Release
# Sign the APK (if needed)
- name: Sign APK
run: |
$ANDROID_HOME/build-tools/30.0.3/apksigner sign --ks gene.keystore --ks-key-alias gene --ks-pass pass:${{ secrets.KEYSTORE_PASSWORD }} ./Android/Release/com.jooworks.Gene.apk
# Create a new GitHub release
# - name: Create GitHub Release
# id: create_release
# uses: actions/create-release@v1
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# with:
# tag_name: v1.0.${{ github.run_number }} # Auto-increment the version
# release_name: Release v1.0.${{ github.run_number }}
# draft: false
# prerelease: false
# # Upload the EXE installer to the GitHub release
# - name: Upload EXE to Release
# uses: actions/upload-release-asset@v1
# with:
# upload_url: ${{ steps.create_release.outputs.upload_url }}
# asset_path: ./Desktop/Release/Gene-Installer.exe
# asset_name: Gene-Installer.exe
# asset_content_type: application/octet-stream
# # Upload the signed APK to the GitHub release
# - name: Upload APK to Release
# uses: actions/upload-release-asset@v1
# with:
# upload_url: ${{ steps.create_release.outputs.upload_url }}
# asset_path: ./Android/Release/com.jooworks.Gene.apk
# asset_name: com.jooworks.Gene.apk
# asset_content_type: application/vnd.android.package-archive