This repository was archived by the owner on Feb 25, 2026. It is now read-only.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build | ||
| on: | ||
| workflow_call: | ||
| inputs: | ||
| name: | ||
| required: true | ||
| type: string | ||
| os: | ||
| required: true | ||
| type: string | ||
| buildArgs: | ||
| required: true | ||
| type: string | ||
| assetType: | ||
| required: true | ||
| type: string | ||
| artifactName: | ||
| required: true | ||
| type: string | ||
| artifactPath: | ||
| required: true | ||
| type: string | ||
| env: | ||
| HAXE_VERSION: 4.3.7 | ||
| PROJECT_NAME: HorrorPackage | ||
| jobs: | ||
| build: | ||
| name: Build | ||
| runs-on: ${{ inputs.os }} | ||
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@main | ||
| - name: Setup Haxe | ||
| if: inputs.name != 'Linux ARM64' | ||
| uses: krdlab/setup-haxe@master | ||
| with: | ||
| haxe-version: ${{ env.HAXE_VERSION }} | ||
| - name: Setup Haxe (Linux ARM) | ||
| if: inputs.name == 'Linux ARM64' | ||
| run: | | ||
| sudo add-apt-repository ppa:haxe/releases -y | ||
| sudo apt update | ||
| sudo apt-get install -y haxe neko | ||
| haxelib setup ~/haxelib | ||
| - name: Setup Xcode | ||
| if: inputs.name == 'iOS' | ||
| uses: maxim-lobanov/setup-xcode@master | ||
| with: | ||
| xcode-version: '16.4' | ||
| - name: Install Libraries | ||
| run: | | ||
| haxelib install hmm --quiet | ||
| haxelib run hmm install --quiet | ||
| - name: Configure Android | ||
| if: inputs.name == 'Android' | ||
| run: | | ||
| haxelib run lime config ANDROID_SDK $ANDROID_HOME | ||
| haxelib run lime config ANDROID_NDK_ROOT $ANDROID_NDK_LATEST_HOME | ||
| haxelib run lime config JAVA_HOME $JAVA_HOME_21_arm64 | ||
| haxelib run lime config ANDROID_SETUP true | ||
| sed -i '' '/<section if="android">/,/<\/section>/d' $(haxelib libpath flixel)/include.xml | ||
| - name: Compile | ||
| run: haxelib run lime build ${{ inputs.buildArgs }} -D ${{ inputs.assetType }} | ||
| - name: Make IPA | ||
| if: inputs.name == 'iOS' | ||
| run: | | ||
| brew install ldid | ||
| cd export/release/ios/build/Release-iphoneos/${{ env.PROJECT_NAME }}.app | ||
| ldid -S../../../${{ env.PROJECT_NAME }}/${{ env.PROJECT_NAME }}.entitlements ${{ env.PROJECT_NAME }} | ||
| cd .. | ||
| mkdir Payload | ||
| mv ${{ env.PROJECT_NAME }}.app Payload | ||
| zip -r ${{ env.PROJECT_NAME }}.ipa Payload | ||
| - name: Upload Artifact | ||
| if: inputs.name != 'HTML5' | ||
| uses: actions/upload-artifact@main | ||
| with: | ||
| name: ${{ inputs.artifactName }}-${{ inputs.assetType }} | ||
| path: ${{ inputs.artifactPath }} | ||
| if-no-files-found: error | ||
| - name: Upload Artifact to HorrorPackage.github.io | ||
| if: inputs.name == 'HTML5' | ||
| run: | | ||
| USER_INFO=$(curl -s "https://api.github.com/users/${{ github.actor }}") | ||
| USERID=$(echo "$USER_INFO" | jq -r '.id') | ||
| USERNAME=$(echo "$USER_INFO" | jq -r '.name') | ||
| git config --local user.email "[email protected]" | ||
| git config --local user.name "GitHub Actions" | ||
| git clone https://github.com/HorrorPackage/HorrorPackage.github.io ${{ github.workspace }}/HorrorPackage.github.io | ||
| cp -R ${{ inputs.artifactPath }}/* ${{ github.workspace }}/HorrorPackage.github.io | ||
| cd ${{ github.workspace }}/HorrorPackage.github.io | ||
| git add . | ||
| git commit -q --author="${USERNAME} <${USERID}+$(echo "$USERNAME" | sed 's/ /-/g')@users.noreply.github.com>" -m "Auto Push from Github Actions." || { | ||
| echo "Didn't commit anything, skipping git push." | ||
| exit 0 | ||
| } | ||
| git push | ||
| with: | ||
| GITHUB_TOKEN: ${{ secrets.GHR_TOKEN }} | ||