@@ -125,19 +125,12 @@ jobs:
125125 with :
126126 name : macOS Build
127127 path : HyperCodeEngine-macOS.zip
128-
129- buildAndroid : # I lazy to make facking this shit.
128+ setup-android-deps :
130129 runs-on : ubuntu-latest
131130 if : false
132131 needs : [wait]
133132 steps :
134- - uses : actions/checkout@v4
135- - uses : actions/download-artifact@v4
136- with :
137- name : Version
138-
139- # Install required dependencies first
140- - name : Install Dependencies
133+ - name : Install System Dependencies
141134 run : |
142135 sudo dpkg --add-architecture i386
143136 sudo apt-get update
@@ -163,14 +156,26 @@ jobs:
163156 uses : jwlawson/actions-setup-cmake@v2.0.2
164157 with :
165158 cmake-version : ' 3.26.x'
159+ - name : Cache Dependencies
160+ uses : actions/cache@v4
161+ with :
162+ path : |
163+ /usr/lib/i386-linux-gnu
164+ /usr/lib32
165+ key : android-deps-${{ runner.os }}-${{ hashFiles('.github/workflows/main.yml') }}
166166
167- - name : Setup JNI Environment
168- run : |
169- echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
170- echo "JDK_HOME=$JAVA_HOME" >> $GITHUB_ENV
171- echo "CPPFLAGS=-I$JAVA_HOME/include -I$JAVA_HOME/include/linux" >> $GITHUB_ENV
172- echo "CFLAGS=-I$JAVA_HOME/include -I$JAVA_HOME/include/linux" >> $GITHUB_ENV
173-
167+ setup-android-env :
168+ runs-on : ubuntu-latest
169+ if : false
170+ needs : [setup-android-deps]
171+ steps :
172+ - uses : actions/checkout@v4
173+ - name : Setup Java JDK
174+ uses : actions/setup-java@main
175+ with :
176+ distribution : ' zulu'
177+ java-version : ' 18'
178+
174179 - name : Setup Android NDK
175180 id : setup-ndk
176181 uses : nttld/setup-ndk@main
@@ -184,22 +189,26 @@ jobs:
184189
185190 - name : Set Android Environment Variables
186191 run : |
192+ echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
193+ echo "JDK_HOME=$JAVA_HOME" >> $GITHUB_ENV
194+ echo "CPPFLAGS=-I$JAVA_HOME/include -I$JAVA_HOME/include/linux" >> $GITHUB_ENV
195+ echo "CFLAGS=-I$JAVA_HOME/include -I$JAVA_HOME/include/linux" >> $GITHUB_ENV
187196 echo "ANDROID_HOME=$ANDROID_SDK_ROOT" >> $GITHUB_ENV
188197 echo "ANDROID_SDK=$ANDROID_SDK_ROOT" >> $GITHUB_ENV
189198 echo "ANDROID_NDK_HOME=${{ steps.setup-ndk.outputs.ndk-path }}" >> $GITHUB_ENV
190199 echo "ANDROID_NDK_ROOT=${{ steps.setup-ndk.outputs.ndk-path }}" >> $GITHUB_ENV
191200 echo "ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT" >> $GITHUB_ENV
192201
193- - name : Setup Java JDK
194- uses : actions/setup-java@main
195- with :
196- distribution : ' zulu '
197- java-version : ' 18 '
198-
202+ setup-android-haxe :
203+ runs-on : ubuntu-latest
204+ if : false
205+ needs : [setup-android-env]
206+ steps :
207+ - uses : actions/checkout@v4
199208 - uses : krdlab/setup-haxe@master
200209 with :
201210 haxe-version : ${{ env.HAXE_VERSION }}
202-
211+
203212 - name : Setup Haxe Dependencies
204213 run : |
205214 haxelib setup ~/haxelib
@@ -216,6 +225,16 @@ jobs:
216225 haxelib run lime config ANDROID_NDK_ROOT ${{ steps.setup-ndk.outputs.ndk-path }}
217226 haxelib run lime setup android -y
218227
228+ buildAndroid :
229+ runs-on : ubuntu-latest
230+ if : false
231+ needs : [setup-android-haxe]
232+ steps :
233+ - uses : actions/checkout@v4
234+ - uses : actions/download-artifact@v4
235+ with :
236+ name : Version
237+
219238 - name : Build Android
220239 run : |
221240 haxelib run lime rebuild hxcpp
@@ -252,8 +271,7 @@ jobs:
252271 with :
253272 name : iOS Build
254273 path : HyperCodeEngine-iOS.zip
255-
256- notifyDiscord :
274+ check-build-status :
257275 runs-on : ubuntu-latest
258276 if : always()
259277 needs :
@@ -263,15 +281,15 @@ jobs:
263281 - buildAndroid
264282 - buildiOS
265283 - version
284+ outputs :
285+ status_linux : ${{ steps.check.outputs.linux }}
286+ status_windows : ${{ steps.check.outputs.windows }}
287+ status_mac : ${{ steps.check.outputs.mac }}
288+ status_android : ${{ steps.check.outputs.android }}
289+ status_ios : ${{ steps.check.outputs.ios }}
290+ all_success : ${{ steps.check.outputs.all_success }}
266291 steps :
267- - name : Notify Discord
268- env :
269- DISCORD_WEBHOOK : ${{ secrets.DISCORD_WEBHOOK_URL }}
270- RUN_URL : https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
271- COMMIT_URL : https://github.com/${{ github.repository }}/commit/${{ github.sha }}
272- BRANCH : ${{ github.ref_name }}
273- COMMIT_MESSAGE : ${{ github.event.head_commit.message || github.event.pull_request.title || 'Manual Trigger' }}
274- VERSION : ${{ needs.version.outputs.version_tag }}
292+ - id : check
275293 run : |
276294 check() {
277295 case "$1" in
@@ -280,23 +298,44 @@ jobs:
280298 *) echo "❌ Failed";;
281299 esac
282300 }
301+
302+ echo "linux=$(check "${{ needs.buildLinux.result }}")" >> "$GITHUB_OUTPUT"
303+ echo "windows=$(check "${{ needs.buildWindows.result }}")" >> "$GITHUB_OUTPUT"
304+ echo "mac=$(check "${{ needs.buildMac.result }}")" >> "$GITHUB_OUTPUT"
305+ echo "android=$(check "${{ needs.buildAndroid.result }}")" >> "$GITHUB_OUTPUT"
306+ echo "ios=$(check "${{ needs.buildiOS.result }}")" >> "$GITHUB_OUTPUT"
307+
308+ if [[ "${{ needs.buildLinux.result }}" == "success" ]] && \
309+ [[ "${{ needs.buildWindows.result }}" == "success" ]] && \
310+ [[ "${{ needs.buildMac.result }}" == "success" ]] && \
311+ [[ "${{ needs.buildAndroid.result }}" == "skipped" ]] && \
312+ [[ "${{ needs.buildiOS.result }}" == "skipped" ]]; then
313+ echo "all_success=true" >> "$GITHUB_OUTPUT"
314+ else
315+ echo "all_success=false" >> "$GITHUB_OUTPUT"
316+ fi
283317
284- STATUS_LINUX=$(check "${{ needs.buildLinux.result }}")
285- STATUS_WIN=$(check "${{ needs.buildWindows.result }}")
286- STATUS_MAC=$(check "${{ needs.buildMac.result }}")
287- STATUS_ANDROID=$(check "${{ needs.buildAndroid.result }}")
288- STATUS_IOS=$(check "${{ needs.buildiOS.result }}")
289-
290- TITLE="✅ All Builds Succeeded"
291- COLOR=65280
292- for status in "$STATUS_LINUX" "$STATUS_WIN" "$STATUS_MAC" "$STATUS_ANDROID" "$STATUS_IOS"; do
293- if [[ "$status" == "❌ Failed" ]]; then
294- TITLE="❌ Build Failure Detected"
295- COLOR=16711680
296- break
297- fi
298- done
299-
318+ notify-discord-status :
319+ runs-on : ubuntu-latest
320+ needs : [check-build-status, version]
321+ steps :
322+ - name : Notify Discord
323+ env :
324+ DISCORD_WEBHOOK : ${{ secrets.DISCORD_WEBHOOK_URL }}
325+ RUN_URL : https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
326+ COMMIT_URL : https://github.com/${{ github.repository }}/commit/${{ github.sha }}
327+ BRANCH : ${{ github.ref_name }}
328+ COMMIT_MESSAGE : ${{ github.event.head_commit.message || github.event.pull_request.title || 'Manual Trigger' }}
329+ VERSION : ${{ needs.version.outputs.version_tag }}
330+ STATUS_LINUX : ${{ needs.check-build-status.outputs.status_linux }}
331+ STATUS_WIN : ${{ needs.check-build-status.outputs.status_windows }}
332+ STATUS_MAC : ${{ needs.check-build-status.outputs.status_mac }}
333+ STATUS_ANDROID : ${{ needs.check-build-status.outputs.status_android }}
334+ STATUS_IOS : ${{ needs.check-build-status.outputs.status_ios }}
335+ run : |
336+ TITLE="${{ needs.check-build-status.outputs.all_success == 'true' && '✅ All Builds Succeeded' || '❌ Build Failure Detected' }}"
337+ COLOR="${{ needs.check-build-status.outputs.all_success == 'true' && '65280' || '16711680' }}"
338+
300339 CONTENT="🖥️ **Desktop Builds**\n• Linux: $STATUS_LINUX\n• Windows: $STATUS_WIN\n• macOS: $STATUS_MAC\n\n📱 **Mobile Builds**\n• Android: $STATUS_ANDROID\n• iOS: $STATUS_IOS"
301340
302341 curl -H "Content-Type: application/json" -X POST -d "{
@@ -316,26 +355,18 @@ jobs:
316355 }]
317356 }" "$DISCORD_WEBHOOK"
318357
319- UploadToGitHubReleases :
358+ prepare-release :
320359 runs-on : ubuntu-latest
321360 permissions :
322361 contents : write
323362 needs :
324- - buildLinux
325- - buildWindows
326- - buildMac
327- - buildAndroid
328- - buildiOS
363+ - check-build-status
329364 - version
330- if : always()
365+ if : needs.check-build-status.outputs.all_success == 'true'
366+ outputs :
367+ release_id : ${{ steps.create_release.outputs.id }}
331368 steps :
332- - name : Checkout code
333- uses : actions/checkout@v4
334- - name : Download artifacts
335- uses : actions/download-artifact@v4
336- with :
337- path : builds
338- - name : Create Release
369+ - name : Create GitHub Release
339370 id : create_release
340371 uses : actions/create-release@v1.1.4
341372 env :
@@ -380,10 +411,21 @@ jobs:
380411 — HyperCode Engine AutoBuilder
381412 draft : false
382413 prerelease : true
383- - name : List files for upload
384- run : ls -R builds
385414
386- - name : Upload Artifacts
415+ upload-artifacts :
416+ runs-on : ubuntu-latest
417+ permissions :
418+ contents : write
419+ needs : [prepare-release, version]
420+ if : needs.prepare-release.outputs.release_id != ''
421+ steps :
422+ - name : Download all build artifacts
423+ uses : actions/download-artifact@v4
424+ with :
425+ path : builds
426+ - name : List downloaded files
427+ run : ls -R builds
428+ - name : Upload Release Artifacts
387429 uses : softprops/action-gh-release@v2.2.2
388430 with :
389431 tag_name : ${{ needs.version.outputs.version_tag }}
0 commit comments