name: Hyperion PR Build on: pull_request: branches: - master # Cancel running actions when a new action on the same PR is started concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: ###################### ###### Linux ######### ###################### Linux: name: 🐧 ${{ matrix.os.description }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: os: [ { description: Debian Buster (x86_64), platform: x11, architecture: linux/amd64 }, { description: Debian Buster (Raspberry Pi v1 & ZERO), platform: rpi, architecture: linux/arm/v7 }, { description: Debian Buster (Raspberry Pi 2 & 3), platform: rpi, architecture: linux/arm/v7 }, { description: Debian Buster (Generic AARCH64), platform: amlogic, architecture: linux/arm64 } ] include: - distribution: debian - codename: buster steps: - name: ⬇ Checkout uses: actions/checkout@v4 with: submodules: recursive - name: 🔧 Prepare shell: bash run: | echo '::group::Append PR number to version' tr -d '\n' < .version > temp && mv temp .version echo -n "+PR${{ github.event.pull_request.number }}" >> .version echo '::endgroup::' - name: 🛠️ Setup QEMU uses: docker/setup-qemu-action@v3 - name: 👷 Build env: DOCKER_IMAGE: ${{ matrix.distribution }} DOCKER_TAG: ${{ matrix.codename }} DOCKER_NAME: ${{ matrix.os.description }} PLATFORM: ${{ matrix.os.platform }} ARCHITECTURE: ${{ matrix.os.architecture }} shell: bash run: | echo '::group::Build packages' ./.ci/ci_build.sh echo '::endgroup::' echo '::group::Collecting deployable artifacts' mkdir -p ${{ matrix.dockerImage }} mv deploy/*.tar.gz ${{ matrix.dockerImage }} echo '::endgroup::' - name: 📦 Upload uses: actions/upload-artifact@v3 with: name: ${{ matrix.dockerImage }} path: ${{ matrix.dockerImage }} ###################### ###### macOS ######### ###################### macOS: name: 🍏 macOS runs-on: macos-latest steps: - name: ⬇ Checkout uses: actions/checkout@v4 with: submodules: recursive - name: 🔧 Prepare shell: bash run: | echo '::group::Append PR number to version' tr -d '\n' < .version > temp && mv temp .version echo -n "+PR${{ github.event.pull_request.number }}" >> .version echo '::endgroup::' echo '::group::Install dependencies' ./.ci/ci_install.sh echo '::endgroup::' - name: 👷 Build env: PLATFORM: osx shell: bash run: | echo '::group::Build packages' ./.ci/ci_build.sh echo '::endgroup::' echo '::group::Collecting deployable artifacts' mkdir -p macOS mv build/*.dmg macOS echo '::endgroup::' - name: 📦 Upload uses: actions/upload-artifact@v3 with: name: macOS path: macOS ###################### ###### Windows ####### ###################### windows: name: 🪟 Windows runs-on: windows-2022 env: VCINSTALLDIR: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC' QT_VERSION: 5.15.2 steps: - name: ⬇ Checkout uses: actions/checkout@v4 with: submodules: recursive - name: 🔧 Prepare shell: bash run: | echo '::group::Append PR number to version' tr -d '\n' < .version > temp && mv temp .version echo -n "+PR${{ github.event.pull_request.number }}" >> .version echo '::endgroup::' - name: 💾 Cache/Restore uses: actions/cache@v3 with: path: C:\Users\runneradmin\AppData\Local\Temp\chocolatey key: ${{ runner.os }}-chocolatey - name: 📥 Install OpenSSL, DirectX SDK, libjpeg-turbo shell: powershell run: | choco install --no-progress openssl --version=1.1.1.2100 -y choco install --no-progress directx-sdk -y Invoke-WebRequest https://netcologne.dl.sourceforge.net/project/libjpeg-turbo/2.0.6/libjpeg-turbo-2.0.6-vc64.exe -OutFile libjpeg-turbo.exe -UserAgent NativeHost .\libjpeg-turbo /S - name: 📥 Install Qt uses: jurplel/install-qt-action@v3 with: version: ${{env.QT_VERSION}} target: 'desktop' arch: 'win64_msvc2019_64' cache: 'true' cache-key-prefix: 'cache-qt-windows' - name: 🛠️ Setup MSVC shell: cmd run: call "${{env.VCINSTALLDIR}}\Auxiliary\Build\vcvars64.bat" - name: 👷 Build env: PLATFORM: windows shell: bash run: | echo '::group::Build packages' ./.ci/ci_build.sh echo '::endgroup::' echo '::group::Collecting deployable artifacts' mkdir -p windows mv build/*.exe windows echo '::endgroup::' - name: 📦 Upload uses: actions/upload-artifact@v3 with: name: windows path: windows