From a2e19623360b2e43e17bbae9ad354f0cb037d98d Mon Sep 17 00:00:00 2001 From: Josh Tynjala Date: Fri, 12 Jun 2020 15:03:35 -0700 Subject: [PATCH] Github Actions: also compiles some samples for a bunch of platforms Currently, does not include iOS, but I plan to add that later --- .github/workflows/main.yml | 254 +++++++++++++++++++++---------------- 1 file changed, 142 insertions(+), 112 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a9223b028..80b4249cb 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -4,15 +4,14 @@ on: [push] jobs: - build-linux: - runs-on: ubuntu-16.04 - - env: - ANDROID_NDK_ROOT: /opt/android-ndk-r15c + build: strategy: matrix: haxe-version: [3.4.7, 4.0.5, 4.1.1] + os: [ubuntu-16.04, macos-latest, windows-latest] + + runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 @@ -25,81 +24,63 @@ jobs: with: java-version: 8 - - name: Install dependencies + - name: Install Haxelib dependencies run: | - haxelib install hxcpp --quiet + haxelib install hxcpp 4.0.64 --quiet haxelib install format --quiet haxelib install hxp --quiet - sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev g++-multilib gcc-multilib libasound2-dev libx11-dev libxext-dev libxi-dev libxrandr-dev libxinerama-dev + haxelib git lime-samples https://github.com/openfl/lime-samples --quiet - - name: Install Android NDK + - name: Set ANDROID_NDK_ROOT (Linux and macOS) + if: ${{ !startsWith(matrix.os, 'windows-') }} + run: echo "::set-env name=ANDROID_NDK_ROOT::/opt/android-ndk-r15c" + + - name: Set ANDROID_NDK_ROOT (Windows) + if: ${{ startsWith(matrix.os, 'windows-') }} + run: echo "::set-env name=ANDROID_NDK_ROOT::C:\android-ndk-r15c" + + - name: Install Linux dependencies + if: ${{ startsWith(matrix.os, 'ubuntu-') }} + run: sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev g++-multilib gcc-multilib libasound2-dev libx11-dev libxext-dev libxi-dev libxrandr-dev libxinerama-dev + + - name: Install Android NDK (Linux) + if: ${{ startsWith(matrix.os, 'ubuntu-') }} run: | mkdir $ANDROID_NDK_ROOT wget -O android-ndk.zip --quiet https://dl.google.com/android/repository/android-ndk-r15c-linux-x86_64.zip unzip -qq android-ndk.zip -d $ANDROID_NDK_ROOT/.. rm android-ndk.zip - - name: Install "lime" command alias - run: | - haxelib dev lime $GITHUB_WORKSPACE - haxelib run lime setup -alias -y - - - name: Configure Lime for Android - run: | - lime config ANDROID_SDK $ANDROID_HOME - haxelib run lime config ANDROID_NDK_ROOT $ANDROID_NDK_ROOT - haxelib run lime config JAVA_HOME $JAVA_HOME - haxelib run lime config ANDROID_SETUP true - haxelib run lime config - - - name: Rebuild Lime tools - run: | - lime rebuild tools -nocolor -verbose - - - name: Rebuild Lime binaries - run: | - lime rebuild linux -64 -release -verbose -nocolor - lime rebuild linux -32 -release -verbose -nocolor - lime rebuild hl -64 -release -verbose -nocolor - lime rebuild android -release -verbose -nocolor - - build-macos: - runs-on: macos-latest - - env: - ANDROID_NDK_ROOT: /opt/android-ndk-r15c - - strategy: - matrix: - haxe-version: [3.4.7, 4.0.5, 4.1.1] - - steps: - - uses: actions/checkout@v2 - with: - submodules: true - - uses: haxeui/haxeui-core/.github/actions/haxe@master - with: - haxe-version: ${{ matrix.haxe-version }} - - - name: Install dependencies - run: | - haxelib install hxcpp --quiet - haxelib install format --quiet - haxelib install hxp --quiet - - - name: Install Android NDK r15c + - name: Install Android NDK r15c (macOS) + if: ${{ startsWith(matrix.os, 'macos-') }} run: | mkdir $ANDROID_NDK_ROOT wget -O android-ndk.zip --quiet https://dl.google.com/android/repository/android-ndk-r15c-darwin-x86_64.zip unzip -qq android-ndk.zip -d $ANDROID_NDK_ROOT/.. rm android-ndk.zip - - name: Install "lime" command alias + - name: Install Android NDK r15c (Windows) + if: ${{ startsWith(matrix.os, 'windows-') }} + run: | + mkdir $Env:ANDROID_NDK_ROOT + Invoke-WebRequest https://dl.google.com/android/repository/android-ndk-r15c-windows-x86_64.zip -OutFile android-ndk.zip + Expand-Archive android-ndk.zip -DestinationPath $Env:ANDROID_NDK_ROOT/.. + rm android-ndk.zip + + - name: Install "lime" command alias (Linux and macOS) + if: ${{ !startsWith(matrix.os, 'windows-') }} run: | haxelib dev lime $GITHUB_WORKSPACE haxelib run lime setup -alias -y - - name: Configure Lime for Android + - name: Install "lime" command alias (Windows) + if: ${{ startsWith(matrix.os, 'windows-') }} + run: | + haxelib dev lime $Env:GITHUB_WORKSPACE + haxelib run lime setup -alias -y + + - name: Configure Lime for Android (Linux and macOS) + if: ${{ !startsWith(matrix.os, 'windows-') }} run: | lime config ANDROID_SDK $ANDROID_HOME haxelib run lime config ANDROID_NDK_ROOT $ANDROID_NDK_ROOT @@ -107,54 +88,8 @@ jobs: haxelib run lime config ANDROID_SETUP true haxelib run lime config - - name: Rebuild Lime tools - run: | - lime rebuild tools -nocolor -verbose - - - name: Rebuild Lime binaries - run: | - lime rebuild mac -release -verbose -nocolor - lime rebuild hl -release -verbose -nocolor - lime rebuild ios -release -verbose -nocolor - lime rebuild android -release -verbose -nocolor - - build-windows: - runs-on: windows-latest - - env: - ANDROID_NDK_ROOT: C:\android-ndk-r15c - - strategy: - matrix: - haxe-version: [3.4.7, 4.0.5, 4.1.1] - - steps: - - uses: actions/checkout@v2 - with: - submodules: true - - uses: haxeui/haxeui-core/.github/actions/haxe@master - with: - haxe-version: ${{ matrix.haxe-version }} - - - name: Install dependencies - run: | - haxelib install hxcpp --quiet - haxelib install format --quiet - haxelib install hxp --quiet - - - name: Install Android NDK r15c - run: | - mkdir $Env:ANDROID_NDK_ROOT - Invoke-WebRequest https://dl.google.com/android/repository/android-ndk-r15c-windows-x86_64.zip -OutFile android-ndk.zip - Expand-Archive android-ndk.zip -DestinationPath $Env:ANDROID_NDK_ROOT/.. - rm android-ndk.zip - - - name: Install "lime" command alias - run: | - haxelib dev lime $Env:GITHUB_WORKSPACE - haxelib run lime setup -alias -y - - - name: Configure Lime for Android + - name: Configure Lime for Android (Windows) + if: ${{ startsWith(matrix.os, 'windows-') }} run: | lime config ANDROID_SDK $Env:ANDROID_HOME haxelib run lime config ANDROID_NDK_ROOT $Env:ANDROID_NDK_ROOT @@ -162,13 +97,108 @@ jobs: haxelib run lime config ANDROID_SETUP true haxelib run lime config - - name: Rebuild Lime tools + - name: Rebuild Lime Tools run: | lime rebuild tools -nocolor -verbose - - name: Rebuild Lime binaries + - name: Rebuild Lime (HashLink) + run: | + lime rebuild hl -release -verbose -nocolor + + - name: Rebuild Lime (Android) + run: | + lime rebuild android -release -verbose -nocolor + + - name: Rebuild Lime (iOS) + if: ${{ startsWith(matrix.os, 'macos-') }} + run: | + lime rebuild ios -release -verbose -nocolor + lime rebuild ios -simulator -release -verbose -nocolor + + - name: Rebuild Lime (Linux) + if: ${{ startsWith(matrix.os, 'ubuntu-') }} + run: | + lime rebuild linux -64 -release -verbose -nocolor + lime rebuild linux -32 -release -verbose -nocolor + + - name: Rebuild Lime (macOS) + if: ${{ startsWith(matrix.os, 'macos-') }} + run: | + lime rebuild mac -release -verbose -nocolor + + - name: Rebuild Lime (Windows) + if: ${{ startsWith(matrix.os, 'windows-') }} run: | lime rebuild windows -32 -release -verbose -nocolor lime rebuild windows -64 -release -verbose -nocolor - lime rebuild hl -32 -release -verbose -nocolor - lime rebuild android -release -verbose -nocolor + + - name: Create Lime Samples + run: | + lime create HelloWorld -verbose -nocolor + lime create SimpleImage -verbose -nocolor + lime create SimpleAudio -verbose -nocolor + + - name: Build Lime Samples (html5) + run: | + lime build HelloWorld html5 -release -verbose -nocolor + lime build HelloWorld html5 -Dcanvas -release -verbose -nocolor + lime build HelloWorld html5 -Ddom -release -verbose -nocolor + lime build SimpleImage html5 -release -verbose -nocolor + lime build SimpleImage html5 -Dcanvas -release -verbose -nocolor + lime build SimpleImage html5 -Ddom -release -verbose -nocolor + lime build SimpleAudio html5 -release -verbose -nocolor + lime build SimpleAudio html5 -Dcanvas -release -verbose -nocolor + lime build SimpleAudio html5 -Ddom -release -verbose -nocolor + + - name: Build Lime Samples (flash) + run: | + lime build HelloWorld flash -release -verbose -nocolor + lime build SimpleImage flash -release -verbose -nocolor + lime build SimpleAudio flash -release -verbose -nocolor + + - name: Build Lime Samples (neko) + run: | + lime build HelloWorld neko -release -verbose -nocolor + lime build SimpleImage neko -release -verbose -nocolor + lime build SimpleAudio neko -release -verbose -nocolor + + - name: Build Lime Samples (hl) + if: ${{ !startsWith(matrix.haxe-version, '3.') }} + run: | + lime build HelloWorld hl -release -verbose -nocolor + lime build SimpleImage hl -release -verbose -nocolor + lime build SimpleAudio hl -release -verbose -nocolor + + - name: Build Lime Samples (android) + run: | + lime build HelloWorld android -release -verbose -nocolor + lime build SimpleImage android -release -verbose -nocolor + lime build SimpleAudio android -release -verbose -nocolor + + - name: Build Lime Samples (linux) + if: ${{ startsWith(matrix.os, 'ubuntu-') }} + run: | + lime build HelloWorld linux -release -verbose -nocolor + lime build SimpleImage linux -release -verbose -nocolor + lime build SimpleAudio linux -release -verbose -nocolor + + - name: Build Lime Samples (mac) + if: ${{ startsWith(matrix.os, 'macos-') }} + run: | + lime build HelloWorld mac -release -verbose -nocolor + lime build SimpleImage mac -release -verbose -nocolor + lime build SimpleAudio mac -release -verbose -nocolor + + #- name: Build Lime Samples (ios) + # if: ${{ startsWith(matrix.os, 'macos-') }} + # run: | + # lime build HelloWorld ios -simulator -release -verbose -nocolor + # lime build SimpleImage ios -simulator -release -verbose -nocolor + # lime build SimpleAudio ios -simulator -release -verbose -nocolor + + - name: Build Lime Samples (windows) + if: ${{ startsWith(matrix.os, 'windows-') }} + run: | + lime build HelloWorld windows -release -verbose -nocolor + lime build SimpleImage windows -release -verbose -nocolor + lime build SimpleAudio windows -release -verbose -nocolor \ No newline at end of file