on: push: branches: [ builds ] pull_request: branches: [ builds ] jobs: release: env: MACOSX_DEPLOYMENT_TARGET: 10.15 PROD_MACOS_CERTIFICATE: '${{ secrets.PROD_MACOS_CERTIFICATE }}' PROD_MACOS_CERTIFICATE_PWD: '${{ secrets.PROD_MACOS_CERTIFICATE_PWD }}' PROD_MACOS_CERTIFICATE_NAME: '${{ secrets.PROD_MACOS_CERTIFICATE_NAME }}' PROD_MACOS_CI_KEYCHAIN_PWD: '${{ secrets.PROD_MACOS_CI_KEYCHAIN_PWD }}' PROD_MACOS_NOTARIZATION_APPLE_ID: '${{ secrets.PROD_MACOS_NOTARIZATION_APPLE_ID }}' PROD_MACOS_NOTARIZATION_TEAM_ID: '${{ secrets.PROD_MACOS_NOTARIZATION_TEAM_ID }}' PROD_MACOS_NOTARIZATION_PWD: '${{ secrets.PROD_MACOS_NOTARIZATION_PWD }}' VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite" strategy: fail-fast: false matrix: os: - macos - ubuntu - windows os-versions: - macos: 12 ubuntu: 22.04 windows: 2019 scons-script: - macos: './.github/workflows/scripts/mac/scons-build.sh' windows: './.github/workflows/scripts/win/scons-build.bat' ubuntu: scons path-separator: - macos: ':' ubuntu: ':' windows: ';' boost-version: - 1.85.0 sfml-version: - 2.6.1 configuration: - Release runs-on: '${{ matrix.os }}-${{ matrix.os-versions[matrix.os] }}' steps: - name: Export GitHub Actions cache environment variables uses: actions/github-script@v7 with: script: "core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');" - name: checkout uses: actions/checkout@v4 with: submodules: true - name: CMake zlib for linux run: cmake -S . -B build -D CMAKE_EXE_LINKER_FLAGS=-static -D CMAKE_SHARED_LINKER_FLAGS=-static working-directory: deps/zlib if: ${{ matrix.os == 'ubuntu' || matrix.os == 'windows' }} #- name: CMake zlib for windows # run: cmake -S . -B build -D CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded # working-directory: deps/zlib # if: ${{ matrix.os == 'windows' }} - name: Build zlib run: ls && make && make install && ls working-directory: deps/zlib/build if: ${{ matrix.os == 'windows' || matrix.os == 'ubuntu' }} - name: Cache Boost uses: actions/cache@v4 with: path: '${{ runner.workspace }}/boost_*.tar.gz' key: 'boost-${{ matrix.boost-version }}' - name: Build Boost id: boost uses: egor-tensin/build-boost@v1 with: version: ${{ matrix.boost-version }} libraries: filesystem system platform: x64 configuration: ${{ matrix.configuration }} static: ${{ matrix.os == 'windows' }} - name: debug boost libs run: dir D:\a\cboe\boost\stage\x64\Release\lib if: ${{ matrix.os == 'windows' }} - name: Build SFML id: sfml uses: oprypin/install-sfml@v1 with: sfml: ${{ matrix.sfml-version }} config: ${{ matrix.configuration }} - name: Windows build dependencies run: 'vcpkg install libxml2 && pip install scons' if: ${{ matrix.os == 'windows' }} - name: Mac build dependencies run: brew install scons if: ${{ matrix.os == 'macos' }} - name: Linux build dependencies run: sudo apt-get update && sudo apt-get install scons libxml2-utils zlib1g zenity if: ${{ matrix.os == 'ubuntu' }} - name: Install TGUI run: 'sudo ./.github/workflows/scripts/linux/install-tgui.sh' if: ${{ matrix.os == 'ubuntu' }} - name: Build run: '${{ matrix.scons-script[matrix.os] }} INCLUDEPATH="${{ steps.boost.outputs.root }}${{ matrix.path-separator[matrix.os] }}${{steps.sfml.outputs.path}}/include" LIBPATH="${{ steps.boost.outputs.librarydir }}${{ matrix.path-separator[matrix.os] }}${{steps.sfml.outputs.path}}/lib" FRAMEWORKPATH="${{steps.sfml.outputs.path}}/lib"' - name: Codesign and notarize run: './.github/workflows/scripts/mac/sign-apps.sh' if: ${{ matrix.os == 'macos' }} - name: 'Tar files' run: 'tar -cvf cboe-${{ matrix.os }}.tar "Blades of Exile"' working-directory: '${{ github.workspace }}/build' - name: 'Upload Artifact' uses: actions/upload-artifact@v4 with: name: cboe-${{ matrix.os }} path: '${{ github.workspace }}/build/cboe-${{ matrix.os }}.tar'