Skip to content

SUB - Build on Windows #13

SUB - Build on Windows

SUB - Build on Windows #13

name: SUB - Build on Windows
on:
workflow_dispatch:
inputs:
env:
description: "An Environment"
required: true
type: choice
options:
- Development
- Production
version:
description: "A Version"
required: true
type: string
caching:
description: "Use caching"
required: true
type: boolean
default: false
workflow_call:
inputs:
env:
description: "An Environment"
required: true
type: string
version:
description: "A Version"
required: true
type: string
caching:
description: "Use caching"
required: true
type: boolean
default: false
env:
app_name: ${{ inputs.env == 'Production' && 'SuperHumanInstaller' || 'SuperHumanInstallerDev' }}
app_id: net.prominic.genesis.${{ inputs.env == 'Production' && 'superhumaninstaller' || 'superhumaninstallerdev' }}
haxe_flag: ${{ inputs.env == 'Production' && '-final' || '-debug -Dverbose_logs -Ddebug_logs' }}
haxe_version: 4.3.4
bin_path: Export/${{ inputs.env }}/windows/bin/
jobs:
build:
runs-on: windows-latest
steps:
- name: Build info
run: |
echo "Ref: ${{ github.ref_name }}"
echo "Env: ${{ inputs.env }}"
echo "Version: ${{ inputs.version }}"
echo "App Name: ${{ env.app_name }}"
echo "App ID: ${{ env.app_id }}"
echo "Haxe Env Flag: ${{ env.haxe_flag }}"
- name: Checkout repo
uses: actions/checkout@v4
with:
lfs: true
- name: Checkout LFS objects
run: git lfs checkout
- name: Override project.xml version
uses: Moonshine-IDE/[email protected]
with:
filepath: "project.xml"
xpath: "/project/meta/@version"
replace: "${{ inputs.version }}"
- name: Set up Haxe
uses: krdlab/[email protected]
with:
haxe-version: ${{ env.haxe_version }}
- name: Show haxe info
run: |
echo "Haxe version:"
haxe -version
echo "Haxe lib path:"
haxelib config
- name: Update haxelib
run: haxelib --global update haxelib
- name: Cache Binaries
id: cache-bin
if: ${{ inputs.caching }}
uses: actions/cache@v4
with:
path: ${{ env.bin_path }}
key: ${{ env.app_name }}-windows-bin
- name: Install dependencies
if: ${{ !inputs.caching || !steps.cache-bin.outputs.cache-hit }}
working-directory: Build
run: |
haxelib git hxcpp https://github.com/HaxeFoundation/hxcpp.git v4.3.24
pushd .
cd C:\hostedtoolcache\windows\haxe\4.3.4\x64\lib\hxcpp\git\tools\hxcpp
haxe compile.hxml
popd
git clone --recursive --depth 1 --branch develop https://github.com/openfl/lime
haxelib dev lime lime
haxelib install format
haxelib install hxp
haxelib git lime-samples https://github.com/openfl/lime-samples
haxelib git openfl https://github.com/openfl/openfl.git develop
haxelib run openfl setup
haxelib git feathersui https://github.com/feathersui/feathersui-openfl.git
haxelib git champaign https://github.com/Moonshine-IDE/Champaign.git
- name: Build
if: ${{ !inputs.caching || !steps.cache-bin.outputs.cache-hit }}
run: >
haxelib run openfl build project.xml windows
${{ env.haxe_flag }}
-Dlogverbose
-Dlogcolor
-Dgitsha=${{ github.sha }}
-Dgitbranch=${{ github.ref_name }}
- name: Show Build
run: ls -r ${{ env.bin_path }}
- name: Upload bin
uses: actions/upload-artifact@v4
with:
name: ${{ env.app_name }}-windows-bin
path: ${{ env.bin_path }}
- name: Create NSIS installer
run: >
makensis
/DPRODUCT_NAME=${{ env.app_name }}
/DPRODUCT_VERSION=${{ inputs.version }}
/DPRODUCT_PUBLISHER="Prominic.NET"
/DPRODUCT_WEB_SITE="/https://superhumaninstaller.com/"
/DBIN_PATH="${{ env.bin_path }}\*.*"
/DPRODUCT_EXE=${{ env.app_name }}.exe
/DPRODUCT_INSTALLER=${{ env.app_name }}-Setup.exe
/DROOT_KEY=HKCU
Templates/installer/nsis-installer.nsi
- name: Sign installer
uses: Moonshine-IDE/[email protected]
with:
bin-path: Templates/installer/${{ env.app_name }}-Setup.exe
sm-host: ${{ secrets.SM_HOST }}
sm-api-key: ${{ secrets.SM_API_KEY }}
sm-client-cert-file-b64: ${{ secrets.SM_CLIENT_CERT_FILE_B64 }}
sm-client-cert-password: ${{ secrets.SM_CLIENT_CERT_PASSWORD }}
sm-code-signing-cert-sha1-hash: ${{ secrets.SM_CODE_SIGNING_CERT_SHA1_HASH }}
- name: Upload installer
uses: actions/upload-artifact@v4
with:
name: ${{ env.app_name }}-windows-installer
path: Templates/installer/${{ env.app_name }}-Setup.exe
if-no-files-found: error
- name: Copy files to choco
env:
choco_dir: ${{ inputs.env == 'Production' && 'chocolatey' || 'chocolatey-dev' }}
nupkg: ${{ inputs.env == 'Production' && 'superhumaninstaller*.nupkg' || 'superhumaninstallerdev*.nupkg' }}
run: |
cp Templates/installer/${{ env.app_name }}-Setup.exe Templates/${{ env.choco_dir }}/tools/
cp LICENSE.MD Templates/${{ env.choco_dir }}/
- name: Create chocko package
env:
choco_dir: ${{ inputs.env == 'Production' && 'chocolatey' || 'chocolatey-dev' }}
nupkg: ${{ inputs.env == 'Production' && 'superhumaninstaller*.nupkg' || 'superhumaninstallerdev*.nupkg' }}
run: |
choco pack `
--version ${{ inputs.version }} `
--out Templates/${{ env.choco_dir }}/ `
Templates/${{ env.choco_dir }}/${{ env.app_name }}.nuspec
mv `
.\Templates\${{ env.choco_dir }}\${{ env.nupkg }} `
.\Templates\${{ env.choco_dir }}\${{ env.app_name }}-Choco.nupkg
- name: Upload choco package
uses: actions/upload-artifact@v4
env:
choco_dir: ${{ inputs.env == 'Production' && 'chocolatey' || 'chocolatey-dev' }}
with:
name: ${{ env.app_name }}-Choco
path: Templates/${{ env.choco_dir }}/${{ env.app_name }}-Choco.nupkg